MariaDB GTID 複製同步

丶小炒肉發表於2016-06-01

MariaDB GTID 複製同步

 

GTID:Global Transaction ID,全域性事務ID,在整個主從複製架構中任何兩個事物ID是不能相同的。全域性事務ID是Mster伺服器生成一個128位的UUID+事物的ID號組成的,UUID標示主伺服器的身份,此UUID在整個主從複製架構中是絕對唯一,而且即使更換主伺服器後UUID也不會改變而是繼承當前主伺服器的UUID身份。

 

一、環境確認

 

master  IP : 10.6.0.96

 

slave   IP :  10.6.0.138

 

配置本地hosts

 

vim /etc/hosts

 

10.6.0.96 master.mysql

10.6.0.138 slave.mysql

 

二、配置檔案確認,確保配置檔案中有以下的配置:

 

binlog_format                         二進位制日誌的格式,有row、statement和mixed幾種型別;

log-slave-updates、

report-port

report-host:                         用於啟動GTID及滿足附屬的其它需求;

master-info-repository

relay-log-info-repository             啟用此兩項,可用於實現在崩潰時保證二進位制及從伺服器安全的功能;

sync-master-info                      啟用之可確保無資訊丟失;

slave-parallel-workers                設定從伺服器的SQL執行緒數;0表示關閉多執行緒複製功能;

binlog-checksum

master-verify-checksum

slave-sql-verify-checksum             啟用複製有關的所有校驗功能;

binlog-rows-query-log-events          啟用之可用於在二進位制日誌記錄事件相關的資訊,可降低故障排除的複雜度;

log-bin                               啟用二進位制日誌,這是保證複製功能的基本前提;

server-id                             同一個複製拓撲中的所有伺服器的id號必須惟一.

 

 

 

 

三、配置master配置檔案

 

 

//修改如下內容

log-bin=/opt/local/mysql/binlog/mysql-bin          #二進位制日誌檔案目錄

server-id       = 1                                #從伺服器不能跟此id重複

binlog_format=ROW                                  #二進位制日誌檔案格式

innodb_file_per_table=1                            #innodb表空間獨立

log-slave-updates=true                             #從master取得並執行的二進位制日誌寫入自己的二進位制日誌檔案中

                                                   

                                                   

//新增以下內容

binlog-do-db=mysql                             #指定只同步mysql庫                          

master-info-repository=TABLE                       #用於實現在崩潰時保證二進位制及從伺服器安全的功能;

relay-log-info-repository=TABLE                    #用於實現在崩潰時保證二進位制及從伺服器安全的功能;

sync-master-info=1                                 #啟用之可確保無資訊丟失

slave-parallel-threads=2                           #設定從伺服器的SQL執行緒數;0表示關閉多執行緒複製功能

binlog-checksum=CRC32                              #啟用複製有關的所有校驗功能

master-verify-checksum=1                           #啟用複製有關的所有校驗功能

slave-sql-verify-checksum=1                        #啟用複製有關的所有校驗功能

binlog-rows-query-log_events=1                     #啟用之可用於在二進位制日誌記錄事件相關的資訊,可降低故障排除的複雜度;

report-host=master.mysql                           #master 主機名,必須能ping通

report-port=3306                                   #埠

 

 

 

// 重啟 mysql    

service mysqld restart

 

 

//master建立用於主從複製的賬號

 

mysql -uroot -p

 

grant replication slave,replication client on *.* to "rep"@'10.6.0.138' identified by 'rep12345';

 

flush privileges;

 

 

 

四、配置slave配置檔案

 

//修改如下內容

log-bin=/opt/local/mysql/binlog/mysql-bin          #二進位制日誌檔案目錄

server-id       = 10                               #從伺服器不能跟此id重複

binlog_format=ROW                                  #二進位制日誌檔案格式

innodb_file_per_table=1                            #innodb表空間獨立

log-slave-updates=true                             #從master取得並執行的二進位制日誌寫入自己的二進位制日誌檔案中

relay-log=/opt/local/mysql/relaylog/s74-relay-bin  

 

//新增以下內容

replicate-do-db=mysql                           #指定只同步mysql庫

master-info-repository=TABLE                       #用於實現在崩潰時保證二進位制及從伺服器安全的功能;

relay-log-info-repository=TABLE                    #用於實現在崩潰時保證二進位制及從伺服器安全的功能;

sync-master-info=1                                 #啟用之可確保無資訊丟失

slave-parallel-threads=2                           #設定從伺服器的SQL執行緒數;0表示關閉多執行緒複製功能

binlog-checksum=CRC32                              #啟用複製有關的所有校驗功能

master-verify-checksum=1                           #啟用複製有關的所有校驗功能

slave-sql-verify-checksum=1                        #啟用複製有關的所有校驗功能

binlog-rows-query-log_events=1                     #啟用之可用於在二進位制日誌記錄事件相關的資訊,可降低故障排除的複雜度;

report-host=slave.mysql                            #slave 主機名,必須能ping通

report-port=3306                                   #埠

 

 

 

# 在slave伺服器使用主mysql上建立的賬號密碼登陸

 

mysql -uroot -p 

 

change master to master_host='10.6.0.96',master_user='rep',master_password='rep12345',master_use_gtid=current_pos;

 

start slave;

 

 

# 檢視是否啟用 gtid:

 

show processlist;

 

 

# 檢視同步狀態:

 

show slave status\G;

 

 

以下為傳統主從複製的解決方案

-----------------------------------------------------------------------------------------

 

 

# 在master 檢視 Position

 

show master status;      

 

記錄 Position

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

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| mysql-bin.000008 |     1062 |              |                  |

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

 

 

 

# 在 slave 上面 執行

 

CHANGE MASTER TO MASTER_HOST='10.6.0.96',MASTER_USER='rep',MASTER_PASSWORD='rep12345',MASTER_LOG_FILE='mysql-bin.000008',MASTER_LOG_POS=1062;

 

start slave;

 

show slave status \G;

相關文章