環(huán)境
配置Mysql的MasterSlave至少需要兩臺機(jī)器。我這里使用三臺虛擬機(jī)進(jìn)行測試。三臺機(jī)器配置完全一樣,MySQL安裝的路徑也是一樣:
第一臺:10.1.5.181; Windows 2008 DataCenter + MySQL Community Server 5.6.10.1
第二臺:10.1.5.182; Windows 2008 DataCenter + MySQL Community Server 5.6.10.1
第三臺:10.1.5.183; Windows 2008 DataCenter + MySQL Community Server 5.6.10.1
第一臺10.1.5.181用作master,其他兩臺用做slave。
配置Master
在10.1.5.181這臺服務(wù)器上找到MySQL的配置文件my.ini。我的具體路徑是在C:\ProgramData\MySQL\MySQL Server 5.6下。
打開配置文件,在最下面添加如下配置:
************************************************************************************
#Master start
#日志輸出地址 主要同步使用
log-bin=master-bin.log
#同步數(shù)據(jù)庫
binlog-do-db=test
#主機(jī)id 不能和從機(jī)id重復(fù)
server-id=1
#Master end
************************************************************************************
master的配置比較少,server-id是為這一組master/slave服務(wù)器定的唯一id,master/slave服務(wù)器中不能重復(fù)。在binlog-do-db中填寫對象要同步的數(shù)據(jù)庫,如果有多個,用逗號分隔,或再寫一行如binlog-do-db=test2。
配置Slave
同樣在第二臺機(jī)器上10.1.5.181找到配置文件my.ini。打開配置文件,在最下面添加如下配置:
*****************************************************************************
report-host = 10.1.5.181
report-user = root
report-password = root123
log-bin = slave-bin.log
replicate-do-db = test
server-id = 2
*****************************************************************************
這里需要添加master的IP,連接master的用戶名和密碼,生產(chǎn)環(huán)境中需要新建一個用戶專門來處理replication,這里沒有新建用戶,用root做測試。端口沒有配置,就是使用默認(rèn)的3306,如果端口有變化,則通過report-port=?來配置。log-bin是記錄日志的位置。
然后通過命令start slave來啟動mysql的復(fù)制功能。如果在start slave過程中出現(xiàn)異常:
The server is not configured as slave; fix in config file or with CHANGE MASTER TO
可以通過下面語句解決:
change master to master_host='10.1.5.181',master_user='root',master_password='root123',master_log_file='master-bin.000001' ,master_log_pos=120;
使用show slave status 命令來查來看運(yùn)行狀態(tài)。特別關(guān)注兩個屬性,是否為“Yes”,如果都為“Yes”,則說明運(yùn)行正常。
Slave_IO_Running:連接到主庫,并讀取主庫的日志到本地,生成本地日志文件
Slave_SQL_Running:讀取本地日志文件,并執(zhí)行日志里的SQL命令。
同樣的配置再在第三臺機(jī)器上配置一下,server-id修改成3。重啟slave和master的mysqld服務(wù)。然后測試,在三臺服務(wù)器上都確保有數(shù)據(jù)庫test,然后在master服務(wù)器的test數(shù)據(jù)庫上建表和數(shù)據(jù),之后再兩臺slave上面都會看見數(shù)據(jù)的同步。
Mysql的MasterSlave同步時通過二進(jìn)制文件進(jìn)行同步的。在Master端,你可以在C:\ProgramData\MySQL\MySQL Server 5.6\data的master-bin.log日志文件里看見所有同步的sql腳本,master-bin.log是配置master時候輸入的。在slave端,你可以在MySQL02-relay-bin類似的文件中找到日志。