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。
      如果上面的操作發現不能同步,需要檢查之前的步驟。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM