温馨提示×

ubuntu mysql如何主从同步

小樊
49
2026-09-25 08:35:49
栏目: 云计算

下面给你一个**在 Ubuntu 上配置 MySQL 主从同步(Master–Slave Replication)**的完整实操步骤,适用于 MySQL 5.7 / 8.0(小差异我会标注)。


一、环境准备

  • 两台 Ubuntu 服务器
    • 主库(Master):192.168.1.10
    • 从库(Slave):192.168.1.20
  • MySQL 已安装并启动
sudo systemctl status mysql

二、主库(Master)配置

1. 修改 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

2. 重启 MySQL

sudo systemctl restart mysql

3. 创建复制账号

CREATE USER 'repl'@'192.168.1.20' IDENTIFIED BY 'ReplPass123!';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.20';
FLUSH PRIVILEGES;

4. 查看主库状态

SHOW MASTER STATUS;

记录:

  • File(如 mysql-bin.000001)
  • Position(如 154)

三、从库(Slave)配置

1. 修改 MySQL 配置

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
server-id = 2
relay_log = /var/log/mysql/mysql-relay-bin

2. 重启 MySQL

sudo systemctl restart mysql

四、从库连接主库

1. 执行同步命令

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;

2. 启动从库

START SLAVE;

3. 查看状态

SHOW SLAVE STATUS\G

重点看:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

五、测试同步

在主库:

CREATE DATABASE test_rep;

在从库:

SHOW DATABASES;

能看到 test_rep 即成功 ✅


六、常见问题

1. Slave_IO_Running: No

  • 网络不通
  • 复制账号权限错误
  • 防火墙未放行 3306

2. Slave_SQL_Running: No

  • 数据不一致
  • 可尝试:
STOP SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
START SLAVE;

3. 已有数据如何同步?

主库先导出:

mysqldump -u root -p --all-databases --master-data > db.sql

从库导入后再配同步。


如果你愿意,我可以:

  • 给你 Docker 版 MySQL 主从
  • 配置 GTID 复制(推荐)
  • 做 一主多从 / 双主

你现在是 MySQL 几?单机还是云服务器?

0 踩