mysql雙主同步

在實際項目中,兩臺分佈於異地的主機上安裝有MYSQL數據庫,兩臺服務器互爲主備,客戶要求當其中一臺機器出現故障時,另一臺可以接管服務器上的應用,這就須要兩臺數據庫的數據要實時保持一致,在這裏使用MYSQL的同步功能實現雙機的同步複製。mysql

1、數據庫同步設置sql

  主機操做系統:centos數據庫

  數據庫版本:mysql Ver 14.12 Distrib 5.0.22centos

  前提:MYSQL數據庫正常啓動服務器

  假設兩臺主機地址分別爲:網絡

ServA192.168.0.101  ServB192.168.0.203ide

Iptables 開發3306端口測試

1.1 配置同步帳號spa

ServA受權一個ServB能夠登陸的賬號:操作系統

GRANT all privileges ON *.* TO root@'192.168.0.203' IDENTIFIED BY '123456';

ServB受權一個ServA能夠登陸的賬號:

GRANT all privileges ON *.* TO root@'192.168.0.101' IDENTIFIED BY '123456';

1.2 配置數據庫參數

  1、 以root用戶登陸ServA,修改ServAmy.cnf文件

  vi /etc/my.cnf

  在[mysqld]的配置項中增長以下配置:

default-character-set=utf8

log-bin=mysql-bin

relay-log=relay-bin

relay-log-index=relay-bin-index

server-id=1

master-host=192.168.0.203

master-user=root

master-password=123456

master-port=3306

master-connect-retry=30

binlog-do-db=abc

replicate-do-db=abc

replicate-ignore-table=umsdb.boco_tb_menu

replicate-ignore-table=umsdb.boco_tb_connect_log

replicate-ignore-table=umsdb.boco_tb_data_stat

replicate-ignore-table=umsdb.boco_tb_log_record

replicate-ignore-table=umsdb.boco_tb_workorder_record

 

2、以root用戶登陸ServB,修改ServBmy.cnf文件

  vi /etc/my.cnf

[mysqld]的配置項中增長以下配置:

 

default-character-set=utf8

log-bin=mysql-bin

relay-log=relay-bin

relay-log-index=relay-bin-index

server-id=2

master-host=192.168.0.101

master-user=root

master-password=123456

master-port=3306

master-connect-retry=30

binlog-do-db=abc

replicate-do-db=abc

replicate-ignore-table=umsdb.boco_tb_menu

replicate-ignore-table=umsdb.boco_tb_connect_log

replicate-ignore-table=umsdb.boco_tb_data_stat

replicate-ignore-table=umsdb.boco_tb_log_record

replicate-ignore-table=umsdb.boco_tb_workorder_record

 

1.3 手工執行數據庫同步

  假設以ServA爲主服務器,在ServB上重啓mysql

  service mysqld restart

  在ServB上用root用戶登陸mysql,執行:

  Mysql> stop slave;

  Mysql> load data from master;

  Mysql> start slave;

  在ServA上重啓mysql

  service mysqld restart

  1.4 查看數據庫同步狀態

  在mysql命令提示符下執行:

  Mysql> show slave status\G

將顯示同步進程的狀態,以下所示,若是都爲yes表示正常;

wKiom1OrmlmQKK8yAAQuCWNtrpg127.jpg

wKioL1Ormi7QpTkyAARbOJUXGi8314.jpg



 

3、 數據庫同步測試

  配置完數據庫後進行測試,首先在網絡正常狀況下測試,在ServA上進行數據庫操做,和在ServB上進行數據庫操做,數據都可以同步過去。

  拔掉ServB主機上的網線,而後在ServA上作一些數據庫操做,以後再恢復ServB的網絡環境,可是在ServB上卻看不到同步的數據,經過命令show slave status\G查看發現Slave_IO_Running的狀態是No,這種狀態持續很長一段時間,數據才能同步到ServB上去。這是什麼問題呢?同步延遲不會這麼大吧。後來經過網上查找相關資料,找到一個同步延遲相關的參數:

  --slave-net-timeout=seconds

  參數含義:當slave從主數據庫讀取log數據失敗後,等待多久從新創建鏈接並獲取數據。

  因而在配置文件中增長該參數,設置爲60

  slave-net-timeout=60

  重啓MYSQL數據庫後測試,該問題解決。

相關文章
相關標籤/搜索