標籤:使用 另一個 變化 認同 集中 版本 複製 window star
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操作,看從資料庫中的資料有無變化。
windows下的mysql主從同步