
無濾芯除塵 參考

Andrew Choi 蔡健發 (清心明月), 不務正業的行街
My Notebook

適用情境
- Slave 一直出現
1032 / 1146錯誤- 資料已嚴重不同步
- 非 GTID 複製
- 需要保留
Replicate_Ignore_DB設定
sql
STOP SLAVE;
RESET SLAVE ALL;
目的:
清除舊的 relay log,避免殘留錯誤事件。
sql
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
請記下輸出中的:
text
File: mysql-bin.xxxxxx
Position: xxxxxxxx
⚠️ 請保持此連線不要中斷
bash
mysqldump -u root -p \
--all-databases \
--single-transaction \
--routines \
--triggers \
--events \
--master-data=2 \
--ignore-database=dbispconfig \
--ignore-database=dbispconfig2 \
--ignore-database=mysql \
--ignore-database=phpmyadmin \
--ignore-database=sys \
--ignore-database=information_schema \
--ignore-database=performance_schema \
> fulldump.sql
說明:
--master-data=2:自動記錄 binlog 位置--single-transaction:InnoDB 無鎖匯出Replicate_Ignore_DB 完全一致sql
UNLOCK TABLES;
sql
SET sql_log_bin = 0;
DROP DATABASE IF EXISTS c4web113;
DROP DATABASE IF EXISTS c7_5guvv_web116;
-- 其他客戶 DB 請一併 DROP
SET sql_log_bin = 1;
⚠️ 只 DROP「需要複製的 DB」,ignore 的 DB 不要動
bash
mysql -u root -p < fulldump.sql
⏳ 視資料量大小,可能需要數分鐘~數十分鐘
(使用 Step 2 記下來的值)
sql
CHANGE MASTER TO
MASTER_HOST='MasterSQLServer_IPAddress',
MASTER_USER='slaveuser2',
MASTER_PASSWORD='你的密碼',
MASTER_LOG_FILE='mysql-bin.xxxxxx',
MASTER_LOG_POS=xxxxxxxx;
sql
START SLAVE;
sql
SHOW SLAVE STATUS\G
確認以下欄位:
text
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Last_SQL_Error:
Seconds_Behind_Master: (數字,並會逐漸下降)
1032 / 1146 錯誤Replicate_Ignore_DB 持續生效SQL_SLAVE_SKIP_COUNTERmysqldump -u root -p \
--single-transaction \
--routines \
--triggers \
--databases mydb > mydb.sql