您好,登錄后才能下訂單哦!
下面這篇文章是關于實現MySQL雙向備份的詳細方法,文字的奧妙在于貼近主題相關。所以,閑話就不談了,我們直接看下文吧,相信看完實現MySQL雙向備份的詳細方法你一定會有所受益。
MySQL 雙向備份也被稱為 主主備份 ,即兩個 MySQL 服務都是 Master,其中任意一個服務又是另一個服務的 Slave。
準備
MySQL服務器 | 版本 | IP地址 |
---|---|---|
masterA | 5.6.41 | 192.168.1.201 |
masterB | 5.6.41 | 192.168.1.202 |
注:
備份的 MySQL 服務器版本盡量保持一致,不同的版本可能二進制日志格式不兼容。
具體操作
操作過程中注意兩邊數據的一致!!!
my.cnf
[mysqld] # 服務器唯一標識 server-id=1 # 二進制日志文件名 log-bin=mysql-bin # 需要備份的數據庫,多個數據庫用 , 分隔 binlog-do-db=piumnl # 需要復制的數據庫,多個數據庫用 , 分隔 replicate-do-db=piumnl # 中繼日志文件名 relay_log=mysqld-relay-bin # 手動啟動同步服務,避免突然宕機導致的數據日志不同步 skip-slave-start=ON # 互為主從需要加入這一行 log-slave-updates=ON # 禁用符號鏈接,防止安全風險,可不加 symbolic-links=0 # 可不加 # resolve - [Warning] Slave SQL: If a crash happens this configuration does not guarantee that the relay log info will be consistent, Error_code: 0 master-info-repository=table relay-log-info-repository=table relay-log-recovery=1 # 可不加 # 禁用 dns 解析,會使授權時使用的域名無效 skip-host-cache skip-name-resolve sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
my.cnf
# 不再解釋各個配置項 [mysqld] server-id=2 log-bin=mysql-bin binlog-do-db=piumnl replicate-do-db=piumnl relay_log=mysql-relay-bin skip-slave-start=ON log-slave-updates=ON symbolic-links=0 # resolve - [Warning] Slave SQL: If a crash happens this configuration does not guarantee that the relay log info will be consistent, Error_code: 0 master-info-repository=table relay-log-info-repository=table relay-log-recovery=1 skip-host-cache skip-name-resolve sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
masterA & masterB 都要創建備份用戶:
create user 'rep'@'%' identified by 'rep'; # 創建一個賬戶 grant replication slave on *.* to 'rep'@'%'; # 授予該賬戶對任意數據庫任意表的主從備份權限
備注:
root@%
用戶關閉了 grant_priv
權限,所以如果是遠程登錄會出現授權失敗的情況重啟服務器
masterA
查看 masterB 狀態
show master status\G; # 此處需要關注 File 和 Position 值
開啟備份
stop slave; # master_log_file 就是第一步操作的 File 值 # master_log_pos 就是第一步操作的 Position 值 change master to master_host=<master_hostname>, master_user=<rep_username>, master_port=<master_port>, master_password=<rep_password>, master_log_file='mysql-log.000003', master_log_pos=154; start slave;
查看結果
show slave status\G; # 查看最重要的兩項,兩個都必須為 Yes ,有一個為 No 都要去查看錯誤日志文件,看看什么地方存在問題 # Slave_IO_Running: Yes # Slave_SQL_Running: Yes
masterB
反向重復 masterA 的操作
分別在 masterA 和 masterB 中插入數據,并查看另一臺服務器是否及時出現預期的數據
這應該是中繼日志出現問題,可嘗試如下操作
stop slave; flush logs; start slave;
從主庫中拉取日志時,發現主庫的 mysql_bin.index 文件中的第一個文件不存在。
# 進行如下操作重置 # 如果二進制日志或中繼日志有其他作用,請勿進行如下操作 reset master; reset slave; flush logs;
對于以上實現MySQL雙向備份的詳細方法的內容,大家還有什么不明白的地方嗎?或者想要了解更多相關,可以繼續關注我們的行業資訊板塊。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。