[mysqld] server-id = 1 log-bin=mysql1-bin #salve-net-timeout默認是3600秒,縮短期是爲了防止雙YES的假象 slave-net-timeout=60 auto_increment_offset=2 auto_increment_increment=2 若是要指定同步或不一樣步哪些庫,可以使用以下參數 #binlog-do-db=osyunweidb #須要同步的數據庫名,若是有多個數據庫,可重複此參數,每一個數據庫一行 #binlog-ignore-db=mysql #不一樣步mysql系統數據庫
[mysqld] server-id = 2 log-bin=mysql2-bin #salve-net-timeout默認是3600秒,縮短期是爲了防止雙YES的假象 slave-net-timeout=60 auto_increment_offset=1 auto_increment_increment=2
多主和主從有一點區別:由於在多主中都有對服務器有寫的權限,因此會形成主鍵衝突。從而致使同步失敗。因此須要保證自增加的數據不一樣。使用auto_increment_offset
和auto_increment_increment
來解決。mysql
auto_increment_offset auto_increment_increment
這兩個參數的做用:sql
auto_increment_increment:自增值的自增量數據庫
auto_increment_offset: 自增值的偏移量服務器
通常設置:網絡
auto_increment_offset=1 偏移量從開始,依次增長ide
auto_increment_offset=N 有幾臺主服務器,就設置爲N,這樣就能夠保證他們之間的主鍵不衝突。日誌
在主庫上鎖表 flush tables with read lockcode
在從庫上執行:server
stop slave; #跳過錯誤的步驟,能夠改變後面的數字,實現屢次跳轉 set global sql_slave_skip_counter =1; start slave; show slave status\G; 解鎖表 unlock tables;
2.重作,實現徹底同步。適用於要求數據徹底統一的狀況下:ip
1. 在主庫上鎖表 2.進行主庫數據備份 3.查看master的狀態 4.將備份文件拷貝到從庫 ###################### 5.中止從庫的狀態 6.導入備份的數據庫 7.設置主從同步 8.開啓從同步 9.查看同步的狀態 10.在master上解鎖
配置:
master1 mysql:5.6 master2 mysql: 5.5
在master1作master,master2作從數據庫時報錯
Got fatal error 1236 from master when reading data from binary log: 'Slave can not handle replication events with the checksum that master is configured to log; the first event 'mysql-bin.000001' at 5115510, the last event read from './mysql-bin.000001' at 5115510, the last byte read from './mysql-bin.000001' at 120.'
查詢資料發現當mysql版本爲5.6時:
這個錯誤通常出如今master5.6,slave在低版本的狀況下。這是因爲5.6使用了crc32作binlog的checksum;當一個event被寫入binary log(二進制日誌)的時候,checksum也同時寫入binary log,而後event經過網絡傳輸到從服務器(slave)以後,再在從服務器中對其進行驗證並寫入從服務器的relay log。
因爲每一步都記錄了event和checksum,因此看報錯就知道是沒法checksum。
解決: 在master1配置文件中設置binlog_checksum =none
;重啓,而後從新進行鏈接就行了。