mysql5.6.xGTID主從複製配置

ghost丶桃子發表於2016-05-24
原創作品,允許轉載,轉載時請務必以超連結形式標明文章 原始出處 、作者資訊和本宣告。否則將追究法律責任。http://koumm.blog.51cto.com/703525/1767786

本文環境:   

主庫:CentOS6.7 x64 192.168.0.65 mysql-5.6.29    

備庫:CentOS6.7 x64 192.168.0.66 mysql-5.6.29

一、配置Mysql5.6 GTID主從(本節配置適合主從都是空庫的情況)

1. mysql主伺服器配置

說明: 基於GTID的主從複製需要在配置檔案中新增如下內容。

# vi /etc/my.cnf

[mysqld]   

binlog-format                = ROW    

log-bin                      = master-bin    

log-bin-index                = master-bin.index    

log-slave-updates            = true    

gtid-mode                    = on    

enforce-gtid-consistency     = true    

master-info-repository       = TABLE    

relay-log-info-repository    = TABLE    

sync-master-info             = 1    

slave-parallel-workers       = 2    

binlog-checksum              = CRC32    

master-verify-checksum       = 1    

slave-sql-verify-checksum    = 1    

binlog-rows-query-log_events = 1    

report-host                  = 192.168.1.120    

server-id                    = 1



重啟資料庫:    

# service mysqld restart



檢視gtid資訊:    

mysql> show global variables like `%GTID%`;  

+———————————+—————————————-+    

| Variable_name                   | Value                                  |    

+———————————+—————————————-+    

| binlog_gtid_simple_recovery     | OFF                                    |    

| enforce_gtid_consistency        | ON                                     |    

| gtid_executed                   |                                        |    

| gtid_mode                       | ON                                     |    

| gtid_owned                      |                                        |    

| gtid_purged                     |                                        |    

| simplified_binlog_gtid_recovery | OFF                                    |    

+———————————+—————————————-+


2. 主伺服器配置同步複製帳號

grant replication slave on *.* to `repl`@`%` identified by `123456`;   

flush privileges;


3. mysql從伺服器配置

說明: 預設只要server-id不相同即可。

# vi /etc/my.cnf

[mysqld]   

binlog-format                = ROW    

log-bin                      = mysql-bin    

relay-log                    = slave-relay-bin    

relay-log-index              = slave-relay-bin.index    

log-slave-updates            = true    

gtid-mode                    = on    

enforce-gtid-consistency     = true    

master-info-repository       = TABLE    

relay-log-info-repository    = TABLE    

sync-master-info             = 1    

slave-parallel-workers       = 2    

binlog-checksum              = CRC32    

master-verify-checksum       = 1    

slave-sql-verify-checksum    = 1    

binlog-rows-query-log_events = 1    

report-host                  = 192.168.1.121    

server-id                    = 11



重啟資料庫:    

# service mysqld restart



檢視gtid狀態:    

mysql> show global variables like `%GTID%`;  

+———————————+—————————————-+    

| Variable_name                   | Value                                  |    

+———————————+—————————————-+    

| binlog_gtid_simple_recovery     | OFF                                    |    

| enforce_gtid_consistency        | ON                                     |    

| gtid_executed                   |                                        |    

| gtid_mode                       | ON                                     |    

| gtid_owned                      |                                        |    

| gtid_purged                     |                                        |    

| simplified_binlog_gtid_recovery | OFF                                    |    

+———————————+—————————————-+    

7 rows in set (0.00 sec)

 

4. 連線主Mysql,配置主從

(1) 連線主資料庫

mysql>   

CHANGE MASTER TO    

MASTER_HOST=`192.168.0.65`,    

MASTER_PORT=3306,    

MASTER_USER=`repl`,    

MASTER_PASSWORD=`123456`,    
MASTER_AUTO_POSITION=1;


(2) 啟動從同步程式

mysql> start slave;   

