Mysql的實(shí)時(shí)同步 - 雙機(jī)互備
Posted on 2012-07-11 07:31 S.l.e!ep.¢% 閱讀(785) 評(píng)論(0) 編輯 收藏 引用 所屬分類: DataBaseMysql的實(shí)時(shí)同步 - 雙機(jī)互備
Mysql的實(shí)時(shí)同步 - 雙機(jī)互備.
設(shè)置方法:
步一 設(shè)
A 服務(wù)服 (192.168.1.43) 上 用戶為 backup, 123456 , 同步的數(shù)據(jù)庫(kù)為test;
B 服務(wù)服 (192.168.1.23) 上 用戶為 root, 123456, 同步的數(shù)據(jù)庫(kù)為test;
步二 配置 mysql.ini:
A服務(wù)器
#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服務(wù)器
#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 表示需要備份的數(shù)據(jù)庫(kù)是test這個(gè)數(shù)據(jù)庫(kù),
如果需要備份多個(gè)數(shù)據(jù)庫(kù),那么應(yīng)該寫多行,如下所示:
binlog-do-db=backup1
binlog-do-db=backup2
binlog-do-db=backup3
解釋:
1) server-id=2表示本機(jī)器的序號(hào), A,B的server-id 不能相同;
2)log-bin表示打開binlog,打開該選項(xiàng)才可以通過I/O寫到Slave的relay-log,也是可以進(jìn)行replication的前提;
其中mysql_binary_log是日志文件的名稱,mysql將建立不同擴(kuò)展名,文件名為mysql_binary_log的幾個(gè)日志文件.
3) master-host="192.168.1.23" 表示A做slave時(shí)的master為192.168.1.23;
4) master-user=root 這里表示master上開放的一個(gè)有權(quán)限的用戶,使其可以從slave連接到master并進(jìn)行復(fù)制;
5) master-password=123456 表示授權(quán)用戶的密碼;
6) master-port=3306 master上MySQL服務(wù)Listen3306端口;
7) master-connect-retry=60 同步間隔時(shí)間;
8) replicate-do-db=test 表示同步backup數(shù)據(jù)庫(kù);
最后重新啟動(dòng)兩臺(tái)機(jī)器的mysql.
------------------------------------------------
查看狀態(tài) 及調(diào)試
1,查看master的狀態(tài)
SHOW MASTER STATUS;
Position 不應(yīng)為0
2,查看slave的狀態(tài)
show slave status;
Slave_IO_Running | Slave_SQL_Running 這兩個(gè)字段 應(yīng)為 YES|YES.
show processlist;
會(huì)有兩條記錄與同步有關(guān) state為 Has read all relay log; waiting for the slave I/O thread to update it
和s Waiting for master to send event .
3,錯(cuò)誤日志
MySQL安裝目錄\data\Hostname.err
4,CHANGE MASTER TO
如果A 的 Slave 未啟動(dòng) ,Slave_IO_Running 為No.
可能會(huì)是B的master 的信息有變化,
查看B SHOW MASTER STATUS;
記錄下 File,Position 字段. 假設(shè)為'mysql_binary_log.000004',98 ;
在A 下執(zhí)行:
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;
如果A的Slave_SQL_Running 為No.
Err文件中記錄:
Slave: Error 'Duplicate entry '1' for key 1' on query....
可能是master 未向slave 同步成功,但slave中已經(jīng)有了記錄。造成的沖突.
可以在A上執(zhí)行
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = n;
跳過幾步。再
restart salve;
就可以了。