mysql雙主配置及其註意事項
阿新 • • 發佈:2018-03-28
mysql linux mysql雙主配置及其註意事項
主庫配置
[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
來解決。
auto_increment_offset auto_increment_increment
這兩個參數的作用:
- 控制自增列auto_incremnet的行為
- 用於master_master之間的復制,防止出現重復值
auto_increment_increment:自增值的自增量
auto_increment_offset: 自增值的偏移量
一般設置:
auto_increment_offset=1 偏移量從開始,依次增加
auto_increment_offset=N 有幾臺主服務器,就設置為N,這樣就可以保證他們之間的主鍵不沖突。
主從同步故障解決辦法:
- 適用於數據相差不大。要求不嚴格的情況。
在主庫上鎖表 flush tables with read lock
在從庫上執行:
stop slave;
#跳過錯誤的步驟,可以改變後面的數字,實現多次跳轉
set global sql_slave_skip_counter =1;
start slave;
show slave status\G;
解鎖表 unlock tables;
2.重做,實現完全同步。適用於要求數據完全統一的情況下:
1. 在主庫上鎖表
2.進行主庫數據備份
3.查看master的狀態
4.將備份文件拷貝到從庫
######################
5.停止從庫的狀態
6.導入備份的數據庫
7.設置主從同步
8.開啟從同步
9.查看同步的狀態
10.在master上解鎖
不同版本做主從報錯問題:
配置:
master1 mysql:5.6
master2 mysql: 5.5
- 在master1做slave,master2做主數據看時成功
-
在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
;重啟,然後重新進行連接就好了。
mysql雙主配置及其註意事項