mysql> show slave statusG;    

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

               Slave_IO_State: Waiting for master to send event    

                  Master_Host: 192.168.0.65    

                  Master_User: repl    

                  Master_Port: 3306    

                Connect_Retry: 60    

              Master_Log_File: master-bin.000007    

          Read_Master_Log_Pos: 290    

               Relay_Log_File: slave-relay-bin.000002    

                Relay_Log_Pos: 502    

        Relay_Master_Log_File: master-bin.000007    
             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: mysql.%    

                   Last_Errno: 0    

                   Last_Error:     

                 Skip_Counter: 0    

          Exec_Master_Log_Pos: 290    

              Relay_Log_Space: 706    

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

                  Master_UUID: c8bb22a1-024e-11e6-a1e8-000c29225fa0    

             Master_Info_File: mysql.slave_master_info    

                    SQL_Delay: 0    

          SQL_Remaining_Delay: NULL    

      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it    

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

1 row in set (0.00 sec)

ERROR:    

No query specified

mysql>

#檢視如下兩個引數為YES,說明從庫執行正常。   

             Slave_IO_Running: Yes    

            Slave_SQL_Running: Yes


5. 驗證同步情況

(1) 主資料庫建立一個資料庫

mysql> create database abc;   

Query OK, 1 row affected (0.02 sec)

mysql> show master statusG;   

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

             File: master-bin.000007    

         Position: 290    

     Binlog_Do_DB:     

Binlog_Ignore_DB:     

Executed_Gtid_Set: c8bb22a1-024e-11e6-a1e8-000c29225fa0:1    

1 row in set (0.00 sec)

ERROR:    

No query specified

mysql>


(2) 從資料庫檢視同步情況

mysql> show databases;   

+——————–+    

| Database           |    

+——————–+    

| information_schema |    

| abc                |    

| mydb               |    

| mysql              |    

| performance_schema |    

+——————–+    

5 rows in set (0.01 sec)

mysql> show slave statusG;   

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

               Slave_IO_State: Waiting for master to send event    

                  Master_Host: 192.168.0.65    

                  Master_User: repl    

                  Master_Port: 3306    

                Connect_Retry: 60    

              Master_Log_File: master-bin.000007    

          Read_Master_Log_Pos: 290    

               Relay_Log_File: slave-relay-bin.000002    

                Relay_Log_Pos: 502    

        Relay_Master_Log_File: master-bin.000007    

             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: mysql.%    

                   Last_Errno: 0    

                   Last_Error:     

                 Skip_Counter: 0    

          Exec_Master_Log_Pos: 290    

              Relay_Log_Space: 706    

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

                  Master_UUID: c8bb22a1-024e-11e6-a1e8-000c29225fa0    

             Master_Info_File: mysql.slave_master_info    

                    SQL_Delay: 0    

          SQL_Remaining_Delay: NULL    

      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it    

           Master_Retry_Count: 86400    

                  Master_Bind:     

      Last_IO_Error_Timestamp:     

     Last_SQL_Error_Timestamp:     

               Master_SSL_Crl:     

           Master_SSL_Crlpath:     

           Retrieved_Gtid_Set: c8bb22a1-024e-11e6-a1e8-000c29225fa0:1    

            Executed_Gtid_Set: c8bb22a1-024e-11e6-a1e8-000c29225fa0:1    

                Auto_Position: 1    

1 row in set (0.00 sec)

ERROR:    

No query specified    

mysql>


二、 配置Mysql5.6 GTID主從 (主從非同步模式轉成GTID模式)方式二

mysql-5.6主從同步配置示例 http://koumm.blog.51cto.com/703525/1764093

原環境本身已經是非同步主從同步模式。

1,從主庫新增如上GTID相關配置檔案,重啟資料庫後,主庫鎖表,備份資料庫。

mysql> flush tables with read lock;

2,從庫操重新配置從庫,清除掉原來的主庫配置資訊, 或者採用匯入資料庫。

mysql> stop slave;   

mysql> reset slave;

3,在保證資料同步的情況下從庫重新連線主庫同步。

mysql>   

CHANGE MASTER TO    

MASTER_HOST=`192.168.0.65`,    

MASTER_PORT=3306,    

MASTER_USER=`repl`,    

MASTER_PASSWORD=`123456`,    

MASTER_AUTO_POSITION=1;

4,主庫

mysql> unlock tables;

5,從庫啟動並測試同步情況


三、小結

可以在GTID的基礎上配置半自動同步複製,可以檢視相關文件,實際環境中需要對GTID相當瞭解後再用於生產環境。

本文出自 “koumm的linux技術部落格” 部落格,請務必保留此出處http://koumm.blog.51cto.com/703525/1767786


相關文章