首頁 資料庫 mysql教程 Mysql主从复制技术(亲测)_MySQL

Mysql主从复制技术(亲测)_MySQL

Jun 01, 2016 pm 01:37 PM
master 密碼 科技 使用者名稱

bitsCN.com

Mysql主从复制技术(亲测)

 

开始配置:  

    第一步:创建复制帐号 

        每个slave使用标准的MySQL用户名和密码连接master。进行复制操作的用户会授予
REPLICATIONSLAVE权限。 

     用户名的密码都会存储在文本文件master.info中。假如,你想创建repl用户,如下 

    mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO repl@'192.
168.1.%' IDENTIFIED BY '123456'; 

    第二步:配置My.cnf 

    配置Master的My.cnf,该文件默认位置为/etc/my.cnf 

 

        接下来对master进行配置,包括打开二进制日志,指定唯一的servr ID。例如,在配置文件
加入如下值: 

        [mysqld] 

        server-id=1 

        log-bin=mysql-bin 

 

        重启mysql,service mysql restart , 

        登录mysql -uroot -p 

        运行SHOW MASTER STATUS,输出如下: 

+------------------+----------+--------------+------------------+ 

        | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | 

        +------------------+----------+--------------+------------------+ 

        | mysql-bin.000002 |      106 |              |                  | 

        +------------------+----------+--------------+------------------+ 

        1 row in set (0.00 sec) 

 

    配置Slave的My.cnf,该文件默认位置为/etc/my.cnf 

        Slave的配置与master类似,你同样需要重启slave的MySQL。如下:  

        server-id = 2 

        log-bin = mysql-bin 

        relay_log = mysql-relay-bin  

        log_slave_updates = 1  

        read_only = 1  

        server-id是必须的,而且唯一。slave没有必要开启二进制日志,但是在一些情况下,必须
设置,例如,如果slave为其它slave的master,必须设置bin_log。在这里,我们开启了二进制
日志,而且显示的命名(默认名称为hostname,但是,如果hostname改变则会出现问题)。  

relay_log配置中继日志,log_slave_updates表示slave将复制事件写进自己的二进制日志(后面会
看到它的用处)。 

有些人开启了slave的二进制日志,却没有设置log_slave_updates,然后查看slave的数据是否改
变,这是一种错误的配置。所以,尽量使用read_only,它防止改变数据(除了特殊的线程)。但是,
read_only并是很实用,特别是那些需要在slave上创建表的应用。 

        重启mysql,service mysql restart , 

        登录mysql -uroot -p 

 

    第三步:启动slave 

        接下来就是让slave连接master,并开始重做master二进制日志中的事件。你不应该用配置
文件进行该操作,而应该使用CHANGE MASTER TO语句,该语句可以完全取代对配置文件的修改,
而且它可以为slave指定不同的master,而不需要停止服务器。如下: 

        mysql>CHANGE MASTER TO MASTER_HOST='192.168.60.73',MASTER_USER='repl',MASTER_PASSWORD='123456',MASTER
_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=0; 

        MASTER_LOG_POS的值为0,因为它是日志的开始位置。然后,你可以用SHOW SLAVE STATUS
语句查看slave的设置是否正确: 

        mysql> SHOW SLAVE STATUS/G 

*************************** 1. row *************************** 

             Slave_IO_State: 

                Master_Host: server1 

                Master_User: repl 

                Master_Port: 3306 

              Connect_Retry: 60 

             Master_Log_File: mysql-bin.000001 

             Read_Master_Log_Pos: 4 

             Relay_Log_File: mysql-relay-bin.000001 

              Relay_Log_Pos: 4 

             Relay_Master_Log_File: mysql-bin.000001 

            Slave_IO_Running: No 

            Slave_SQL_Running: No 

                             ...omitted... 

        Seconds_Behind_Master: NULL 

        Slave_IO_State, Slave_IO_Running, 和Slave_SQL_Running表明slave还没有开始复制过程。
日志的位置为4而不是0,这是因为0只是日志文件的开始位置,并不是日志位置。实际上,MySQL知
道的第一个事件的位置是4。 

 

