my.cnf[mysqld]
server-id=1
log-bin=mysql-bin
binlog-do-db=videoCommunity # 只同步指定庫(可選)
# binlog-ignore-db=test # 排除庫
sync_binlog=1 # 事務提交強制刷盤,最安全
innodb_flush_log_at_trx_commit=1
my.cnf[mysqld]
server-id=2
relay-log=relay-bin
log-slave-updates=1 # 從庫也寫 binlog,支持級聯
read-only=1 # 防止誤寫入
replicate-do-db=videoCommunity
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'password';
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
-- 記錄 File (mysql-bin.000001) 和 Position (603)
mysqldump --master-data=2 --single-transaction db_name > dump.sql
UNLOCK TABLES;
mysql -u root -p db_name < dump.sql
CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=603;
START SLAVE;
SHOW SLAVE STATUS\G
-- 關鍵指標:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0
Last_Error: (空)
master.info、relay-log.info、所有 relay-bin.*,否則從庫按舊坐標復制導致報錯/數據不一致。CHANGE MASTER TO 需用最新 SHOW MASTER STATUS 返回值。Last_IO_Error,調整 slave_net_timeout、master_retry_count。納入監控系統:Slave_IO_Running、Slave_SQL_Running、Seconds_Behind_Master、Last_Error、Relay_Log_Space。