目的地-Destination 前程似锦、未来可期、寻得良人、共赴白头,祝你也祝我。
博主 目的地-Destination
沪ICP备16003146号-2沪公网安备 31010702004922号萌ICP备20238488号博主 昨天 17:25 在线自豪地使用 Typecho 建站搭配使用 🌻Sunny 主题当前在线 28 人
歌曲封面 未知作品

沪ICP备16003146号-2

沪公网安备 31010702004922号

萌ICP备20238488号

网站已运行 7 年 342 天 0 小时 59 分

Powered by Typecho & Sunny

29 online · 48 ms

Title

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

Chrison

·

烂笔头

·

Article
⚠️ 本文最后更新于2023年03月27日,已经过了575天没有更新,若内容或图片失效,请留言反馈

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

前提

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

数据库操作,务必提前备份好原始数据。

两台服务器的MySQL数据,先同步一次。保证数据完全一致。

停止mysql服务,防止有数据生成。

互相授权

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

♾️ text 代码:
Mysql>GRANT all privileges ON *.* TO tongbu@'2.2.2.2' IDENTIFIED BY '123456';

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

♾️ text 代码:
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]的配置项中增加如下代码:

♾️ text 代码:
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]的配置项中增加如下代码:

♾️ text 代码:
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。分别记录下来。
iShot_2023-03-27_14.10.55.png

MySQL互相设置同步

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

♾️ text 代码:
Mysql> stop slave;
♾️ text 代码:
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;
♾️ text 代码:
Mysql> start slave;

服务器B执行:

♾️ text 代码:
Mysql> stop slave;
♾️ text 代码:
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;
♾️ text 代码:
Mysql> start slave;

重启MySQL

重新启动MySQL:service mysqld restart

检查slave状态

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

♾️ text 代码:
......
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
......
现在已有 444 次阅读,12 条评论,0 人点赞
Comment:共12条
发表
  1. 头像
    @
    如果其中一个数据库的服务器无法访问了,我切换到另一个服务器,到时候那个服务器可以访问了,那时是哪边同步到哪边呢?会不会异常?
    · Chrome · 中国安徽省滁州市电信

    👍

    💖

    💯

    💦

    😄

    🪙

    👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
    1. 头像
      @
      他们可能就不会同步了;stop slave后,校准数据后,重新start
      · 火狐浏览器 · 中国江苏省无锡市电信IDC机房

      👍

      💖

      💯

      💦

      😄

      🪙

      👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
      1. 头像
        @
        哦,你的意思是需要手动同步,然后重新开始,对吧
        此文转走了,会备注源地址,谢谢分享!
        · Chrome · 中国安徽省滁州市电信

        👍

        💖

        💯

        💦

        😄

        🪙

        👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
        1. 头像
          @
          恩。如果服务器异常,就停止同步,自己重新对齐 MASTER_LOG_FILE=和MASTER_LOG_POS,再次启动
          · 火狐浏览器 · 中国江苏省无锡市电信IDC机房

          👍

          💖

          💯

          💦

          😄

          🪙

          👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
  2. 头像
    @

    好友

    TeacherDu
    弄过一次,然后其中一台日志出了问题,导致数据异步,就换成主备了!
    · Chrome · 中国北京市移动

    👍

    💖

    💯

    💦

    😄

    🪙

    👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
    1. 头像
      @
      那倒是还没遇到过。
      之前是三台互相同步。不过都已经过了太久了。
      · 火狐浏览器 · 中国江苏省苏州市电信

      👍

      💖

      💯

      💦

      😄

      🪙

      👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
      1. 头像
        @
        关键分发写入需要程序支持~
        · Chrome · 中国江苏省扬州市联通

        👍

        💖

        💯

        💦

        😄

        🪙

        👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
        1. 头像
          @
          这个程序指的是要支持什么?
          mysql基本都可以配置吧
          · 火狐浏览器 · 中国江苏省苏州市电信

          👍

          💖

          💯

          💦

          😄

          🪙

          👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
  3. 头像
    @

    好友

    荒野孤灯
    佬,
    · Chrome · 中国广东省联通

    👍

    💖

    💯

    💦

    😄

    🪙

    👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
    1. 头像
      @
      省的下次忘了,又要到处找文档😂
      · 火狐浏览器 · 中国江苏省苏州市电信

      👍

      💖

      💯

      💦

      😄

      🪙

      👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
  4. 头像
    @
    这篇技术文章不错,挺实用的
    · Chrome · 中国广东省深圳市联通

    👍

    💖

    💯

    💦

    😄

    🪙

    👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
    1. 头像
      @
      该回复疑似异常,已被系统拦截!
      · 火狐浏览器 · 中国江苏省苏州市电信

      👍

      💖

      💯

      💦

      😄

      🪙

      👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
搜 索 消 息 足 迹
你还不曾留言过..
你还不曾留下足迹..
博主 不再显示
博主