mysql如何搭建多主复制_mysql多主复制搭建方法

P粉602998670
发布: 2025-11-30 05:59:15
原创
245人浏览过
通过配置MySQL双节点环形复制,设置唯一server-id、开启GTID与binlog,并调整auto-increment-offset避免主键冲突;2. 在各节点创建复制用户并授权;3. 使用CHANGE MASTER TO建立双向复制通道并启动同步;4. 检查Slave_IO_Running和Slave_SQL_Running状态确保复制正常;5. 注意避免并发写入同一数据、谨慎执行DDL操作,防止冲突导致复制中断。

mysql如何搭建多主复制_mysql多主复制搭建方法

MySQL多主复制(Multi-Master Replication)可以让多个数据库节点互相作为主库,实现双向或环形数据同步。这种架构适合需要高可用、读写分离和跨地域部署的场景。下面介绍基于MySQL原生复制的环形多主搭建方法(以两个节点为例),不依赖第三方中间件。

1. 环境准备与配置要求

确保两台服务器已安装MySQL(建议版本一致,如MySQL 8.0),并能通过网络互通。例如:

  • Node A:IP 192.168.1.10,server-id=1
  • Node B:IP 192.168.1.20,server-id=2

每台MySQL需开启二进制日志(binlog)、指定唯一server-id,并启用中继日志和GTID(推荐)。修改my.cnf配置文件

Node A 配置片段:

[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-format = ROW
gtid-mode = ON
enforce-gtid-consistency = ON
log-slave-updates = ON
relay-log = relay-log
auto-increment-increment = 2
auto-increment-offset = 1

Node B 配置片段:

[mysqld]
server-id = 2
log-bin = mysql-bin
binlog-format = ROW
gtid-mode = ON
enforce-gtid-consistency = ON
log-slave-updates = ON
relay-log = relay-log
auto-increment-increment = 2
auto-increment-offset = 2

说明: auto-increment设置是为了避免自增主键冲突。Node A生成奇数(1,3,5...),Node B生成偶数(2,4,6...)。

2. 创建复制用户

在每个节点上创建用于复制的账户:

登录Node A执行:

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

登录Node B执行:

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

3. 配置主从关系(双向)

使用CHANGE MASTER TO命令建立互为主从的关系。

MyBB 国外最好的免费论坛
MyBB 国外最好的免费论坛

MyBB的全称是mybboard,是一个基于PHP+MySQL搭建,功能强大,高效的开源论坛系统。 MyBB 使用了标准的论坛结构和模式,所以您的用户可以在您的论坛获得良好的用户体验。用户可以通过用户控制面板来自定义他们访问论坛的方式或者自定义他们想看到的论坛的内容,他们还可以方便地发表和答复一个主题并且标记与他们有关的主题。论坛管理员和版主可以使用MyBB的内置编辑器和版主工具等功能,控制并维

MyBB 国外最好的免费论坛 95
查看详情 MyBB 国外最好的免费论坛

在Node A上执行,指向Node B:

CHANGE MASTER TO
MASTER_HOST='192.168.1.20',
MASTER_PORT=3306,
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_AUTO_POSITION=1
FOR CHANNEL 'master-B';

在Node B上执行,指向Node A:

CHANGE MASTER TO
MASTER_HOST='192.168.1.10',
MASTER_PORT=3306,
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_AUTO_POSITION=1
FOR CHANNEL 'master-A';

启动复制:

START SLAVE FOR CHANNEL 'master-B'; (Node A执行)
START SLAVE FOR CHANNEL 'master-A'; (Node B执行)

4. 检查复制状态

查看复制是否正常运行:

SHOW SLAVE STATUS FOR CHANNEL 'master-B'\G (Node A)
SHOW SLAVE STATUS FOR CHANNEL 'master-A'\G (Node B)

重点关注以下字段:

  • Slave_IO_Running: Yes
  • Slave_SQL_Running: Yes
  • Last_Error: (应为空)
  • Retrieved_Gtid_Set / Executed_Gtid_Set: 有更新表示同步生效

5. 注意事项与限制

多主复制虽然提升了可用性,但存在一些风险和限制:

  • 避免同一行数据在两个节点同时更新,否则可能引发冲突导致复制中断。
  • DDL操作(如ALTER TABLE)需谨慎,建议停写或在单一节点执行。
  • 网络延迟可能导致数据不一致,建议监控复制延迟。
  • 故障恢复复杂,需人工介入处理冲突事务。

生产环境可考虑使用MHA、PXC(Percona XtraDB Cluster)或MySQL InnoDB Cluster来提升稳定性和自动化能力。

基本上就这些。按步骤操作,确保配置准确,多主复制可以稳定运行。关键是预防主键冲突和避免并发写入同一数据。

以上就是mysql如何搭建多主复制_mysql多主复制搭建方法的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号