溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

如何進(jìn)行MySQL雙主補(bǔ)充

發(fā)布時(shí)間:2021-10-08 16:02:34 來(lái)源:億速云 閱讀:167 作者:柒染 欄目:MySQL數(shù)據(jù)庫(kù)

今天就跟大家聊聊有關(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è)資訊頻道,感謝大家的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI