• MySQL主从架构之Master-Master互为主备


    前言

      通常,为了简化逻辑,master会设置为只读,正常只通过slave进行读写。 若要两边都写,为了避免自增id冲突,一般会设置奇偶错开,即一台的自增ID均为奇数,另一台均为偶数。

    基本原理

     首先,slave开启log_bin二进制日志,这里面记录了数据的修改日志,这是同步的基础。

       然后,master配置slave的连接信息,监听slave的修改日志message。

       最后,slave一旦有修改,立即向master发送通知,然后master接收到log_bin日志,进行相关数据操作。实现数据同步。

       master-master和master-slave的区别只是互为master和slave。仅此而已。

        

    具体操作

    1.两台相同版本的mysql服务器。为了简便,我是在win下复制两份mysql在同一台机器上执行。一台端口3307 m1,另一台3308 m2。(这里是slave同步master的数据,和前言刚好相反)

    2.修改m1,m2配置文件my.ini,在linux下当然是my.conf。配置如下

    m1

    [mysqld]
    port = 3307
    server-id = 1
    log_bin = E:/np/mysql32_2/log_bin/mysql_log_bin #开启log_bin
    binlog_do_db = a #开启log_bin的数据库

    m2

    [mysqld]
    port = 3308
    server-id = 2
    log_bin = E:/np/mysql32_2/log_bin/mysql_log_bin #开启log_bin
    binlog_do_db = a #开启log_bin的数据库

     注:其实如果是master-slave模式,m2配置里面的log_bin和binlog_do_db都不需要。这里我们配置的是master-master。

    3.启动两个数据库,首先配置m1为m2的master

    进入m1>显示master的状态

    show master status

    输出结果如下:

    mysql_log_bin.000007	796	a		
    

    证明主库已经做好准备。

    进入m2>绑定master为m1,其中master_log_file为上述master的File值mysql_log_bin.000007

    change master to master_host='localhost',master_user='root',master_password='123456',master_port=3308,master_log_pos=0,master_log_file='mysql_log_bin.000007'

    m2>继续执行,查看绑定的结果

    show slave status

    可以看到Slave_IO_Running | Slave_SQL_Running两个值都是NO,证明还没启动同步

    m2>继续执行,启动同步

    start slave;  

    可以看到Slave_IO_Running | Slave_SQL_Running两个值都是YES,启动成功。

    至此,我们已经配置好了mysql主从同步。接下来,如法炮制,在m1上绑定m2为master。就完成了互为主备的mysql同步。

    关闭或者取消同步

    暂时关闭, 暂时不向master同步数据

    stop slave

    彻底取消向master的同步

     stop slave;
     change master to master_host=' '; --注意里面是一个空格,而不是什么都木有。

    测试

    随意更改两个库的表数据,能同步,证明配置成功。

    注意问题

    1.我发现重启数据库,该配置仍然生效而且不用start slave。同步自动开启了,估计是把配置信息持久化了。

    2.未开始同步之前,必须保持两个库的数据完全一致,不然会导致不一致的表的数据无法同步。

    3.出现2的问题,,手动把数据改成一致,然后再更改数据,同步立马回复正常。

    暗夜之中,才见繁星;危机之下,暗藏转机;事在人为,为者常成。
  • 相关阅读:
    opencv-识别手写数字
    opencv-图像遍历
    533. Lonely Pixel II
    531. Lonely Pixel I
    495. Teemo Attacking
    370. Range Addition
    487. Max Consecutive Ones II
    485. Max Consecutive Ones
    414. Third Maximum Number
    90. Subsets II
  • 原文地址:https://www.cnblogs.com/zenghansen/p/4878131.html
Copyright © 2020-2023  润新知