Mysql
複製損壞,列出不同步的表
在 RHEL 6.1 上的 MySQL 5.5 上的主從設置中,當數據庫複製中斷(無論出於何種原因)時,有什麼好方法:
- 檢查(和警告)複製是否損壞?
- 獲取跨不同數據庫不同步的表列表?
除了應用程序使用的數據庫之外,我無權訪問伺服器日誌,但可以查詢“mysql”數據庫和“information_schema”下的表。
關於第一點
檢查(和警告)複製是否損壞?
只需檢查以下內容
MYSQL_CONN="-uroot -ppassword" SLAVESTATUS_OUTPUT=/tmp/ShowSlaveStatus.txt mysql ${MYSQL_CONN} -ANe"SHOW SLAVE STATUS\G" > ${SLAVESTATUS_OUTPUT} IO_RUNNING=`grep "Slave_IO_Running" < ${SLAVESTATUS_OUTPUT} | awk '{print $2}'` SQL_RUNNING=`grep "Slave_SQL_Running" < ${SLAVESTATUS_OUTPUT} | awk '{print $2}'`
只需檢查 IO_RUNNING 和 SQL_RUNNING 是否為 Yes。
如果任一值為否,請檢查錯誤消息。
您可以檢查其他內容,例如 Seconds_Behind_Master (
Seconds_Behind_Master
是否顯示來自 Master 的確切 Slave Lag?)關於第二點
獲取跨不同數據庫不同步的表列表?
世界上最好的工具是 pt-table-checksum。請閱讀它的文件,因為輸出將是指定數據庫中的所有表。您必須解析文本輸出以比較主從之間的校驗和值。
我寫了一篇關於使用這個工具的文章: