log-bin。[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-do-db = db_name # 只記錄指定庫 (多庫用逗號分隔)
binlog-ignore-db = test # 忽略指定庫
# 建立同步專用帳號
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
# 4.0.2 以前版本用 GRANT FILE ON *.* ...
FLUSH PRIVILEGES;
-- 鎖表防寫入
FLUSH TABLES WITH READ LOCK;
-- 方式一:直接打包 data 目錄 (建議)
tar czf /backup/master_data.tar.gz /var/lib/mysql/db_name
-- 方式二:mysqldump (需加 --master-data)
mysqldump --master-data -u root -p db_name > dump.sql
-- 記錄位點
SHOW MASTER STATUS\G;
-- 記下 File (如 mysql-bin.003) 和 Position (如 73)
-- 解鎖
UNLOCK TABLES;
[mysqld]
server-id = 2 # 唯一,不可與 Master 或其他 Slave 重複
master-host = master_ip
master-port = 3306
master-user = repl
master-password = slavepass
master-connect-retry = 60
report-host = slave_ip
# 匯入 Master 備份資料
# 啟動 Slave (若未加 --skip-slave-start 需手動)
STOP SLAVE;
-- 設定同步參數
CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='repl',
MASTER_PASSWORD='slavepass',
MASTER_LOG_FILE='mysql-bin.003', -- Master 記錄的 File
MASTER_LOG_POS=73; -- Master 記錄的 Position
START SLAVE;
SHOW PROCESSLIST\G; -- 檢查 Slave_IO_Running / Slave_SQL_Running 皆為 Yes
-- 日志過大時清理流程
FLUSH TABLES WITH READ LOCK; -- Master 鎖表
STOP SLAVE; -- Slave 停止
SHOW MASTER STATUS; -- 記下新 File/Position
UNLOCK TABLES; -- Master 解鎖
CHANGE MASTER TO MASTER_LOG_FILE='new_file', MASTER_LOG_POS=new_pos; -- Slave 更新位點
START SLAVE;
掌握以上流程,即可建立穩定的 MySQL 雙機熱備架構。