mysql双主(互为主从)配置

回复 收藏
本帖最后由 lin19890913 于 2016-3-13 17:02 编辑

      今天尝试着把做了下mysql的双主(互为主从)配置,期间参考了别人的帖子,发现别人的帖子有部分遗漏,现在结合我自己的实际操作发一篇详细帖子记录详细的配置过程

       环境:
        为了方便,我在一台机子上用两个数据库实例做实验
拓扑结构:
        mysqlA<------->mysqlB


1.创建用户并授权
mysql1:
       mysql> GRANT REPLICATION SLAVE ON *.* TO 'sql2'@'127.0.0.1'  identified by
'sql2';
       mysql>flush privileges;

mysql2:
       mysql> GRANT REPLICATION SLAVE ON *.* TO 'sql1'@'127.0.0.1'  
identified by 'sql1';
       mysql>flush privileges;
2.修改Mysql的主配置文件
sql1:修改或添加
[mysqld]
server-id = 1
log-bin = mysql-bin
replicate-do-db = db1
auto-increment-increment = 2   //每次增长2
auto-increment-offset = 1 //设置自动增长的字段的偏移量,即初始值为1
修改添加完后重新启动Mysql1服务:
# service mysqld1 restart

sql2:修改或添加
[mysqld]
server-id = 2
log-bin = mysql-bin
replicate-do-db = db1
auto-increment-increment = 2  //每次增长2
auto-increment-offset = 2 //设置自动增长的字段的偏移量,即初始值为2
修改完后重新启动Mysql2服务:
# service mysqld2 restart
注:二都只有server-id不同和 auto-increment- offset不同auto-increment-increment的值应设为整个结构中服务器的总数,本案例用到两个实例,所以值设为2。


3.将两个实例的初始数据保持一致
  (1)在两个数据库实例上均创建数据库db1
     create database db1;

  (2)将mysql1的数据备份
     mysqldump -uroot -p -S /tmp/mysql1.sock mysql>123.sql
  (3)将123.sql都恢复到两个实例的db1中
     mysql -uroot -p -S /tmp/mysql1.sock db1<123.sql
     mysql -uroot -p -S /tmp/mysql2.sock db1<123.sql

4.然后两个服务器相互通告二进制日志的位置并启动复制功能:
   (1)在mysql1上锁表
       flush tables with read lock;
       show master status;  //记载前面两列的内容
      在mysql2上操作
       slave stop;
       change master to master_host='127.0.0.1', master_port=3306, master_user='sql2', master_password='sql2', master_log_file='mysql-bin.000001', master_log_pos=474952;
       slave start;
      在mysql1上解锁表:unlock tables;
      在mysql2上查看状态:show slave status\G;   看是否有两个YES
   (2)在mysql2上锁表  
          flush tables with read lock;
          show master status;  //记载前面两列的内容
          在mysql1上操作
           slave stop;
           change master to master_host='127.0.0.1', master_port=3307, master_user='sql1', master_password='sql1', master_log_file='mysql-bin.000002', master_log_pos=474952;
          slave start;
        在mysql2上解锁表:unlock tables;
        在mysql1上查看状态:show slave status\G;   看是否有两个YES
   PS:这两步都要操作!先(1)后(2)



5.测试:
(1)在mysql1上删掉db1的func表,然后去mysql2上查看db1上还有无func表
   (2)在mysql2上删掉db1的host表,然后去mysql1上查看db1上还有无host表
  
如果你的配置都正确,那么测试应该成功!


2016-03-13 17:00 举报
已邀请:
0

迷城

赞同来自:

不错
0

summer123

赞同来自:

+! 利用日志。通知双方
0

zyos

赞同来自:

{:7_228:}
0

prospect

赞同来自:

66666666666666
0

栋佐

赞同来自:

66666
0

栋佐

赞同来自:

本帖最后由 栋佐 于 2016-4-2 22:06 编辑

我刚才在看mysql的帖子,又看到了这一篇。
突然想到一个问题,互为主从会不会出现死循环?
就是说:
主 数据改变 -binlog - 从 改变数据 - binlog -又把这个binlog返回到主,主又重新复制一份数据 - binlog又反馈给从,从又复制一份??

还有,这个也可以像主从同步一样在一台机器上操作吧?

求师兄解答。
0

lin19890913

赞同来自:

栋佐 发表于 2016-4-2 22:05
我刚才在看mysql的帖子,又看到了这一篇。
突然想到一个问题,互为主从会不会出现死循环?
就是说:

想多了,不会出现这种情况,任何一方操作后,对方对其进行同步,同步完成就over了,你可以继续看看我的环形主从
0

栋佐

赞同来自:

lin19890913 发表于 2016-4-3 08:21
想多了,不会出现这种情况,任何一方操作后,对方对其进行同步,同步完成就over了,你可以继续看看我的环 ...

哦。找个时间我试试。
0

wsw13640218682

赞同来自:

师兄,那次我在环形主从那里问你的意思其实就是这样{:4_99:},我前两晚也是弄好了,只是新增的D和原来的A互为主从,BC继续做A的从,随便在A或D上操作都能同步,BC也都能同步。
http://www.apelearn.com/bbs/thread-11856-1-1.html
0

lin19890913

赞同来自:

本帖最后由 lin19890913 于 2016-4-3 18:07 编辑
wsw13640218682 发表于 2016-4-3 16:28
师兄,那次我在环形主从那里问你的意思其实就是这样,我前两晚也是弄好了,只是新增的D和原来的A互 ...

恩,这种架构不难,AD互为主从搭建好,然后A添加两个从BC,A或D上操作后,由于AD互为主从,相互之前会进行数据同步,而由于BC是A的从,当A的数据主动操作变更或被动对D同步变更后,BC就会对A进行同步,所以无论你是在A还是在D上操作,BC都能同步

我之前跟你讲过,是你自己始终没搞懂这个架构,把这个架构原理搞懂了就会了,居然纠结这么久
0

wsw13640218682

赞同来自:

lin19890913 发表于 2016-4-3 18:04
恩,这种架构不难,AD互为主从搭建好,然后A添加两个从BC,A或D上操作后,由于AD互为主从,相互之前会进 ...

我第一次弄,我的表述也是有点问题,思路可能不太清晰,后来也是参照了很多网上资料来配的,那晚回到家里将AD架构配置好,发现ABCD都各自数据同步(删表)失效了,第二天早上我再重新弄弄可以成功同步了。
刚才重新看看你的环形主从架构,DB做C的主(二主一从),A做BD的主(一主二从),我的理解应该没有错吧?
DB对C授权:grant replication slave on *.* to 'repl'@'C的ip' identified by '密码';
A对BD授权:grant replication slave on *.* to 'repl'@'B/D的ip' identified by '密码';
0

lin19890913

赞同来自:

wsw13640218682 发表于 2016-4-3 18:41
我第一次弄,我的表述也是有点问题,思路可能不太清晰,后来也是参照了很多网上资料来配的,那晚回到家里将 ...

你还是没理解!怎么可能二主一从,每个从只能有一个主,但是一个主可以有多个从
0

fh_panda

赞同来自:

0

wsw13640218682

赞同来自:

本帖最后由 wsw13640218682 于 2016-4-3 22:41 编辑
lin19890913 发表于 2016-4-3 20:02
你还是没理解!怎么可能二主一从,每个从只能有一个主,但是一个主可以有多个从

5.jpg
一个从只能对应一个主,上次你说过的了,我也记着了,但我按你的图里结构的方向箭头来看...好像就是有二主一从了

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: