主庫臨時建立庫表導入資料後,Slave 同步報錯 not found tmpdb.tmptable。嘗試用 CHANGE MASTER TO MASTER_LOG_POS 跳過卻導致 1162 錯誤,雙邊同步中斷。
mysqlbinlog --start-position=190000000 --stop-position=200000000 xxx.binlog | grep tmptable
mysqlbinlog --start-position=190000000 --stop-position=200000000 xxx.binlog | grep tmptable > /tmp/tmpbinlog
vi /tmp/tmpbinlog # 找到錯誤 SQL 後的下一個 `# at 123456789` 位點,記為 $NEXT_POS
CHANGE MASTER TO MASTER_LOG_POS=$NEXT_POS;
START SLAVE;
SHOW SLAVE STATUS\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes # 同步恢復正常
在 Slave 設定檔 my.cnf 加入 slave-skip-errors=1062,重啟 Slave 即可跳過。
不要輕易重做主從。善用 mysqlbinlog 精準定位位點,配合 CHANGE MASTER TO 微調同步進度,是 DBA 解決同步中斷的利器。