MySQL 5.7双主同步部分表

本文详细介绍了如何配置双主MySQL服务器之间的同步操作。通过设置my.ini文件中的参数,并使用特定的MySQL命令,实现两个服务器之间的数据同步。文章还提供了实用的步骤说明,包括创建用户、授权、启动和检查同步状态等。

参考:http://www.jb51.net/article/122892.htm?pc

 

前言:

我们要配置双主同步的mysql服务器。

暂时叫做,mysql1和mysql2吧。

 

一  mysql的配置文件:my.ini

my.ini位于C:\ProgramData\MySQL\MySQL Server 5.7(ProgramData是隐藏的,需要显示隐藏文件)

1  mysql1服务器 的my.ini配置:

 

log_bin=bin_log  
server-id=1  
# 允许从复制的哪一个库 
binlog-do-db=testdb 
slave_parallel_type='logical_clock'  
#设置复制类型为 LOGICAL_CLOCK  
slave_parallel_workers=4  
#设置并行数量为 4  
###从配置  
relay-log=relay-bin  
relay-log-index=relay-bin.index  
# 允许复制主服务的库
replicate-do-db=testdb  
# 允许复制主服务的表
replicate-do-table=testdb.user  
//防止主键重复
auto_increment_offset = 1
auto_increment_increment = 2


2  mysql2服务器 的my.ini配置:

 

 

 

 

log_bin=bin_log  
server-id=2  
# 允许从复制的哪一个库
binlog-do-db=testdb  
slave_parallel_type='logical_clock'  
#设置复制类型为 LOGICAL_CLOCK  
slave_parallel_workers=4  
#设置并行数量为 4  
###从配置  
relay-log=relay-bin  
relay-log-index=relay-bin.index  
# 允许复制主服务的库
replicate-do-db=testdb  
# 允许复制主服务的表  
replicate-do-table=testdb.user 
auto_increment_offset = 2
auto_increment_increment = 2

 

 

PS:

配置完,重启mysql服务。(windows在管理--服务--重启mysql服务

其实我们发现,除了 server-id 和 auto_increment_offset 不同,其他一模一样

 

二  配置命令

1 mysql1 服务器

打开MySQL command line client

首先,输入

 

CREATE USER 'slave'@'MySql2服务器ip' IDENTIFIED BY '密码';
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'MySql2服务器ip';

flush privileges;

 

然后输入

 

show master status;

我们会看到:(记住 File 和 Position)

 


 

 


2 mysql2 服务器

打开MySQL command line client

输入

 

CHANGE MASTER TO 
master_host = 'MySql1服务器ip',   
master_user = 'slave',  
master_password = '密码',  
master_log_file = 'bin_log.000002',  
master_log_pos = 631; 

 

 

然后

 

start slave;

 

 

最后查看

 

show slave status\G

 

如果都是Yes,就是正确的了!。

 

 

 

PS:上面是单项的配置。

 

 

双向配置,就是在Mysql1和 Mysql2互相来一遍。按照Mysql2为主,在配置一下上面的流程就可以了。

1  重置 reset slave;很有用

2  change master to 之后的配置,单引号,逗号,分号,都很重要!

3 主库服务器的数据库名为yoon,从库服务器的库名为hank
   replicate-rewrite-db = yoon -> hank

 

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 负载,特别是在高并发写入场景下,需根据实际情况调整硬件资源。 - **监控与维护**:定期检查复制延迟、错误日志等信息,及时发现并解决问题。 - **安全性**:确保复制用户的权限最小化,仅授予必要的复制权限,并使用强密码保护账户安全。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值