下面以 Debian + MySQL(以 MySQL 8.0 为例) 说明 主从同步(Replication) 的基本配置步骤。
sudo apt update
sudo apt install mysql-server
编辑 /etc/mysql/mysql.conf.d/mysqld.cnf
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_format = ROW
注意:
server-id主从不能相同
重启 MySQL:
sudo systemctl restart mysql
CREATE USER 'repl'@'192.168.1.11' IDENTIFIED WITH mysql_native_password BY 'repl_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.11';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
记录:
File(如 mysql-bin.000001)Position(如 154)server-id = 2
relay_log = /var/log/mysql/mysql-relay-bin.log
重启 MySQL:
sudo systemctl restart mysql
CHANGE MASTER TO
MASTER_HOST='192.168.1.10',
MASTER_USER='repl',
MASTER_PASSWORD='repl_password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
START SLAVE;
SHOW SLAVE STATUS\G
重点检查:
Slave_IO_Running: YesSlave_SQL_Running: Yes如果是已有数据的库:
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
另开窗口导出:
mysqldump -u root -p --all-databases > all.sql
解锁:
UNLOCK TABLES;
mysql -u root -p < all.sql
再执行 CHANGE MASTER TO
GTID 模式简化配置(MySQL 5.6+)如果你需要:
可以告诉我,我给你对应方案。