mysql雙主配置及其注意事項

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_offsetauto_increment_increment來解決。mysql

auto_increment_offset
auto_increment_increment

這兩個參數的做用:sql

  • 控制自增列auto_incremnet的行爲
  • 用於master_master之間的複製,防止出現重複值

auto_increment_increment:自增值的自增量數據庫

auto_increment_offset: 自增值的偏移量服務器

通常設置:網絡

auto_increment_offset=1 偏移量從開始,依次增長ide

auto_increment_offset=N 有幾臺主服務器,就設置爲N,這樣就能夠保證他們之間的主鍵不衝突。日誌

主從同步故障解決辦法:

  1. 適用於數據相差不大。要求不嚴格的狀況。

在主庫上鎖表 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
  1. 在master1作slave,master2作主數據看時成功
  2. 在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;重啓,而後從新進行鏈接就行了。

相關文章
相關標籤/搜索