mysql复制模式第二部分-----双主模式
雙主配置
我在配置主從服務(wù)器時(shí),使用了兩臺(tái)服務(wù)器:10.19.34.126和10.19.34.91。
1、首先需要在這兩臺(tái)上搭建單獨(dú)的mysql服務(wù)masterA和masterB。
2、配置數(shù)據(jù)庫masterA,要對(duì)每一個(gè)數(shù)據(jù)庫服務(wù)配置唯一標(biāo)示,參數(shù)名為server-id,也可以通過ip來指定。修改my.conf文件參數(shù):
log-bin= mysql-bin #所有的數(shù)據(jù)操作寫入二進(jìn)制日志,便于將sql語句同步到中繼日志 auto-increment-offset=1 #自增長字段從那個(gè)數(shù)開始,他的取值范圍是1?..?65535 auto-increment-increment=2 #自增長字段每次遞增的量,其默認(rèn)值是1,取值范圍是1?..?65535 log_slave_updates=1 #該參數(shù)用來設(shè)置將中繼日志中的操作傳入二進(jìn)制日志,以便于該從數(shù)據(jù)庫作為其他實(shí)例的主庫。 replay_log=mysql-replay-bin #用來存儲(chǔ)中繼日志server-id=1
在主主同步配置時(shí),需要將兩臺(tái)服務(wù)器的auto_increment_increment增長量都配置為2,而要把a(bǔ)uto_increment_offset分別配置為1和2。這樣才可以避免兩臺(tái)服務(wù)器同時(shí)做更新時(shí)自增長字段的值之間發(fā)生沖突。
3、配置數(shù)據(jù)庫masterA,要對(duì)每一個(gè)數(shù)據(jù)庫服務(wù)配置唯一標(biāo)示,參數(shù)名為server-id,也可以通過ip來指定。修改my.conf文件參數(shù):
log-bin= mysql-bin #所有的數(shù)據(jù)操作寫入二進(jìn)制日志,便于將sql語句同步到中繼日志 auto-increment-offset=2 #自增長字段從那個(gè)數(shù)開始,他的取值范圍是1 .. 65535 auto-increment-increment=2 #自增長字段每次遞增的量,其默認(rèn)值是1,取值范圍是1 .. 65535 log_slave_updates=1 #該參數(shù)用來設(shè)置將中繼日志中的操作傳入二進(jìn)制日志,以便于該從數(shù)據(jù)庫作為其他實(shí)例的主庫。 replay_log=mysql-replay-bin #用來存儲(chǔ)中繼日志 server-id=24、在masterA數(shù)據(jù)庫上創(chuàng)建賬號(hào),通過這個(gè)賬號(hào)進(jìn)行同步主庫的二進(jìn)制日志到備庫的中繼日志。
MySQL>grant all on *.* to 'root'@'%' identified by '123456'
5、在masterB數(shù)據(jù)庫上創(chuàng)建賬號(hào),通過這個(gè)賬號(hào)進(jìn)行同步主庫的二進(jìn)制日志到備庫的中繼日志。
MySQL>grant all on *.* to 'root'@'%' identified by '123456'
6、在masterA服務(wù)器上查看當(dāng)前二進(jìn)制日志名和偏移量值:
MySQL>?show?master?status;
7、在masterB服務(wù)器上首先停止復(fù)制服務(wù),然后設(shè)置從服務(wù)器的同步點(diǎn),最后開啟同步服務(wù):
MySQL>?stop?slave;
MySQL>?CHANGE MASTER TO MASTER_HOST="10.19.34.126",MASTER_USER="root",MASTER_PASSWORD="123456",MASTER_PORT=3306,MASTER_LOG_FILE="mysql-bin.000003",MASTER_LOG_POS=393044781,MASTER_CONNECT_RETRY=10;
MySQL>?start?slave;
8、在masterB服務(wù)器上查看當(dāng)前二進(jìn)制日志名和偏移量值:
MySQL>?show?master?status;
9、在masterA服務(wù)器上首先停止復(fù)制服務(wù),然后設(shè)置從服務(wù)器的同步點(diǎn),最后開啟同步服務(wù):
MySQL>?stop?slave;
MySQL>?CHANGE MASTER TO MASTER_HOST="10.19.34.91",MASTER_USER="root",MASTER_PASSWORD="123456",MASTER_PORT=3306,MASTER_LOG_FILE="?mysql-bin.000004",MASTER_LOG_POS=393044425?,MASTER_CONNECT_RETRY=10;
MySQL>?start?slave;
雙主的部分詳解
在配置雙主時(shí),可能有人會(huì)想到在將主數(shù)據(jù)庫A的數(shù)據(jù)操作同步到主數(shù)據(jù)庫B的中繼器,由于開啟了log_slave_updates參數(shù),主數(shù)據(jù)庫B從主數(shù)據(jù)庫A同步的語句從中繼日志轉(zhuǎn)儲(chǔ)到二進(jìn)制日志中。由于是雙向復(fù)制是否會(huì)出現(xiàn)該語句又同步到了數(shù)據(jù)庫A中,答案是不可能的,因?yàn)樵诙M(jìn)制日志中會(huì)標(biāo)示該條語句是來自哪個(gè)數(shù)據(jù)庫實(shí)例,如果標(biāo)示數(shù)據(jù)庫A,則不會(huì)循環(huán)同步到數(shù)據(jù)庫A。如果該數(shù)據(jù)庫的搭建模式只是雙主模式,沒有改屬豬模式的從數(shù)據(jù)庫,可以將log_slave_updates參數(shù)關(guān)閉,所有的同步復(fù)制不會(huì)轉(zhuǎn)儲(chǔ)到二進(jìn)制日志,也避免了循環(huán)復(fù)制。
應(yīng)有備庫的雙主模式
1、對(duì)雙主模式中的兩個(gè)數(shù)據(jù)庫配置文件中添加配置參數(shù):log_slave_updates=1。
2、查看masterA和masterB的二進(jìn)制日志的文件和同步點(diǎn)。
3、在masterA和masterB的兩個(gè)備庫上都要執(zhí)行以下指令,實(shí)現(xiàn)數(shù)據(jù)同步:
MySQL>?stop?slave;
MySQL>?CHANGE MASTER TO MASTER_HOST="10.19.34.91",MASTER_USER="root",MASTER_PASSWORD="123456",MASTER_PORT=3306,MASTER_LOG_FILE="?mysql-bin.000004",MASTER_LOG_POS=393044425?,MASTER_CONNECT_RETRY=10;
MySQL>?start?slave;
雙主實(shí)現(xiàn)自動(dòng)切換
?
轉(zhuǎn)載于:https://www.cnblogs.com/youzhongmin/p/9569968.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的mysql复制模式第二部分-----双主模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python基础知识 - Day4
- 下一篇: SQL Server2012 安装方法