生活随笔
收集整理的這篇文章主要介紹了
mysql双机热备实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
說明
?機器A:(172.16.1.251),機器B:(172.16.1.252)
兩臺機器都創建數據庫web:create database hello default charset utf8;
?
實現步驟
雙向熱備份:首先設置A上數據庫為master,B上的備份數據庫為slave;然后配置B上的數據庫為master,A上數據庫為slave
(1)修改 A和B上的 配置文件my.cnf,加入以下內容
?
?#機器A配置? server-id=7??????#?主ID,與從ID不能相同log-bin=mysql-0-bin?????#設定生成log文件名 ? ? ? ? ???binlog-do-db=web ? #設置同步數據庫名??binlog-ignore-db=mysql???#忽略同步mysql數據庫??replicate-do-db=web ? ?#?兩處web是一致的??replicate-ignore-db=mysql ??auto-increment-increment=10 ? ? ?# 插入id增長間隔auto-increment-offset=1 ? ? ? ?#從1開始增長
?#機器B配置 ? server-id=17 ? ? ?#?主ID,與從ID不能相同 ?log-bin=mysql-1-bin?????#設定生成log文件名 ? ? ? ? ???binlog-do-db=web ? #設置同步數據庫名??binlog-ignore-db=mysql???#忽略同步mysql數據庫??replicate-do-db=web ? #?兩處web是一致的??replicate-ignore-db=mysql ? auto-increment-increment=10 ? ? ?# 插入id增長間隔auto-increment-offset=2 ? ? ? ?#從2開始增長 ?
(2)重啟A和B上的mysql,兩臺機器上分別創建一個mysql用戶用來同步
? CREATE?USER?'usera'@'172.16.1.252'?IDENTIFIED?BY?'123456'; ??//usera為賬號,172.16.1.252表示賬號只能從指定id也就是B機器訪問,最后123456是密碼,機器A上執行 ?CREATE?USER?'usera'@'172.16.1.251'?IDENTIFIED?BY?'123456';???//機器B上執行?? ?
(3)設置用戶權限
?
? grant?replication?slave,reload?on?*.*?to?'usera'@'172.16.1.252'?IDENTIFIED?BY?'123456';??//??機器A上執行??grant?replication?slave,reload?on?*.*?to?'usera'@'172.16.1.251'?IDENTIFIED?BY?'123456';??//?機器B上執行?? ?
(4)設置A和B的主從聯系,B和A的主從聯系
//機器A上執行,A為slave?
? mysql>?change?master?to??????->?master_host?=?'172.16.1.252',??????->?master_port?=?3306,??????->?master_user?=?'usera',??????->?master_password?=?'123456'; ???
//機器B上執行,B為slave
mysql>?change?master?to??????->?master_host?=?'172.16.1.251',??????->?master_port?=?3306,??????->?master_user?=?'usera',??????->?master_password?=?'123456'; ??
因為是雙向備份,所以配置中很多操作是重復的,只是主從順序不一致,一個正向一個反向。
?
雙向備份說明
- ?主庫必須啟用Bin log,主庫和從庫必須有唯一的Server Id
- ?從庫必須清楚了解從主庫的哪一個Bin log文件的哪一個偏移位置起開始復制
- ?從庫可以從主庫只復制指定的數據庫,或者數據庫的某些數據表
- ?主庫和從庫的數據庫名稱可以不一樣,不過還是推薦使用一樣的名稱
- ?主庫和從庫的MySQL版本需保持一致
從MySQL3.23.15以后,MySQL支持單向的異步復制。也就是說,1臺MySQL服務器充當Master(主庫),1臺或多臺MySQL服務器充當Slaves(從庫),數據從Master向Slaves進行異步復制。注意,這種復制是異步的,有別于MySQL的同步復制實現(這種實現稱做MySQL集群,MySQL Cluster)。
當主庫有更新的時候,主庫會把更新操作的SQL寫入二進制日志(Bin log),并維護一個二進制日志文件的索引,以便于日志文件輪回(Rotate)。在從庫啟動異步復制的時候,從庫會開啟兩個I/O線程,其中一個線程連接主庫,要求主庫把二進制日志的變化部分傳給從庫,并把傳回的日志寫入本地磁盤。另一個線程則負責讀取本地寫入的二進制日志,并在本地執行,以反映出這種變化。較老的版本在復制的時候只啟用一個I/O線程,實現這兩部分的功能。
轉載于:https://www.cnblogs.com/rzxiaojia/p/6646091.html
總結
以上是生活随笔為你收集整理的mysql双机热备实现的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。