1. 程式人生 > >mysql在windows下主從同步配置

mysql在windows下主從同步配置

mysql5 版本 文件 數據庫復制 exe change ast 授權 create

mysql主從同步:

1.為什麽要主從同步?

在Web應用系統中,數據庫性能是導致系統性能瓶頸最主要的原因之一。尤其是在大規模系統中,數據庫集群已經成為必備的配置之一。集群的好處主要有:查詢負載、數據庫復制備份等。其中Master負責寫操作的負載,也就是說一切寫的操作都在Master上進行,而讀的操作則分攤到Slave上進行。這樣一來的可以大大提高讀取的效率。寫操作涉及到鎖的問題,不管是行鎖還是表鎖還是塊鎖,都是比較降低系統執行效率的事情。我們這樣的分離是把寫操作集中在一個節點上,而讀操作其其他的N個節點上進行,從另一個方面有效的提高了讀的效率,保證了系統的高可用性。

2.mysql主從同步

我的要同步的兩臺mysql數據庫版本都是mysql5.6,兩臺電腦都在同一個網段之中。

①修改主數據庫my.ini配置:

Server-id = 1 這是數據庫ID,此ID是唯一的,ID值不能重復,否則會同步出錯;

log-bin = mysql-bin 二進制日誌文件,此項為必填項,否則不能同步數據;如果不取名字的話,那麽就會以 計算機的名字加編號來命名二進制文件;

binlog-do-db = testcreate 需要同步的數據庫,如果還需要同步另外的數據庫,那麽繼續逐條添加,如果 不寫,那麽默認同步所有的數據庫;

binlog-ignore-db = mysql 不需要同步的數據庫;

修改完成之後重啟mysql服務。

註意點:在linux下,只需要修改/etc/my.cnf即可,但是在windows下,我改了安裝目錄下的my.ini,發現配置 並不生效,後來我看到了服務中的mysql服務的屬性,發現了這麽一句話:"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe" --defaults- file="C:\ProgramData\MySQL\MySQL Server 5.6\my.ini" MySQL56,原來mysql服務讀取的配置文件在這裏,後來修改了這個路徑下的my.ini,重啟服務,配置就生效 了。

② 添加主數據庫用於同步的賬號:

給主數據庫授權一個可以進行復制的用戶,執行如下命令:

grant replication slave on *.* to ‘slave‘@‘%‘ identified by ‘123‘;

③顯示主數據庫的同步信息:

技術分享

可以看出已經產生了二進制的日誌文件信息,mysql的同步就是通過這個二進制日誌文件進行同步,主數據庫把 對數據庫的操作的指令都記錄到該日誌文件下,從數據庫通過讀取該文件,來對從數據庫中的數據進行修改, 從而達到主從同步的效果。

④配置從數據庫的my.ini

從數據庫的話只需要配置server-id,binlog-do-db,binlog-ignore-db即可。

⑤設置從數據庫鏈接到主數據庫

在mysql下執行slave stop命令,停止slave服務;

mysql> change master to

-> master_host=‘192.168.1.189‘,

-> master_user=‘slave‘,

-> master_password=‘123‘,

-> master_log_file=‘mysql-bin000014.000001‘,

-> master_log_pos=107;

註意:這裏的master_log_file,master_log_pos的值要和master的值一致。否則會無法同步。

執行slave start命令,啟動服務。

註意:在這裏可能會無法鏈接到主數據庫,需要看主數據庫中my.ini中bind 127.0.0.1是否沒有被註釋,如果 沒有,那麽只能在本機登錄,而不能使用遠程登錄方式。

⑥驗證是否同步:

執行show slave status\G;

得到如下結果則說明同步成功。

技術分享

也可以在主數據庫被同步的表中做crud操作,看從數據庫中的數據有無變化。

mysql在windows下主從同步配置