温馨提示×

ubuntu mysql怎样主从同步

小樊
52
2026-10-04 02:21:14
栏目: 云计算

下面给你一份**在 Ubuntu 上配置 MySQL 主从同步(Replication)**的实用步骤,适用于 MySQL 5.7 / 8.0,基于 binlog 的主从复制。


一、环境准备

假设:

  • 主库(Master):192.168.1.10
  • 从库(Slave):192.168.1.20
  • MySQL 已安装并能正常启动
mysql --version

二、主库(Master)配置

1. 修改 MySQL 配置文件

编辑配置文件(常见路径):

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 主从必须不同


2. 重启 MySQL

sudo systemctl restart mysql

3. 创建复制用户

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;

4. 查看主库状态

SHOW MASTER STATUS;

记录:

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

三、从库(Slave)配置

1. 修改配置文件

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

2. 配置主库信息

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;

3. 启动从库

START SLAVE;

4. 查看同步状态

SHOW SLAVE STATUS\G

重点检查:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

四、测试同步

主库:

CREATE DATABASE test_repl;

从库:

SHOW DATABASES;

能看到 test_repl 即成功 ✅


五、常见问题

1. Slave_IO_Running: No

  • 网络不通
  • 复制用户权限或 IP 错误
  • 防火墙未放通 3306

2. 数据不一致

  • 初始同步建议先锁表或备份导入
FLUSH TABLES WITH READ LOCK;

3. 已运行数据库如何做主从?

使用 mysqldump 或 xtrabackup 先全量同步,再接 binlog


六、可选优化

  • GTID 复制(推荐)
  • 半同步复制
  • 多从库
  • 读写分离(ProxySQL / MyCat)

如果你愿意,我可以:

  • 给你 GTID 主从配置
  • 帮你写 一键部署脚本
  • 针对 Docker / 云服务器 场景说明

直接告诉我你的 MySQL 版本和环境即可。

0 踩