明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

mysql_2臺服務器完成雙機互備設置并測試數(shù)據(jù)同步

[摘要]對于實現(xiàn)兩臺機子的互備配置,本文作出了詳細的介紹,之后的測試數(shù)據(jù)同步,在10.168.1.44服務器數(shù)據(jù)庫里修改一條數(shù)據(jù), 可以看到數(shù)據(jù)已經(jīng)同步過來了。反過來,修改10.168.0.126的數(shù)據(jù),也...
對于實現(xiàn)兩臺機子的互備配置,本文作出了詳細的介紹,之后的測試數(shù)據(jù)同步,在10.168.1.44服務器數(shù)據(jù)庫里修改一條數(shù)據(jù), 可以看到數(shù)據(jù)已經(jīng)同步過來了。反過來,修改10.168.0.126的數(shù)據(jù),也可以看到10.168.1.44數(shù)據(jù)庫中對應表數(shù)據(jù)改變。到此,10.168.0.126與10.168.1.44互為主從數(shù)據(jù)庫關系。apache php mysql

前期準備

兩臺服務器:10.168.1.44

10.168.0.126

運行環(huán)境:Linux系統(tǒng)(Centos6.5)

Mysql版本:5.7.22

修改配置

在兩臺服務器上分別修改/etc/my.conf配置文件的信息如下:

在10.168.1.44服務器/etc/my.conf配置文件中添加:

server_id=10

log-bin=master_01 //開啟二進制日志,作用是另一個服務器可以通過該日志來確定執(zhí)行操作

binlog-do-db=test_db //同步的表

binlog-do-db=my_test //同步的表

在10.168.0.126服務器/etc/my.conf配置文件中添加:

server_id=20

log-bin=master_02 //開啟二進制日志,作用是另一個服務器可以通過該日志來確定執(zhí)行操作

binlog-do-db=test_db //同步的表

binlog-do-db=my_test //同步的表

添加之后執(zhí)行命令 service mysqld restart 重啟數(shù)據(jù)庫使修改生效

添加mysql賬戶

添加mysql賬戶,通過給其授權(quán)用戶執(zhí)行數(shù)據(jù)同步

10.168.1.44執(zhí)行命令:

GRANT FILE ON *.* TO 'copyuser'@'10.168.0.126' IDENTIFIED BY 'Admin@123';

GRANT REPLICATION SLAVE ON *.* TO 'copyuser'@'10.168.0.126' IDENTIFIED BY 'Admin@123';

flush privileges;

10.168.0.126執(zhí)行命令:

GRANT FILE ON *.* TO 'copyuser'@'10.168.1.44' IDENTIFIED BY 'Admin@123';

GRANT REPLICATION SLAVE ON *.* TO 'copyuser'@'10.168.1.44' IDENTIFIED BY 'Admin@123';

flush privileges;

配置從數(shù)據(jù)庫

10.168.1.44配置:

查看當前主數(shù)據(jù)庫狀態(tài):

mysql> show master status;

記錄當前的file與position的值;

進入10.168.0.126訪問數(shù)據(jù)庫查看其主數(shù)據(jù)庫狀態(tài)

在10.168.1.44執(zhí)行

mysql>CHANGE MASTER TO

MASTER_HOST='10.168.0.126',

MASTER_USER='copyuser',

MASTER_PASSWORD='Admin@123',

MASTER_PORT=3306,

MASTER_LOG_FILE='master_02.000002',

MASTER_LOG_POS=1771,

MASTER_CONNECT_RETRY=10;

在10.168.0.126執(zhí)行:

mysql>CHANGE MASTER TO

MASTER_HOST='10.168.1.44',

MASTER_USER='copyuser',

MASTER_PASSWORD='Admin@123',

MASTER_PORT=3306,

MASTER_LOG_FILE='master_01.000008',

MASTER_LOG_POS=154,

MASTER_CONNECT_RETRY=10;

注:若slave開啟狀態(tài)無法執(zhí)行以上命令,需要首先執(zhí)行 stop slave;關閉slave,執(zhí)行完上述命令后執(zhí)行start slave;命令開啟slave。

