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.解开锁就可以了,双主机搞定,测试去吧。
版权声明: 本文为 InfoQ 作者【大奎】的原创文章。
原文链接:【http://xie.infoq.cn/article/7bdcf38e60550102a4b26f131】。文章转载请联系作者。
评论