將Replication暫停一段時間(M),再重新開啟,並觀察Slave多久可以達到與Master一致(N)。
Replication容量=N:M
建議維持容量在3倍以上,即1:3
#1)大多數replication錯誤都是因為日誌錯誤所造成的。
2)主日誌和中繼日誌都可能會錯,辨別的方法:
#mysqlbinlog MASTER_BINLOG_FILE > /dev/null #mysqlbinlog SLAVE_BINLOG_FILE > /dev/null
1)很多問題都可能導致日誌錯誤。有時候也可能日誌本身沒有錯誤,SQL解析時出錯了(例如主從資料本來就不一致)。可以手動跳過日誌錯誤,不過這樣做可能造成主從資料不一致。
2)如果是主日誌錯誤,可以在Slave上執行(如果有多個錯誤可能要執行多次)。
mysql> stop slave; mysql> set global sql_slave_skip_counter=1; mysql> start slave;
3)如果是中繼日誌出錯,可以在Slave上透過show slave status \G指令查看Replication狀態,根據日誌資訊跳過出錯的日誌:
mysql> stop slave; mysql> charge master to -> master_log_file='<Relay_Master_Log_file>', -> master_log_pos=<Exec_Master_Log_Pos>; mysql> start slave;
4)如果Replcation工作在GTIDs模式下,則需要
mysql> stop slave; mysql> set gtid_next='uuid:nexti_d'; mysql> begin; mysql> commit; mysql> set gtid_next='automatic'; mysql> start slave;
註:uuid:nextid例如:'0470a4fd-93d1-11e3-86bf-4ec905bea80f:17'。
1、MySQL5.6開始支援多執行緒方式傳輸二進位日誌。
2、只能工作在GTIDs模式下。
3、只有對不同的函式庫執行的操作才能採用多執行緒傳輸。同一個庫下不同表的操作仍只能用單線程傳輸。
#vi /etc/my.cnf [mysqld] slave_parallel-workers=N (默认值为0,不开启)
其他指令:
mysql> set sql_log_bin=OFF; (关闭二进制日志) mysql> set sql_log_bin=ON; (开启二进制日志)
以上是MySQL之-詳解Replication的容量、故障排錯以及多執行緒方式傳輸二進位日誌的詳細內容。更多資訊請關注PHP中文網其他相關文章!