上述命令執(zhí)行完后,查看從服務狀態(tài):

執(zhí)行命令:

mysql> show slave status\G;

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

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 10.168.1.44

                  Master_User: copyuser

                  Master_Port: 3306

                Connect_Retry: 10

              Master_Log_File: master_01.000008

          Read_Master_Log_Pos: 154

               Relay_Log_File: cdh-2-relay-bin.000004

                Relay_Log_Pos: 367

        Relay_Master_Log_File: master_01.000008

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

              Replicate_Do_DB:

          Replicate_Ignore_DB:

           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: 154

              Relay_Log_Space: 740

              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:

  Replicate_Ignore_Server_Ids:

             Master_Server_Id: 10

                  Master_UUID: 778beb1e-8f0f-11e8-a815-00505695cd8c

             Master_Info_File: /var/lib/mysql/master.info

                    SQL_Delay: 0

          SQL_Remaining_Delay: NULL

      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates

           Master_Retry_Count: 86400

                  Master_Bind:

      Last_IO_Error_Timestamp:

     Last_SQL_Error_Timestamp:

               Master_SSL_Crl:

           Master_SSL_Crlpath:

           Retrieved_Gtid_Set:

            Executed_Gtid_Set:

                Auto_Position: 0

         Replicate_Rewrite_DB:

                 Channel_Name:

           Master_TLS_Version:

1 row in set (0.00 sec)

注意Slave_IO_Running: Yes與Slave_SQL_Running: Yes,只有當兩個都為yes是才是配置成功。

測試數(shù)據(jù)同步

在10.168.1.44服務器數(shù)據(jù)庫里修改一條數(shù)據(jù):

修改前:

1.png

修改后:

1.jpg

查看10.168.0.126數(shù)據(jù)庫中對應表中數(shù)據(jù):

1.png

可以看到已經(jīng)同步過來了。

反過來,修改10.168.0.126的數(shù)據(jù),也可以看到10.168.1.44數(shù)據(jù)庫中對應表數(shù)據(jù)改變。

到此,10.168.0.126與10.168.1.44互為主從數(shù)據(jù)庫關系

可能存在問題

  1. 查看slave狀態(tài)時,會發(fā)現(xiàn)Slave_IO_Running: Connecting

出現(xiàn)該問題主要有三個原因:

  1. 網(wǎng)絡不通(互相ping下試試看能否ping通)

  2. 密碼不對:查看在配置slave時執(zhí)行的命令中的密碼是否正確

  3. Position不正確:配置slave時對應position未填為正確的position(查看對應從服務器數(shù)據(jù)庫的master狀態(tài):show master status即可找到 )

我出現(xiàn)這個問題的原因是只在一個服務器上創(chuàng)建了用于同步數(shù)據(jù)的用戶‘copyuser’,另一個服務器數(shù)據(jù)庫中并未創(chuàng)建該用戶。創(chuàng)建之后OK了。

4.查看slave狀態(tài)時,會發(fā)現(xiàn)Slave_SQL_Running: No

出現(xiàn)這個現(xiàn)象的原因主要就是兩邊數(shù)據(jù)庫數(shù)據(jù)存在不同之處,可以通過查看mysql日志定位具體哪塊數(shù)據(jù)出現(xiàn)異常

Mysql日志一般在/var/log/mysqld.log

需要注意的是,如果你只配置了從數(shù)據(jù)庫同步主數(shù)據(jù)庫數(shù)據(jù),而未設置為互相同步 ,修改從數(shù)據(jù)庫數(shù)據(jù)可能會導致同步失效。

相關文章:

Mysql 數(shù)據(jù)庫雙機熱備的配置_MySQL

Mysql的實時同步-雙機互備(雙master)

相關視頻:

MySQL數(shù)據(jù)管理之備份恢復案例解析視頻教程

以上就是mysql_兩臺服務器實現(xiàn)雙機互備配置并測試數(shù)據(jù)同步的詳細內(nèi)容,更多請關注php中文網(wǎng)其它相關文章!


學習教程快速掌握從入門到精通的SQL知識。