CREATE USER 'replica'@'123.57.39.%' IDENTIFIED BY 'replica@123';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'123.57.39.%';
FLUSH PRIVILEGES;
[mysqld]
server-id=1
log-bin=/var/lib/mysql/binlog/mysql-bin
expire_logs_days=7
注意:log-bin 目錄擁有者必須為 mysql 用戶,否則啟動報錯。
[mysqld]
server-id=2
innodb_flush_log_at_trx_commit=2 -- 提升性能,非必需
expire_logs_days=7
mysqldump --master-data=2 --single-transaction --all-databases \
-uroot -p'password' > replica.sql
--master-data=2:輸出 CHANGE MASTER TO 註釋 (含 Binlog 文件/位置)。--single-transaction:InnoDB 一致性備份無阻塞。mysql -uroot -p'password' < replica.sql
查看 replica.sql 開頭註釋:
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107;
在 Slave 執行:
CHANGE MASTER TO
MASTER_HOST='123.57.38.*',
MASTER_USER='replica',
MASTER_PASSWORD='replica@123',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;
START SLAVE;
SHOW SLAVE STATUS\G
關鍵指標:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0
bind-address=0.0.0.0 或具體 IP。read_only=ON 防誤寫。Seconds_Behind_Master、Slave_*_Running。