Mysql

複製損壞,列出不同步的表

  • September 1, 2017

在 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。請閱讀它的文件,因為輸出將是指定數據庫中的所有表。您必須解析文本輸出以比較主從之間的校驗和值。

我寫了一篇關於使用這個工具的文章:

引用自:https://dba.stackexchange.com/questions/18711