最近在項目中遇到了要實現服務器上MySql數據雙向同步,在網上找了很多資料,但是大部分都是在liux系統下配置的,
而且都是互相轉載,沒有一個詳細的步驟,於是決定寫一個windows系統下的完整配置,與大家分享,如有不足之處,
請大家指正。
兩台服務器,操作系統均為window2012 數據中心版,其中一台服務器為A,IP地址為:192.168.1.2,另外一台為B,IP地址為:192.168.1.3
mysql 的版本最好保持一致,大版本號一定要一致,小更新不影響,比如5.6.10,5.6.11這兩個版本就算一致,如果一個是5.5,一個是5.6就不行
添加同步賬戶。向兩台服務器上的mysql添加賬戶,進入Mysql命令界面,輸入密碼進入。
如下圖:執行Mysql命令,mysql> grant replication slave,replication client on *.* to repl@'192.168.1.%' identified by '123456';
說明:repl是賬戶名稱,123456是對應的密碼,192.168.1.%是局域網內可訪問,也可指定某一台服務器,把%換成對應的IP即可。注:以上命令在A、B服務器上都要執行。
找到mysql的配置文件my.ini,在[mysqld]下面添加以下配置:
log_bin=mysql-bin #說明:log_bin:指定二進制日志文件的位置和命名
server_id=1 #server_id:MySql服務器標示,必須保證唯一
replicate_do_db=ftest #replicate_do_db:要同步的數據庫名稱,多個用逗號隔開,此項可不配置
sync_binlog=1 #sync_binlog:是否將二進制日志文件同步到磁盤上,大於0為開戶
log_slave_updates=1 #將事件自動寫到填制日志中注
注:保存文件後,要重新啟動MySql服務,然後同樣的操作在B服務器上操作一遍。(此處要注意server_id絕對不能相同,如果相同就會出錯)
兩台服務器配置完成以後,先在B服務器上開啟復制功能。這一步不需要修改my.ini文件,只需要執行mysql命令,以下是命令:
mysql> change master to master_host='192.168.1.2',
-> master_user='repl',
-> master_password='123456',
-> master_log_file='mysql-bin.000001',
-> master_log_pos=0;
說明:master_host:A服務器的IP地址
master_user:我們在第一步創建的同步賬號
master_password:對應的賬號密碼
master_log_file:二進制日志文件名稱,不一定是這個名稱,可以用命令來查看
用 show master status\g;來查詢名稱和pos
master_log_pos:用上面的命令可以查出來此值
用 show slave status\g; 來檢查復制是否已經正常運行,若Slave_IO_State為空,Slave_IO_Running、Slave_IO_Running為NO,
則復制功能未運行,我們用 start slave;來啟動 復制功能。
再用命令 show slave status\g; 查看,這時我們看到Slave_IO_State為:Waiting for master to send eventSlave_IO_Running、
Slave_SQL_Running為YES,表明配置已經成功,復制功能已經正常運行。然後配置A服務器,步驟和配置B服務器一樣。
注:一定要小心配置裡面的參數,要把對應的master_host、master_log_file、master_log_pos配置正確
測試數據是否同步成功,在A服務器上修改ftest數據庫的一個表數據,然後在B服務器上查看,數據是否變化了呢,如果變化了,
說明已經配置成功。然後修改B服務器的數據,再去A服務器上查看,如果數據也變化了,雙向同步 的數據同步功能就成功了.