为了开始复制,你可以运行: 

mysql> START SLAVE; 

mysql> SHOW SLAVE STATUS/G 

运行SHOW SLAVE STATUS查看输出结果: 

*************************** 1. row *************************** 

        Slave_IO_State: Waiting for master to send event 

                Master_Host: server1 

                Master_User: repl 

                Master_Port: 3306 

               Connect_Retry: 60 

               Master_Log_File: mysql-bin.000001 

               Read_Master_Log_Pos: 164 

              Relay_Log_File: mysql-relay-bin.000001 

              Relay_Log_Pos: 164 

              Relay_Master_Log_File: mysql-bin.000001 

              Slave_IO_Running: Yes 

              Slave_SQL_Running: Yes 

                             ...omitted... 

      Seconds_Behind_Master: 0 

注意,slave的I/O和SQL线程都已经开始运行,而且Seconds_Behind_Master不再是NULL。日志
的位置增加了,意味着一些事件被获取并执行了。如果你在master上进行修改,你可以在slave上看
到各种日志文件的位置的变化,同样,你也可以看到数据库中数据的变化。 

 

你可查看master和slave上线程的状态。在master上,你可以看到slave的I/O线程创建的连接: 

 

mysql> show processlist /G 

*************************** 1. row *************************** 

     Id: 1 

   User: root 

   Host: localhost:2096 

     db: test 

Command: Query 

   Time: 0 

 State: NULL 

   Info: show processlist 

*************************** 2. row *************************** 

     Id: 2 

   User: repl 

   Host: localhost:2144 

     db: NULL 

Command: Binlog Dump 

   Time: 1838 

 State: Has sent all binlog to slave; waiting for binlog to be updated 

   Info: NULL 

2 rows in set (0.00 sec) 

基本到这里就完成,至于后期的加强操作,我会在另行添加。 

Mysql复制的时候可以做到限制复制(主) 

binlog-do-db=work      #只复制 

binlog_ignore_db=mysql    #不允许复制 

  

Replicate_Do_DB=mysql 

replicate-ignore-db=mysql 

另外还有几条常用的命令 

flush mater;  #清除垃圾 

flush slave;  #清除垃圾 

start slave;  #开始服务 

reset slave;  #重设服务 

stop slave;   #停止服务 

  

上面复制方式是假设在新设Master和slave的情况下,实际环境并不十分实用,例如,你在一
组运行了很久的Master中加入一个新的slave呢? 

这样我们就需要优先进行数据处理。 

1.现将Master的数据库锁定,以免数据复制的时候出现差异。 

FLUSH TABLES WITH READ LOCK; 

2. 在另一个连接用mysqldump创建一个你想进行复制的数据库的转储: 

shell> mysqldump --all-databases --lock-all-tables >dbdump.db 

3. 对表释放锁。  

mysql> UNLOCK TABLES; 

上面方法中,第2部需要将数据库复制到新slave中还原,这样,Master和新Slave的数据源就一致。 

其实第2部的方法有很多,也可以使用Mysql软件进行同步,例如:Navicat for Mysql  

方法不是唯一,只要结果一致即可。 

4.完成旧数据同步后,Master中输入

mysql> show master status; 

##得到: 

+------------------+----------+--------------+---------------------------+ 

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB          | 

+------------------+----------+--------------+---------------------------+ 

| mysql-bin.000024 |    38113 |              | mysql,test | 

 

1 row in set (0.00 sec) 

5.然后在根据上表中内容输入上文启动Slave步骤的内容。 

CHANGE MASTER TO MASTER_HOST='192.168.60.73',MASTER_USER='repl',MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=0; 

6.启动slave 

START SLAVE; 

7.启动完成后进行检查。 

