mysql镜像配置如何设置数据同步_mysql镜像配置主从数据同步设置教程

主从数据同步通过配置主库记录binlog、从库重放实现数据复制。1. 确保主从环境兼容且网络互通;2. 主库启用binlog并创建复制用户;3. 从库设置唯一server-id并启动复制线程;4. 验证Slave_IO和SQL_Running为Yes;5. 注意一致性和监控延迟。

MySQL主从数据同步(也称镜像配置)通过将一个MySQL数据库(主库)的数据自动复制到另一个或多个MySQL数据库(从库)实现高可用、读写分离和备份。以下是详细的主从数据同步设置步骤。

1. 确认主从服务器环境

确保主从服务器都已安装MySQL,并且版本兼容(建议使用相同或相近版本)。主从之间需网络互通,能通过IP访问。

  • 主服务器:负责写操作,记录二进制日志(binlog)
  • 从服务器:负责读操作,读取主服务器的binlog并重放
  • 建议关闭防火墙或开放3306端口

2. 配置主服务器(Master)

编辑主服务器的MySQL配置文件 my.cnf(通常位于 /etc/mysql/my.cnf 或 /etc/my.cnf):

[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-format = ROW
expire-logs-days = 7
max-binlog-size = 100M

说明:

  • server-id 唯一标识主服务器,必须为正整数且唯一
  • log-bin 开启二进制日志,用于记录所有数据变更
  • binlog-format 推荐使用ROW格式,更安全精确

重启MySQL服务使配置生效:

sudo systemctl restart mysql

登录MySQL创建用于复制的账户:

CREATE USER 'repl'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;

查看主服务器当前binlog状态:

SHOW MASTER STATUS;

记下 File 和 Position 的值,后续从服务器配置需要使用。

3. 配置从服务器(Slave)

编辑从服务器的 my.cnf 文件:

[mysqld]
server-id = 2
relay-log = mysql-relay-bin
log-slave-updates = 1
read-only = 1
  • server-id 必须与主库不同
  • relay-log 保存从主库接收到的日志
  • read-only 防止从库被误写入

重启从服务器MySQL:

sudo systemctl restart mysql

登录MySQL,设置主从连接信息:

CHANGE MASTER TO
MASTER_HOST='主服务器IP',
MASTER_USER='repl',
MASTER_PASSWORD='your_password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS= 154;

注意:MASTER_LOG_FILE 和 MASTER_LOG_POS 使用之前在主库执行 SHOW MASTER STATUS 得到的值。

启动从库复制线程:

START SLAVE;

4. 验证主从同步状态

在从服务器执行:

SHOW SLAVE STATUS\G

重点关注以下两个字段:

  • Slave_IO_Running: Yes
  • Slave_SQL_Running: Yes

如果均为 Yes,表示同步正常。若为 No,检查 Last_Error 字段排查问题(常见如网络不通、账号权限、日志位置错误等)。

测试同步:在主库创建数据库或表,查看从库是否自动同步。

5. 注意事项

  • 首次配置前建议对主库进行锁表导出,确保从库基于一致快照开始同步
  • 生产环境可使用 mysqldump 加 --master-data 参数导出数据
  • 多从库时每个从库 server-id 必须唯一
  • 定期监控从库延迟(Seconds_Behind_Master)

基本上就这些。配置成功后,主库的所有数据变更会自动同步到从库,实现数据镜像。不复杂但容易忽略细节,比如 server-id 冲突或权限未刷新。