mysql主主同步設置

mysql主主同步設置mysql

主主同步設置是同等的地位,因此如下操做在兩臺機器上都須要進行並且操做是相同的。sql

  • 服務器數據庫

    服務器代號 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:ide

    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服務code

  • 查看做爲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)server

    B:ip

    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。 若是上面的操做發現不能同步,須要檢查以前的步驟。
相關文章
相關標籤/搜索