MySQL 雙向備份的實(shí)現(xiàn)方法
MySQL 雙向備份也被稱為 主主備份 ,即兩個(gè) MySQL 服務(wù)都是 Master,其中任意一個(gè)服務(wù)又是另一個(gè)服務(wù)的 Slave。
準(zhǔn)備
服務(wù)器
MySQL服務(wù)器 | 版本 | IP地址 |
---|---|---|
masterA | 5.6.41 | 192.168.1.201 |
masterB | 5.6.41 | 192.168.1.202 |
注:備份的 MySQL 服務(wù)器版本盡量保持一致,不同的版本可能二進(jìn)制日志格式不兼容。
具體操作
注意
操作過程中注意兩邊數(shù)據(jù)的一致?。?!
masterA 配置
my.cnf
[mysqld] # 服務(wù)器唯一標(biāo)識(shí) server-id=1 # 二進(jìn)制日志文件名 log-bin=mysql-bin # 需要備份的數(shù)據(jù)庫(kù),多個(gè)數(shù)據(jù)庫(kù)用 , 分隔 binlog-do-db=piumnl # 需要復(fù)制的數(shù)據(jù)庫(kù),多個(gè)數(shù)據(jù)庫(kù)用 , 分隔 replicate-do-db=piumnl # 中繼日志文件名 relay_log=mysqld-relay-bin # 手動(dòng)啟動(dòng)同步服務(wù),避免突然宕機(jī)導(dǎo)致的數(shù)據(jù)日志不同步 skip-slave-start=ON # 互為主從需要加入這一行 log-slave-updates=ON # 禁用符號(hào)鏈接,防止安全風(fēng)險(xiǎn),可不加 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 解析,會(huì)使授權(quán)時(shí)使用的域名無效 skip-host-cache skip-name-resolve sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
masterB 配置
my.cnf
# 不再解釋各個(gè)配置項(xiàng) [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
創(chuàng)建備份用戶
masterA & masterB 都要?jiǎng)?chuàng)建備份用戶:
create user 'rep'@'%' identified by 'rep'; # 創(chuàng)建一個(gè)賬戶 grant replication slave on *.* to 'rep'@'%'; # 授予該賬戶對(duì)任意數(shù)據(jù)庫(kù)任意表的主從備份權(quán)限
備注:
- Linux 下 MySQL 對(duì) root@% 用戶關(guān)閉了 grant_priv 權(quán)限,所以如果是遠(yuǎn)程登錄會(huì)出現(xiàn)授權(quán)失敗的情況
- 此處備份用戶帳號(hào)和密碼可不一致,此處為了簡(jiǎn)化操作使用一樣的帳號(hào)和密碼
重啟服務(wù)器
重啟服務(wù)器
開啟備份
masterA
查看 masterB 狀態(tài)
show master status\G; # 此處需要關(guān)注 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;
查看結(jié)果
show slave status\G; # 查看最重要的兩項(xiàng),兩個(gè)都必須為 Yes ,有一個(gè)為 No 都要去查看錯(cuò)誤日志文件,看看什么地方存在問題 # Slave_IO_Running: Yes # Slave_SQL_Running: Yes
masterB
反向重復(fù) masterA 的操作
測(cè)試
分別在 masterA 和 masterB 中插入數(shù)據(jù),并查看另一臺(tái)服務(wù)器是否及時(shí)出現(xiàn)預(yù)期的數(shù)據(jù)
問題
MySQL Slave Failed to Open the Relay Log
這應(yīng)該是中繼日志出現(xiàn)問題,可嘗試如下操作
stop slave; flush logs; start slave;
Got fatal error 1236 from master when reading data from binary log
從主庫(kù)中拉取日志時(shí),發(fā)現(xiàn)主庫(kù)的 mysql_bin.index 文件中的第一個(gè)文件不存在。
# 進(jìn)行如下操作重置 # 如果二進(jìn)制日志或中繼日志有其他作用,請(qǐng)勿進(jìn)行如下操作 reset master; reset slave; flush logs;
<database>.<table>
使用 <database>.<table> 進(jìn)行插入、更新和刪除操作,將不會(huì)進(jìn)行備份( 這是巨坑 )!??!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
淺析刪除表的幾種方法(delete、drop、truncate)
這篇文章主要介紹了刪除表的幾種方法,需要的朋友可以參考下2014-05-05MySQL數(shù)據(jù)庫(kù)操作DML?插入數(shù)據(jù),刪除數(shù)據(jù),更新數(shù)據(jù)
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)操作DML插入數(shù)據(jù),刪除數(shù)據(jù),更新數(shù)據(jù),DML是指數(shù)據(jù)操作語(yǔ)言,英文全稱是Data?Manipulation?Language,用來對(duì)數(shù)據(jù)庫(kù)中表的數(shù)據(jù)記錄進(jìn)行更新2022-07-07Mysql實(shí)現(xiàn)企業(yè)級(jí)日志管理、備份與恢復(fù)的實(shí)戰(zhàn)教程
下面小編就為大家分享一篇Mysql實(shí)現(xiàn)企業(yè)級(jí)日志管理、備份與恢復(fù)的實(shí)戰(zhàn)教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2017-12-12手把手教你Navicat如何導(dǎo)出Excel格式的表結(jié)構(gòu)
我們?cè)陂_發(fā)中使用數(shù)據(jù)庫(kù)時(shí)往往需要做一些備份之類的,或者需要導(dǎo)出下表結(jié)構(gòu)導(dǎo)入到其他數(shù)據(jù)庫(kù)等,下面這篇文章主要給大家介紹了關(guān)于Navicat如何導(dǎo)出Excel格式的表結(jié)構(gòu)的相關(guān)資料,需要的朋友可以參考下2023-04-04MySQL?Binlog日志的記錄模式寫入機(jī)制文件操作詳解
這篇文章主要介紹了MySQL?Binlog日志的記錄模式寫入機(jī)制文件操作詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07mysql 數(shù)據(jù)庫(kù)安裝經(jīng)驗(yàn)問題匯總
這篇文章主要介紹了mysql 數(shù)據(jù)庫(kù)安裝經(jīng)驗(yàn)問題匯總,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09