mysql> SHOW SLAVE STATUS/G                                                        ***************************
1. row *************************** 

               Slave_IO_State: Waiting for master to send event 

                  Master_Host: 192.168.1.171 

                  Master_User: repl 

                  Master_Port: 3306 

                Connect_Retry: 60 

              Master_Log_File: mysql-bin.000024 

              Read_Master_Log_Pos: 38255 

               Relay_Log_File: mysql-relay-bin.000002 

                Relay_Log_Pos: 393 

              Relay_Master_Log_File: mysql-bin.000024 

             Slave_IO_Running: Yes 

            Slave_SQL_Running: Yes 

              Replicate_Do_DB: 

          Replicate_Ignore_DB: mysql,wdcpdb,mysql,wdcpdb 

           Replicate_Do_Table: 

       Replicate_Ignore_Table: 

      Replicate_Wild_Do_Table: 

        Replicate_Wild_Ignore_Table: 

                   Last_Errno: 0 

                   Last_Error: 

                 Skip_Counter: 0 

          Exec_Master_Log_Pos: 38255 

              Relay_Log_Space: 548 

              Until_Condition: None 

               Until_Log_File: 

                Until_Log_Pos: 0 

           Master_SSL_Allowed: No 

           Master_SSL_CA_File: 

           Master_SSL_CA_Path: 

             Master_SSL_Cert: 

            Master_SSL_Cipher: 

               Master_SSL_Key: 

        Seconds_Behind_Master: 0 

Master_SSL_Verify_Server_Cert: No 

          Last_IO_Errno: 0 

                Last_IO_Error: 

               Last_SQL_Errno: 0 

               Last_SQL_Error: 

1 row in set (0.00 sec) 

完成 

测试过程要主要的问题: 

 

1.请先配置好Mysql 

2.开通复制前请将Mysql的库和表的框架复制过去。

(在测试一下能不能连表都复制过去!) 

 

bitsCN.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1660
14
CakePHP 教程
1416
52
Laravel 教程
1310
25
PHP教程
1259
29
C# 教程
1233
24
win11提示若要繼續,請輸入管理員使用者名稱和密碼怎麼解決? win11提示若要繼續,請輸入管理員使用者名稱和密碼怎麼解決? Apr 11, 2024 am 09:10 AM

當使用Win11系統時,有時會遇到需要輸入管理員使用者名稱和密碼的提示,本文將探討在遇到這種情況時應該如何處理。方法一:1、點選【Windows標誌】,然後按【Shift+重啟】進入安全模式;或這樣進入安全模式:點選開始選單,選擇設定。選擇「更新與安全」;選擇「恢復」中的「立即重新啟動」;重新啟動進入選項後選擇-疑難排解-進階選項-啟動設定—&mdash

如何使用手機設定路由器WiFi密碼(以手機為工具) 如何使用手機設定路由器WiFi密碼(以手機為工具) Apr 24, 2024 pm 06:04 PM

無線網路已成為人們生活中不可或缺的一部分、在當今數位化的世界中。保護個人無線網路的安全性卻顯得格外重要、然而。設定強密碼是確保你的WiFi網路不會被他人入侵的關鍵。保障你的網路安全,本文將詳細介紹如何使用手機修改路由器WiFi密碼。 1.開啟路由器管理頁面-在手機瀏覽器中開啟路由器管理頁面、透過輸入路由器的預設IP位址。 2.輸入管理員使用者名稱和密碼-以獲得存取權限,在登入頁面中輸入正確的管理員使用者名稱和密碼。 3.導覽至無線設定頁面-尋找並點選進入無線設定頁面,在路由器管理頁面中。 4.找到當前Wi

Stable Diffusion 3論文終於發布,架構細節大揭秘,對復現Sora有幫助? Stable Diffusion 3論文終於發布,架構細節大揭秘,對復現Sora有幫助? Mar 06, 2024 pm 05:34 PM

StableDiffusion3的论文终于来了!这个模型于两周前发布,采用了与Sora相同的DiT(DiffusionTransformer)架构,一经发布就引起了不小的轰动。与之前版本相比,StableDiffusion3生成的图质量有了显著提升,现在支持多主题提示,并且文字书写效果也得到了改善,不再出现乱码情况。StabilityAI指出,StableDiffusion3是一个系列模型,其参数量从800M到8B不等。这一参数范围意味着该模型可以在许多便携设备上直接运行,从而显著降低了使用AI

密碼不正確,小心BitLocker警告 密碼不正確,小心BitLocker警告 Mar 26, 2024 am 09:41 AM

