首頁 >資料庫 >mysql教程 >MYSQL雙主全函式庫同步複製的範例詳解

MYSQL雙主全函式庫同步複製的範例詳解

黄舟
黄舟原創
2018-05-10 15:37:433072瀏覽

環境:

A、B兩台伺服器分別安裝mysql-5.7.18服務端,設定成互為主從同步。

linux系統版本為CentOS7

A伺服器ip:192.168.1.7   主機名稱:test1

B伺服器ip:192.168.1.8   主機名稱:test2

。 #(同一區域網路下)

一、準備

  1.修改主機名稱

   指令:hostnamectl  set-hostname  xxx

   (檢視主機名稱指令:hostname)

  2.關閉防火牆

   1)查看防火牆狀態

    指令:firewall-cmd  --state

#state#  指令:firewall-cmd  --state

state#」  

   2)防火牆是運作狀態,先關閉防火牆服務

    指令:systemctl  mask  firewalld

   3)關閉防火牆#ff##」指令#d6p ##   4)檢查防火牆狀態

    指令:firewall-cmd  --state

[

    指令:firewall-cmd  --state

    策略結果:not  running

    策略結果:not  running

    策略結果:not  running

#1 4 1 檢視selinux運作狀態

    指令:getenforce

    結果:Enforcing

#    ##L

## 

#    ##L#se#17),需編輯 檔案vi  /etc/sysconfig/selinux修改SELINUX=disabled

    

   3)為關閉狀態

   3)為關閉狀態

    3)為關閉狀態

##  主伺服器(master)從伺服器(slave)

  1.開啟A伺服器的my.cnf檔案vi  /etc/my.cnf,在檔案的[mysqld]下新增如下內容

# server-id=1       #必須與其他伺服器不同,且必須為1~232之間的正整數值

log-bin=mysql-bin
   log-bin-index=mysql-bin

   

   在伺服器my.cnf檔案中的伺服器[ mysqld]下加入上圖內容,只更改server-id值即可。

server-id=2    
   log-bin=mysql-bin
   log-bin-index=mysql-bin

  2.在A伺服器中的mysql安裝路徑下(rpm安裝路徑為/var/lib/mysql)建立全庫備份檔all.sql。

   建立指令:

touch  /var/lib/mysql/all.sql

   備份指令:

[root@test1 mysql]# mysqldump -uroot -p123 --all-databases > /var/lib/mysql/all.sql

   把all.sql檔案拷貝到B伺服器中的某個路徑下(以路徑/var/lib/mysql把all.sql檔案拷貝到B伺服器中的某個路徑下(以路徑/var/lib/mysql為例)進行恢復。

   復原指令:

[root@test2 /]# mysql -uroot -p123 < /var/lib/mysql/all.sql

  3.在A、B伺服器的mysql中建立使用者用於同步。

   創建用戶:

mysql> create user &#39;tongbu&#39;@&#39;%&#39; identified by &#39;tongbu&#39;;

   授權:

mysql> grant all on *.* to &#39;tongbu&#39;@&#39;%&#39;;

   刪除用戶:

mysql> drop user &#39;用户名&#39;@&#39;%&#39;;

    A、B用戶創建用戶:

[root@test1 /]# mysql -utongbu -ptongbu -h192.168.1.8
   [root@test2 /]# mysql -utongbu -ptongbu -h192.168.1.7

    A、B用戶創建用戶:

mysql> stop slave;
    mysql> change master to
      -> master_host=&#39;192.168.1.7&#39;,
      -> master_user=&#39;tongbu&#39;,
      -> master_password=&#39;tongbu&#39;,
      -> master_log_file=&#39;mysql-bin.000024&#39;,
      -> master_log_pos=154;
    mysql> start slave;

    A、B用戶登陸mysql。

mysql> stop slave;
    mysql> change master to
      -> master_host=&#39;192.168.1.8&#39;,
      -> master_user=&#39;tongbu&#39;,
      -> master_password=&#39;tongbu&#39;,
      -> master_log_file=&#39;mysql-bin.000027&#39;,
      -> master_log_pos=154;
    mysql> start slave;
    mysql> show slave status\G 查看Slave_IO_Running和Slave_SQL_Running的值是否为Yes

   測試無問題後重啟A、B伺服器中的mysql服務:[root@test /]# service mysqld restart

  4.設定A為主伺服器,B為從伺服器。

   1)查看A伺服器mysql中的二進位日誌名稱與偏移量值

    指令:mysql> show master status\G

  指令:mysql> show master status\G

  指令:mysql> show master status\G

     

##   2)在B伺服器中設定連線伺服器###
slave-skip-errors = 1062,1032,1060
###    mysql> show slave status\G 輸入此指令查看Slave_IO_Running和Slave_SQL_Running的值是否為此指令查看Slave_IO_Running和Slave_SQL_Running的值是否為#es,如下圖##es, ##    #########  5.設定B為主伺服器,A為從伺服器。 ######   1)查看B伺服器mysql中的二進位日誌名稱與偏移量######    指令:mysql> show master status\G######  指令:mysql> show master status\G######  指令:mysql> show master status\G######  指令:mysql> show master status\G######                )在A伺服器中設定連接伺服器。 ###
mysql >slave stop;
 mysql >SET GLOBAL sql_slave_skip_counter = 1;
 mysql >slave start;
### ######至此兩台mysql資料庫互為主從同步設定完成。 ######錯誤排除:######1.Slave_IO_Running狀態錯誤###### 檢查MySQL> show slave status\G;時,Slave_IO_Running狀態為Connecting錯誤,出現的原因主要分為三種,需要檢查設定:###### 1)網路不通  ###### 2)帳戶權限設定錯誤,如密碼不對、帳號錯誤、位址錯誤  ####### 3)二進位檔案位置不對######2.主備資料衝突或不同造成的例外###

 主键冲突、表已存在等错误代码如1062,1032,1060等,可以在mysql配置文件指定略过此类异常并继续下条sql同步,这样可以避免很多主从同步的异常中断。打开/etc/ mysql下的my.cnf文件,在[mysqld]后添加如下代码:

slave-skip-errors = 1062,1032,1060

3. 跳过异常恢复同步

mysql >slave stop;
 mysql >SET GLOBAL sql_slave_skip_counter = 1;
 mysql >slave start;

以上是MYSQL雙主全函式庫同步複製的範例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn