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

MySQL多主复制(Multi-Master Replication)可以让多个数据库节点互相作为主库,实现双向或环形数据同步。这种架构适合需要高可用、读写分离和跨地域部署的场景。下面介绍基于MySQL原生复制的环形多主搭建方法(以两个节点为例),不依赖第三方中间件。
1. 环境准备与配置要求
确保两台服务器已安装MySQL(建议版本一致,如MySQL 8.0),并能通过网络互通。例如:
Node A:IP 192.168.1.10,server-id=1Node 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的全称是mybboard,是一个基于PHP+MySQL搭建,功能强大,高效的开源论坛系统。MyBB 使用了标准的论坛结构和模式,所以您的用户可以在您的论坛获得良好的用户体验。用户可以通过用户控制面板来自定义他们访问论坛的方式或者自定义他们想看到的论坛的内容,他们还可以方便地发表和答复一个主题并且标记与他们有关的主题。论坛管理员和版主可以使用MyBB的内置编辑器和版主工具等功能,控制并维
95 查看详情
在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: YesSlave_SQL_Running: YesLast_Error: (应为空)Retrieved_Gtid_Set / Executed_Gtid_Set: 有更新表示同步生效
5. 注意事项与限制
多主复制虽然提升了可用性,但存在一些风险和限制:
避免同一行数据在两个节点同时更新,否则可能引发冲突导致复制中断。DDL操作(如ALTER TABLE)需谨慎,建议停写或在单一节点执行。网络延迟可能导致数据不一致,建议监控复制延迟。故障恢复复杂,需人工介入处理冲突事务。
生产环境可考虑使用MHA、PXC(Percona XtraDB Cluster)或MySQL InnoDB Cluster来提升稳定性和自动化能力。
基本上就这些。按步骤操作,确保配置准确,多主复制可以稳定运行。关键是预防主键冲突和避免并发写入同一数据。
以上就是mysql如何搭建多主复制_mysql多主复制搭建方法的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1067892.html
微信扫一扫
支付宝扫一扫