本文將探討如何解決密碼錯誤的問題,特別是在處理BitLocker警告時需要小心。當在BitLocker中多次輸入錯誤密碼以解鎖磁碟機時,就會觸發這個警告。通常,這個警告出現是因為系統設定了限制錯誤登入嘗試的策略(通常是允許3次登入嘗試)。在這種情況下,使用者會收到相應的警告訊息。完整的警告訊息如下:輸入的密碼不正確,請注意-連續輸入錯誤密碼會導致帳戶被鎖定,這是為了保護您的資料安全。如果需要解鎖帳戶,您將需要使用BitLocker恢復金鑰。密碼不正確,小心BitLocker警告當您登入電腦時收到

DualBEV:大幅超越BEVFormer、BEVDet4D,開卷! DualBEV:大幅超越BEVFormer、BEVDet4D,開卷! Mar 21, 2024 pm 05:21 PM

這篇論文探討了在自動駕駛中,從不同視角(如透視圖和鳥瞰圖)準確檢測物體的問題,特別是如何有效地從透視圖(PV)到鳥瞰圖(BEV)空間轉換特徵,這一轉換是透過視覺轉換(VT)模組實施的。現有的方法大致分為兩種策略:2D到3D和3D到2D轉換。 2D到3D的方法透過預測深度機率來提升密集的2D特徵,但深度預測的固有不確定性,尤其是在遠處區域,可能會引入不準確性。而3D到2D的方法通常使用3D查詢來採樣2D特徵,並透過Transformer學習3D和2D特徵之間對應關係的注意力權重,這增加了計算和部署的

自動駕駛與軌跡預測看這篇就夠了! 自動駕駛與軌跡預測看這篇就夠了! Feb 28, 2024 pm 07:20 PM

軌跡預測在自動駕駛中承擔著重要的角色,自動駕駛軌跡預測是指透過分析車輛行駛過程中的各種數據,預測車輛未來的行駛軌跡。作為自動駕駛的核心模組,軌跡預測的品質對於下游的規劃控制至關重要。軌跡預測任務技術堆疊豐富,需熟悉自動駕駛動/靜態感知、高精地圖、車道線、神經網路架構(CNN&GNN&Transformer)技能等,入門難度很高!許多粉絲期望能夠盡快上手軌跡預測,少踩坑,今天就為大家盤點下軌跡預測常見的一些問題和入門學習方法!入門相關知識1.預習的論文有沒有切入順序? A:先看survey,p

手機修改wifi密碼教學(簡單操作) 手機修改wifi密碼教學(簡單操作) Apr 26, 2024 pm 06:25 PM

無線網路已成為我們生活中不可或缺的一部分、隨著網路的快速發展。為了保護個人資訊和網路安全,定期更改wifi密碼是非常重要的、然而。幫助大家更能保護家庭網路安全,本文將為大家介紹如何利用手機修改wifi密碼的詳細教學。 1.了解wifi密碼的重要性wifi密碼是保護個人資訊和網路安全的道防線,在網路時代、了解其重要性可以更好地理解為什麼需要定期修改密碼。 2.確認手機連接到wifi首先確保手機已連接到要修改密碼的wifi網路上,在修改wifi密碼之前。 3.開啟手機設定選單進入手機的設定選單、在手

如何為excel設定密碼 如何為excel設定密碼 Mar 21, 2024 am 09:00 AM

前幾天表弟找我訴苦說用excel辛苦做了一大堆數據,結果後來被同事給修改了,當時不知道情況,發給老闆後被臭罵了一頓。這確實挺讓人無奈的,有的人就是看你不順眼,就是想故意整你,離開學校步入社會以後,你會發現背後捅刀子的人越來越多。除了安慰表弟幾句以外,我還給了表弟一個意見,如果怕以後再遇到這樣的事情,那就把excel表格設定密碼,除了你可以打開以外,別人誰都打不開。廣大網友們,如果你也怕自己的excel表格被別人偷偷修改,也該設定密碼的。 excel密碼表格如何設定密碼?跟我一起來了解一下吧! 1.

See all articles