前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实现MySQL数据库主主同步(自动互相同步数据)

实现MySQL数据库主主同步(自动互相同步数据)

作者头像
目的地-Destination
发布2023-03-30 20:52:16
4.4K0
发布2023-03-30 20:52:16
举报

最近有个需要,国内和国外分别开了两台mysql数据库,要求是数据实时同步,不管那边访问,数据都是一样的。 其实好几年前,做过一次MySQL的主主同步,都已经忘记怎么做了。这次做完,顺便记录一下。

前提

服务器A的IP:1.1.1.1 服务器B的IP:2.2.2.2

数据库操作,务必提前备份好原始数据。
两台服务器的MySQL数据,先同步一次。保证数据完全一致。
停止mysql服务,防止有数据生成。

互相授权

1、进入服务器A的shell,给服务器B授权,授权账号为tongbu,密码为123456

代码语言:javascript
复制
Mysql>GRANT all privileges ON *.* TO tongbu@'2.2.2.2' IDENTIFIED BY '123456';

2、进入服务器B的shell,给服务器A授权,授权账号为tongbu,密码为123456

代码语言:javascript
复制
Mysql>GRANT all privileges ON *.* TO tongbu@'1.1.1.1' IDENTIFIED BY '123456';

数据库配置[my.cnf]

1、进入服务器A,编辑my.cnf文件:vi /etc/my.cnf 2、在[mysqld]的配置项中增加如下代码:

代码语言:javascript
复制
server-id=1
log-bin=mysql-bin
binlog-do-db=xxx_data
replicate-do-db=xxx_data
auto_increment_increment = 2
auto_increment_offset = 1

3、进入服务器B,编辑my.cnf文件:vi /etc/my.cnf 4、在[mysqld]的配置项中增加如下代码:

代码语言:javascript
复制
server-id=2
log-bin=mysql-bin
binlog-do-db=xxx_data
replicate-do-db=xxx_data
auto_increment_increment = 2
auto_increment_offset = 2
xxx_data即你要同步的库,若有多个,就多写几行。
auto_increment_offset设置自增起始值。
auto_increment_increment主键自增的步长,用于防止Master与Master之间出现主键冲突(重复),通常有多少台主服务器,设置为多少

MySQL二进制日志名和偏移量

服务器A、服务器B 分别执行mysql> show master status;得到FilePosition。分别记录下来。

MySQL互相设置同步

假设: 服务器A:Filemysql-bin.000009Position153 服务器B:Filemysql-bin.000010Position154 那么 服务器A执行:

代码语言:javascript
复制
Mysql> stop slave;
代码语言:javascript
复制
CHANGE MASTER TO
MASTER_HOST='2.2.2.2',
MASTER_USER='tongbu',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000010',
MASTER_LOG_POS=154;
代码语言:javascript
复制
Mysql> start slave;

服务器B执行:

代码语言:javascript
复制
Mysql> stop slave;
代码语言:javascript
复制
CHANGE MASTER TO
MASTER_HOST='1.1.1.1',
MASTER_USER='tongbu',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000009',
MASTER_LOG_POS=153;
代码语言:javascript
复制
Mysql> start slave;

重启MySQL

重新启动MySQL:service mysqld restart

检查slave状态

执行:Mysql> show slave status\G,如果其中显示两个Yes,即同步成功。可以测试数据同步效果。

代码语言:javascript
复制
......
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
......
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023年03月27日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前提
    • 数据库操作,务必提前备份好原始数据。
      • 两台服务器的MySQL数据,先同步一次。保证数据完全一致。
        • 停止mysql服务,防止有数据生成。
        • 互相授权
        • 数据库配置[my.cnf]
          • xxx_data即你要同步的库,若有多个,就多写几行。
            • auto_increment_offset设置自增起始值。
              • auto_increment_increment主键自增的步长,用于防止Master与Master之间出现主键冲突(重复),通常有多少台主服务器,设置为多少
              • MySQL二进制日志名和偏移量
              • MySQL互相设置同步
              • 重启MySQL
              • 检查slave状态
              相关产品与服务
              数据库
              云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档