您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)如何進(jìn)行MySQL雙主補(bǔ)充,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
環(huán)境:
主機(jī)名 主機(jī)IP 操作系統(tǒng)
mysqlA 172.18.252.221 CentOS 6.5 2.6.32-431.el6.x86_64 mysqlB 172.18.252.222 MySQL版本 mysql-community-server-5.7.5-0.6.m15.el6.x86_64 MySQL雙主+半同步架構(gòu)搭建參考上一篇博文:https://blog.51cto.com/12947626/2125165 本文做一點(diǎn)補(bǔ)充說(shuō)明:如果mysqlA已經(jīng)運(yùn)行了一段時(shí)間,要添加一臺(tái)新的mysqlB, 與mysqlA實(shí)現(xiàn)主主復(fù)制,就要先復(fù)制mysqlA上的數(shù)據(jù)導(dǎo)入到mysqlB, 使數(shù)據(jù)保持一致;記錄mysqlA上binlog的文件名和Position,在mysqlB上執(zhí)行CHANGE MASTER TO ...;再記錄mysqlB上的binlog的文件名和Position,在mysqlA上執(zhí)行CHANGE MASTER.(導(dǎo)入到B的數(shù)據(jù)應(yīng)該是使用mysqlA的全量備份+binlog) 下面有兩種實(shí)現(xiàn)方法: 方法一、 1)對(duì)mysqlA數(shù)據(jù)庫(kù)鎖表操作,不讓數(shù)據(jù)再進(jìn)行寫(xiě)入動(dòng)作 > flush tables with read lock; > 不要退出連接,另開(kāi)一個(gè)終端執(zhí)行備份操作. 2)備份mysqlA的數(shù)據(jù)庫(kù) mysqldump --uroot -p --single-transaction --opt --events --triggers --routines --flush-logs --master-data=2 --databases db1 db2 >db.sql --flush-logs :選項(xiàng)用以生成新的二進(jìn)制日志文件(滾動(dòng)二進(jìn)制文件使其起始位置完全) --mater-data :選項(xiàng)值等于2 ,備份后的sql文件里CHANGE MASTER語(yǔ)句被注釋。 --single-transaction :InnoDB表在備份時(shí),通常啟用選項(xiàng) --single-transaction來(lái)保證備份的一致性,實(shí)際上它的工作原理是設(shè)定本次會(huì)話的隔離級(jí)別為: REPEATABLE READ,以確保本次會(huì)話(mysqldump)時(shí),不會(huì)看到其他會(huì)話提交了的數(shù)據(jù)。 3)看mysqlA數(shù)據(jù)庫(kù)的狀態(tài),記錄File和Position項(xiàng)的值后解鎖; show master status; unlock tables; 4)在mysqlB上導(dǎo)入mysqlA的數(shù)據(jù): > mysql -uroot -p 'repl' < db.sql 5)生成CHANGE MASTER 語(yǔ)句,然后在mysqlB上執(zhí)行 > STOP SLAVE; > CHANGE MASTER TO MASTER_HOST='172.18.252.221' , MASTER_USER='repl_user',MASTER_PASSWORD='repl' , MASTER_LOG_FIEL='mysql-bin.000002', MASTER_LOG_POS='120'; > START SLAVE; > SHOW SLAVE STATUS\G Slave_IO_Running和Slave_SQL_Running的狀態(tài),如果都為Yes,從庫(kù)mysqlB配置成功。 6)記錄mysqlB的binlogFile和Position項(xiàng)的值,生成CHANGE MASTER語(yǔ)句,然后在mysqlA上執(zhí)行如上操作(先stop slave;...),最后啟動(dòng)slave.
方法二、
1)備份A的數(shù)據(jù)庫(kù)(不用鎖表)
mysqldump -uroot -p --single-transaction --opt --flush-logs --events --triggers --routines --master-data=2 --databases db1 db2 > db.sql
2)使用grep -i "change master " db.sql
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002' , MASTER_LOG_POS=120;
OK,結(jié)果所示二進(jìn)制日志文件為mysql-bin.000002,位置為120
然后執(zhí)行方法一的4)、5)、6)即可
看完上述內(nèi)容,你們對(duì)如何進(jìn)行MySQL雙主補(bǔ)充有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。