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

来源:这里教程网 时间:2026-02-28 20:23:16 作者:

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 冲突或权限未刷新。

相关推荐