写点什么

mysql 实现主主数据库 (双机热备)

用户头像
大奎
关注
发布于: 2021 年 03 月 27 日
mysql实现主主数据库(双机热备)

本文试验两个数据库都做主机同时做对方的从机来备份数据。


概述

来个比较好玩的 MMM 吧,就是传说中的 mysql master-master,第一次看到这个 MMM 暗地里以为什么高深的技术又够我好好折腾一阵子的,没想到就是配置主机对主机的同步备份,入门的难度不是太高。两台机器都是主机,又各自作为对方的从机接受对方发来的数据,这和 master-slave 基本实现原理是一样的。


特殊情况:做 MMM 当然是两台机器了,这里不太方便开另外的机器实验了,就在一台机器上安装了另外一个 5.1 版本的 sql 数据库,用 3307 端口。

具体步骤

1. 在 3306 的 shell 上建立 3306 端口服务器到 3307 端口服务器的 replication 用户 grant replication slave on . to ‘repl6to7’@’localhost’ identified by ‘repl6to7’

2. 在 3307 的 shell 上建立 3307 端口服务器到 3306 端口服务器的 replication 用户 grant replication slave on . to ‘repl7to6’@’localhost’ identified by ‘repl6to7’

3.  

4. 在 3306 服务器上配置文件 server-id   = 1 log-bin=binlog log-bin-index= binlog.index binlog-do-db=test replicate-do-db =test log-slave-updates syncbinlog=1 autoincrementincrement=2 autoincrement_offset=1

5. 在 3307 服务器上配置文件 server-id   = 2 log-bin=binlog log-bin-index= binlog.index binlog-do-db=test replicate-do-db =test log-slave-updates syncbinlog=1 autoincrementincrement=2 autoincrement_offset=2

6. 在不同的 shell 下重启两个 mysql 服务器

7. 在锁表后读取两个服务器作为主机的 logfile 和 pos 信息,分别执行 flush tables with read lock\G;和 show master status\G;后确保数据一致。

8. 设置两个服务器的 master 信息,这时两个服务器就被视为从机了,当然同时他们也是对方的主机。3306 机器执行:Change master to 

master_host=’localhost’,

master_port=’3307’,

master_user=’repl7to6’,

master_password=’repl6to7’,

masterlogfile=’binlog.000005’,

masterlogpos=566; 

3307 机器上执行 Change master to master_host=’localhost’,

master_port=’3306’,

master_user=’repl6to7’,

master_password=’repl6to7’,

masterlogfile=’binlog.000011’,

masterlogpos=265;

9. 各自开从机 start slave;查看那状态 show processlist\G;都有四个用户,root,repl 用户和两个备份服务用户。查看主从状态 show master status;show slave status;

10.解开锁就可以了,双主机搞定,测试去吧。

发布于: 2021 年 03 月 27 日阅读数: 12
用户头像

大奎

关注

忠于理想,面对现实。 2020.07.30 加入

大奎 gongqingkui at 126.com 对计算机、信息工程感兴趣。

评论

发布
暂无评论
mysql实现主主数据库(双机热备)