1. 程式人生 > >Mysql的實時同步

Mysql的實時同步

設定方法:

步一設

A 服務服 (192.168.1.43) 上使用者為 backup, 123456 , 同步的資料庫為test;

B 服務服 (192.168.1.23) 上使用者為 root, 123456, 同步的資料庫為test;

步二配置 mysql.ini:

A伺服器

#Replication master

server-id = 10

log-bin="E:\MySQL\logs\mysql_binary_log"//必須先建立這個檔案

binlog-do-db=test

# Replication slave

master-host="192.168.1.23"

master-user=root

master-password="123456"

master-port=3306

master-connect-retry=60

replicate-do-db=test

B伺服器

#Replication master

server-id = 2

log-bin="c:\mysql5\logs\mysql_binary_log"

binlog-do-db=test

# Replication slave

master-host="192.168.1.43"

master-user=backup

master-password=123456

master-port=3306

master-connect-retry=60

replicate-do-db=test

=============================================================

解釋:

3)binlog-do-db=test 表示需要備份的資料庫是test這個資料庫,

如果需要備份多個數據庫,那麼應該寫多行,如下所示:

binlog-do-db=backup1

binlog-do-db=backup2

binlog-do-db=backup3

解釋:

1) server-id=2表示本機器的序號, A,Bserver-id 不能相同;

2)log-bin表示開啟binlog,開啟該選項才可以通過I/O

寫到Slaverelay-log,也是可以進行replication的前提;

其中mysql_binary_log是日誌檔案的名稱,mysql將建立不同副檔名,檔名為mysql_binary_log的幾個日誌檔案.

3) master-host="192.168.1.23" 表示Aslave時的master192.168.1.23;

4) master-user=root 這裡表示master上開放的一個有許可權的使用者,使其可以從slave連線到master並進行復制;

5) master-password=123456 表示授權使用者的密碼;

6) master-port=3306 masterMySQL服務Listen3306;

7) master-connect-retry=60 同步間隔時間;

8) replicate-do-db=test 表示同步backup資料庫;

最後重新啟動兩臺機器的mysql.

------------------------------------------------

檢視狀態及除錯

1,檢視master的狀態

SHOW MASTER STATUS;

Position 不應為0

2,檢視slave的狀態

show slave status;

Slave_IO_Running | Slave_SQL_Running 這兩個欄位應為 YES|YES.

show processlist;

會有兩條記錄與同步有關 state Has read all relay log; waiting for the slave I/O thread to update it

s Waiting for master to send event .

3,錯誤日誌

MySQL安裝目錄\data\Hostname.err

4,CHANGE MASTER TO

如果A Slave 未啟動 ,Slave_IO_Running No.

可能會是Bmaster 的資訊有變化,

檢視B SHOW MASTER STATUS;

記錄下 File,Position 欄位. 假設為'mysql_binary_log.000004',98 ;

A 下執行:

Stop Slave;

CHANGE MASTER TO

MASTER_LOG_FILE = 'mysql_binary_log.000004',

MASTER_LOG_POS = 98 ;

Start Slave;

5,SET GLOBAL SQL_SLAVE_SKIP_COUNTER = n;

如果ASlave_SQL_Running No.

Err檔案中記錄:

Slave: Error 'Duplicate entry '1' for key 1' on query....

可能是master 未向slave 同步成功,slave中已經有了記錄。造成的衝突.

可以在A上執行

SET GLOBAL SQL_SLAVE_SKIP_COUNTER = n;

跳過幾步。再

restart salve;

就可以了。