让两台服务器的MySQL(5.7)数据同步_主主同步(互为主从关系)

本文档详细介绍了在RedHat 7.0上,MySQL 5.7版本实现两台服务器间的主主数据同步配置步骤,包括创建相互访问的用户,配置my.cnf,设置主从关系,并解决同步过程中可能出现的问题。确保数据库内容一致,避免数据错乱。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上找的大部分定义master-host的其实在新的MySQL中已经停用了,于是乎很悲剧的自己探索写出了这么一个东西

RedHat版本7.0

MySQL版本 5.7

服务器名称为假的!!!服务器名称为假的!!!服务器名称为假的!!!

重要事情说三遍~

另外需要注意的是,你同步的database里面的内容必须一致!!必须一致!!必须一致!!!

你想要电脑精神错乱吗?给俩不一样的数据让人家同步,还互为主从,直接短路啊!


服务器A:0.0.0.1

服务器B: 0.0.0.2


1. 首先在两个服务器上分别插入可以访问对方服务器的账号

在服务器A中设置:

Create user 'clare'@'0.0.0.2' identitied by 'clare-test123';

grant all on *.* to 'clare'@'0.0.0.2';

grant replication slave on *.* to 'clare'@'0.0.0.2';


服务器B则添加一模一样的账号:

Create user 'clare'@'0.0.0.1' identitied by 'clare-test123';

grant all on *.* to 'clare'@'0.0.0.1';

grant replication slave on *.* to 'clare'@'0.0.0.2';


2. 然后要在my.cnf中修改设置

就是这一步!!我累个去的网上的都是旧版本的不顶用了~!

服务器A作为主服务器,注意server-id=1

在服务器A中的/etc/my.cnf中添加如下设置:

server-id = 1

MySQL 5.7主主同步(Master-Master Replication)是一种数据库高可用性方案,允许两个 MySQL 实例互为主库和从库,彼此之间可以互相复制数据。以下是配置步骤及注意事项: ### 配置步骤 #### 1. 确保环境准备就绪 - **操作系统**:建议使用 CentOS 或 Ubuntu 等 Linux 发行版。 - **MySQL 版本**:确保两台服务器均安装 MySQL 5.7.x,并保持版本一致以避免兼容性问题[^1]。 - **网络互通**:确保主主服务器之间可以通过 IP 地址互相访问,并且 MySQL 端口(默认为 3306)开放。 #### 2. 修改 MySQL 配置文件 在每台服务器的 `my.cnf` 文件中添加以下内容: ```ini # master_1 (192.168.1.185) server-id = 1 log-bin = mysql-bin auto-increment-offset = 1 auto-increment-increment = 2 bind-address = 0.0.0.0 # master_2 (192.168.1.186) server-id = 2 log-bin = mysql-bin auto-increment-offset = 2 auto-increment-increment = 2 bind-address = 0.0.0.0 ``` 其中 `server-id` 必须唯一,`auto-increment-offset` 和 `auto-increment-increment` 用于避免自增字段冲突。 #### 3. 创建复制用户 在每台服务器上创建一个用于复制的专用账户: ```sql -- 在 master_1 上执行 CREATE USER 'replica'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%'; FLUSH PRIVILEGES; -- 在 master_2 上执行 CREATE USER 'replica'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%'; FLUSH PRIVILEGES; ``` #### 4. 获取并设置主库信息 在每台服务器上执行以下命令获取当前二进制日志文件名和位置: ```sql SHOW MASTER STATUS; ``` 然后使用这些信息在对方服务器上配置复制关系: ```sql -- 在 master_1 上连接到 master_2 并执行 CHANGE MASTER TO MASTER_HOST='192.168.1.186', MASTER_USER='replica', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS= 123456; -- 在 master_2 上连接到 master_1 并执行 CHANGE MASTER TO MASTER_HOST='192.168.1.185', MASTER_USER='replica', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS= 123456; ``` #### 5. 启动复制进程 在每台服务器上启动复制线程: ```sql START SLAVE; ``` #### 6. 检查复制状态 使用以下命令检查复制是否正常运行: ```sql SHOW SLAVE STATUS\G ``` 确保 `Slave_IO_Running` 和 `Slave_SQL_Running` 均为 `Yes`。 ### 注意事项 - **避免冲突**:由于主主同步允许双向写入,因此必须谨慎处理自增字段和唯一键冲突问题。可以通过设置 `auto-increment-offset` 和 `auto-increment-increment` 来规避自增冲突。 - **网络稳定性**:主主同步对网络稳定性要求较高,建议在局域网内进行部署。 - **性能影响**:主主同步会增加数据库的 I/O 负载,特别是在高并发写入场景下,需根据实际情况调整硬件资源。 - **监控与维护**:定期检查复制延迟、错误日志等信息,及时发现并解决问题。 - **安全性**:确保复制用户的权限最小化,仅授予必要的复制权限,并使用强密码保护账户安全。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值