下面给你一份**在 Ubuntu 上配置 MySQL 主从同步(Replication)**的实用步骤,适用于 MySQL 5.7 / 8.0,基于 binlog 的主从复制。
假设:
mysql --version
编辑配置文件(常见路径):
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
添加或修改以下内容:
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_format = ROW
expire_logs_days = 7
⚠️
server-id主从必须不同
sudo systemctl restart mysql
CREATE USER 'repl'@'192.168.1.20' IDENTIFIED WITH mysql_native_password BY 'repl_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.20';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
记录:
File(如 mysql-bin.000001)Position(如 154)sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
server-id = 2
relay_log = /var/log/mysql/mysql-relay-bin
read_only = 1
重启:
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: Yes
Slave_SQL_Running: Yes
主库:
CREATE DATABASE test_repl;
从库:
SHOW DATABASES;
能看到 test_repl 即成功 ✅
FLUSH TABLES WITH READ LOCK;
使用 mysqldump 或 xtrabackup 先全量同步,再接 binlog
如果你愿意,我可以:
直接告诉我你的 MySQL 版本和环境即可。