log-bin,複製基於二進位日誌[mysqld]
server-id=1
log-bin=mysql-bin
binlog-do-db=db_name # 需同步的庫
binlog-ignore-db=mysql,test # 排除的庫
# 多庫用逗號分隔
重啟生效。
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'slavepass';
FLUSH PRIVILEGES;
舊版本 (≤4.0.2) 用 GRANT FILE ON *.*。
FLUSH TABLES WITH READ LOCK;
-- 物理複製 data 目錄 (最快) 或 mysqldump --master-data=2
SHOW MASTER STATUS\G;
-- 記錄 File (如 mysql-bin.000003) 和 Position (如 73)
UNLOCK TABLES;
[mysqld]
server-id=2 # 唯一,≠主庫
master-host=master_ip
master-port=3306
master-user=repl
master-password=slavepass
master-connect-retry=60
report-host=slave_ip
MySQL 5.6+ 建議改用 CHANGE MASTER TO 動態設定,不寫死配置檔。
物理檔案覆蓋或 mysql < dump.sql。
STOP SLAVE;
CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='repl',
MASTER_PASSWORD='slavepass',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=73;
START SLAVE;
SHOW SLAVE STATUS\G;
-- 關鍵:Slave_IO_Running=Yes, Slave_SQL_Running=Yes, Seconds_Behind_Master=0
SHOW PROCESSLIST\G; -- 確認有 system user 執行 Slave_IO/SQL 線程
FLUSH TABLES WITH READ LOCK;STOP SLAVE;SHOW MASTER STATUS; 記錄新 File/PositionUNLOCK TABLES;CHANGE MASTER TO MASTER_LOG_FILE='...', MASTER_LOG_POS=...;START SLAVE;binlog-do-db **僅對當前預設庫生效**,跨庫更新不記錄;建議主庫全記錄,從庫用 replicate-do-db 過濾。按此流程配置,即可建立穩定可靠的 MySQL 雙機熱備架構。