下面给你一个**在 Ubuntu 上配置 MySQL 主从同步(Master–Slave Replication)**的完整实操步骤,适用于 MySQL 5.7 / 8.0(小差异我会标注)。
sudo systemctl status mysql
编辑配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
添加/修改以下内容:
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_format = ROW
如果是 MySQL 8,默认
binlog_format=ROW
sudo systemctl restart mysql
CREATE USER 'repl'@'192.168.1.20' IDENTIFIED BY 'ReplPass123!';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.20';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
记录:
File(如 mysql-bin.000001)Position(如 154)sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
server-id = 2
relay_log = /var/log/mysql/mysql-relay-bin
sudo systemctl restart mysql
CHANGE MASTER TO
MASTER_HOST='192.168.1.10',
MASTER_USER='repl',
MASTER_PASSWORD='ReplPass123!',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
START SLAVE;
SHOW SLAVE STATUS\G
重点看:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
在主库:
CREATE DATABASE test_rep;
在从库:
SHOW DATABASES;
能看到 test_rep 即成功 ✅
STOP SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
START SLAVE;
主库先导出:
mysqldump -u root -p --all-databases --master-data > db.sql
从库导入后再配同步。
如果你愿意,我可以:
你现在是 MySQL 几?单机还是云服务器?