配置 log_bin = mysql-bin 未給絕對路徑,檔案生成在 datadir(如 /var/lib/mysql/)。重啟後產生新檔 mysql-bin.000002,舊檔索引在 mysql-bin.index。建議:明確指定 log_bin = /var/log/mysql/mysql-bin.log。
SHOW MASTER STATUS;
-- 第一次:mysql-bin.000001, Pos 106
-- 重啟後:mysql-bin.000002, Pos 106
配置 Slave 時務必以 當前最新 的 File/Position 為準,不可用舊記錄。
Windows 安裝產生多個 my.ini,以 mysql --help | findstr my.ini 確認實際讀取順序,修改正確檔案並重啟服務(mysqladmin shutdown / net start mysql)。
CHANGE MASTER TO ...; START SLAVE;
-- SHOW SLAVE STATUS\G 顯示 Slave_IO_Running: No
-- 錯誤日誌:ERROR 2003 (HY000): Can't connect to MySQL server on 'master_ip' (111)
原因:Master 的 bind-address = 127.0.0.1 封鎖遠程連線。解決:Master 註釋該行並重啟。
Last_Error: Error 'Table test.chen doesn't exist' on query.
Default database: 'test'. Query: 'insert into chen values(...)'
解決:Master SHOW CREATE TABLE chen → Slave 執行建表 → START SLAVE 自動追上。
-- Master
INSERT INTO chen VALUES (1111,'chen','chen');
-- Slave
SELECT * FROM chen;
-- 顯示新行,Seconds_Behind_Master = 0
server-id、log_bin(絕對路徑)、bind-address 註釋、建立 REPLICATION SLAVE 帳號。server-id 不同、relay_log 指定、CHANGE MASTER TO 位點對齊。FLUSH TABLES WITH READ LOCK → mysqldump → 導入 → UNLOCK TABLES。Slave_IO_Running=Yes、Slave_SQL_Running=Yes、Seconds_Behind_Master=0、Last_Error 為空。