環境:
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=disabled3)為關閉狀態
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 'tongbu'@'%' identified by 'tongbu';
授權:
mysql> grant all on *.* to 'tongbu'@'%';
刪除用戶:
mysql> drop user '用户名'@'%';A、B用戶創建用戶:
[root@test1 /]# mysql -utongbu -ptongbu -h192.168.1.8 [root@test2 /]# mysql -utongbu -ptongbu -h192.168.1.7A、B用戶創建用戶:
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;A、B用戶登陸mysql。
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測試無問題後重啟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中文網其他相關文章!