明輝手游網(wǎng)中心:是一個免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

MYSQL雙主全庫同步復(fù)制的示例詳細(xì)說明

[摘要]環(huán)境:A、B兩臺服務(wù)器分別安裝mysql-5.7.18服務(wù)端,配置成互為主從同步。linux系統(tǒng)版本為CentOS7A服務(wù)器ip:192.168.1.7 主機(jī)名:test1B服務(wù)器ip:192....
環(huán)境:

A、B兩臺服務(wù)器分別安裝mysql-5.7.18服務(wù)端,配置成互為主從同步。

linux系統(tǒng)版本為CentOS7

A服務(wù)器ip:192.168.1.7 主機(jī)名:test1

B服務(wù)器ip:192.168.1.8 主機(jī)名:test2

(同一局域網(wǎng)下)

一、準(zhǔn)備

  1.修改主機(jī)名

   命令:hostnamectl set-hostname xxx

   (查看主機(jī)名 命令:hostname)

  2.關(guān)閉防火墻

   1)查看防火墻狀態(tài)

    命令:firewall-cmd --state

    結(jié)果:running

   2)防火墻是運(yùn)行狀態(tài),先關(guān)閉防火墻服務(wù)

    命令:systemctl mask firewalld

   3)關(guān)閉防火墻

    命令:systemctl stop firewalld

   4)檢查防火墻狀態(tài)

    命令:firewall-cmd --state

    結(jié)果:not running

  3.關(guān)閉selinux策略

   1)查看selinux運(yùn)行狀態(tài)

    命令:getenforce

    結(jié)果:Enforcing

    MYSQL雙主全庫同步復(fù)制的示例詳解

   2)永久性關(guān)閉(需重啟電腦),編輯selinux文件vi /etc/sysconfig/selinux修改SELINUX=disabled

    MYSQL雙主全庫同步復(fù)制的示例詳解

   3)為關(guān)閉狀態(tài)

    MYSQL雙主全庫同步復(fù)制的示例詳解

二、配置主服務(wù)器(master)從服務(wù)器(slave)

  1.打開A服務(wù)器的my.cnf文件vi /etc/my.cnf,在文件的[mysqld]下添加如下內(nèi)容

   server-id=1 #必須與其他服務(wù)器不同,且必須為1~232之間的正整數(shù)值

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

   MYSQL雙主全庫同步復(fù)制的示例詳解

   在B服務(wù)器my.cnf文件中的[mysqld]下添加上圖內(nèi)容,只更改server-id值即可。

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

  2.在A服務(wù)器中的mysql安裝路徑下(rpm安裝路徑為/var/lib/mysql)創(chuàng)建全庫備份文件all.sql。

   創(chuàng)建命令:

touch  /var/lib/mysql/all.sql

   備份命令:

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

   把a(bǔ)ll.sql文件拷貝到B服務(wù)器中的某個路徑下(以/var/lib/mysql路徑為例)進(jìn)行恢復(fù)。

   恢復(fù)命令:

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

  3.在A、B服務(wù)器的mysql中創(chuàng)建用戶用于同步。

   創(chuàng)建用戶:

mysql> create user 'tongbu'@'%' identified by 'tongbu';

   授權(quán):

mysql> grant all on *.* to 'tongbu'@'%';

   刪除用戶:

mysql> drop user '用戶名'@'%';

   A、B服務(wù)器用戶創(chuàng)建完成后,測試用戶相互是否可以遠(yuǎn)程登陸mysql。

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

   測試無問題后重啟A、B服務(wù)器中的mysql服務(wù):[root@test /]# service mysqld restart

  4.設(shè)置A為主服務(wù)器,B為從服務(wù)器。

   1)查看A服務(wù)器mysql中的二進(jìn)制日志名和偏移量值

    命令:mysql> show master status\G

    如下圖

    MYSQL雙主全庫同步復(fù)制的示例詳解

   2)在B服務(wù)器中配置連接服務(wù)器

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

    mysql> show slave status\G 輸入此命令查看Slave_IO_Running和Slave_SQL_Running的值是否為Yes,如下圖

    MYSQL雙主全庫同步復(fù)制的示例詳解

  5.設(shè)置B為主服務(wù)器,A為從服務(wù)器。

   1)查看B服務(wù)器mysql中的二進(jìn)制日志名和偏移量

    命令:mysql> show master status\G

    MYSQL雙主全庫同步復(fù)制的示例詳解

   2)在A服務(wù)器中配置連接服務(wù)器。

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

至此兩臺mysql數(shù)據(jù)庫互為主從同步配置完成。

錯誤排查:

1.Slave_IO_Running狀態(tài)錯誤

 檢查MySQL> show slave status\G;時,Slave_IO_Running狀態(tài)為Connecting錯誤,出現(xiàn)的原因主要分為三種,需要檢查配置:

 1)網(wǎng)絡(luò)不通

 2)賬戶權(quán)限配置錯誤,如密碼不對、賬號錯誤、地址錯誤

 3)二進(jìn)制文件位置不對

2.主備數(shù)據(jù)沖突或不同造成的異常

 主鍵沖突、表已存在等錯誤代碼如1062,1032,1060等,可以在mysql配置文件指定略過此類異常并繼續(xù)下條sql同步,這樣可以避免很多主從同步的異常中斷。打開/etc/ mysql下的my.cnf文件,在[mysqld]后添加如下代碼:

slave-skip-errors = 1062,1032,1060

3. 跳過異常恢復(fù)同步

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

以上就是MYSQL雙主全庫同步復(fù)制的示例詳解的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!


學(xué)習(xí)教程快速掌握從入門到精通的SQL知識。