zoukankan      html  css  js  c++  java
  • mysql主主同步设置

    mysql主主同步设置

    主主同步设置是同等的地位,所以以下操作在两台机器上都需要进行而且操作是相同的。

    • 服务器

      |服务器代号| IP| hostname|
      |---|---|---|
      |A | 192.168.70.128 |Debian1 |
      |B| 192.168.70.130 |Debian2 |

    • 创建同步账号
      分别在两台机器的mysql里面添加用户。如果需要制定特定的ip,只需将“%”替换成对应ip即可。

        mysql> grant replication slave on *.* to 'mysql'@'%' identified by "你的密码";
        Query OK, 0 rows affected (0.00 sec)
        
        mysql> flush privileges;
        Query OK, 0 rows affected (0.01 sec)
      

      添加之后,用该账号信息,在A上尝试访问B的mysql,同时也在B上尝试访问A的mysql。
      如果都可以访问,那么这一步就OK了。

    • 修改配置文件
      分别停止mysql服务,然后修改两台机器的my.cnf配置文件,开启bin-log功能,配置server-id。
      A:

        vi /etc/mysql/my.cnf
        
        [myqld]
        server-id               = 128
        log_bin                 =/your_path/
        slave-net-timeout       = 60   #默认3600秒,缩短时间为了防止双YES的延迟假象
        #binlog-do-db=osyunweidb   #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
        #binlog-ignore-db=mysql    #不同步mysql系统数据库
      

      B:

       vi /etc/mysql/my.cnf
        [myqld]
        server_id               = 130
        log_bin                 =/your_path/
        slave-net-timeout       = 60   
        #salve-net-timeout默认是3600秒,缩短时间是为了防止双YES的假象
        #binlog-do-db=osyunweidb   #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
        #binlog-ignore-db=mysql    #不同步mysql系统数据库
      
    • 重启mysql服务
      分别重启mysql服务

    • 查看作为master的状态
      为了防止在查看状态的时候数据库有数据变更,所以要先加上锁。
      A:

        mysql> flush tables with read lock;
        mysql> show master status G
        *************************** 1. row ***************************
                    File: mysql-bin.000003
                Position: 107
            Binlog_Do_DB:
        Binlog_Ignore_DB:
        1 row in set (0.00 sec)
      

      B:

        mysql> flush tables with read lock;
        mysql> show master status G
        *************************** 1. row ***************************
                    File: mysql-bin.000002
                Position: 433
            Binlog_Do_DB:
        Binlog_Ignore_DB:
        1 row in set (0.00 sec)
      
    • 作为slave指定对方为master
      根据master的状态信息填写下面的命令。

      A(192.168.70.128):
        change master to master_host='192.168.70.130', master_port=3306, master_user='mysql', master_password='lwj', master_log_file='mysql-bin.000002', master_log_pos=433;
      B(192.168.70.130):
        change master to master_host='192.168.70.128', master_port=3306, master_user='mysql', master_password='lwj', master_log_file='mysql-bin.000003', master_log_pos=107;
      
    • 重启slave
      分别取消锁,然后分别开启slave模式

        mysql>unlock tables;
        mysql>start slave;
      
    • 查看是否设置成功
      分别查看状态

        show slave status G
      

      如果有以下两个参数均为YES,则设置成功。

        Slave_IO_Running: Yes
        Slave_SQL_Running: Yes
      

      否则,设置失败。根据报错信息(Last_IO_Error或Last_SQL_Error字段)重新配置以上操作。

    • 测试

      • 在A上新建一个数据库test,然后在B上面test也会被创建。
      • 在B上的test库新建表user,然后查看A的test库也发现表user也创建了。
      • 在A上对表user进行CURD,对应的在B上也看到相应CURD。
        如果上面的操作发现不能同步,需要检查之前的步骤。
  • 相关阅读:
    627. Swap Salary
    176. Second Highest Salary
    596. Classes More Than 5 Students
    183. Customers Who Never Order
    181. Employees Earning More Than Their Managers
    182. Duplicate Emails
    175. Combine Two Tables
    620. Not Boring Movies
    595. Big Countries
    HDU 6034 Balala Power! (贪心+坑题)
  • 原文地址:https://www.cnblogs.com/fefjay/p/9687438.html
Copyright © 2011-2022 走看看