在GTID-based復(fù)制中,如何擴(kuò)容一個(gè)只讀實(shí)例?
成都創(chuàng)新互聯(lián)專注于企業(yè)網(wǎng)絡(luò)營(yíng)銷推廣、網(wǎng)站重做改版、桑珠孜網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁(yè)面制作、商城建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為桑珠孜等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。這里使用mysqldump工具在Master節(jié)點(diǎn)上進(jìn)行數(shù)據(jù)備份,注意一個(gè)關(guān)鍵參數(shù):--set-gtid-purged[=name],該參數(shù)代表在備份文件中,哪些GTID已執(zhí)行過(guò)了,在change master時(shí),復(fù)制將從這些GTID之后進(jìn)行。
--set-gtid-purged[=name]
Add 'SET @@GLOBAL.GTID_PURGED' to the output. Possible
values for this option are ON, OFF and AUTO. If ON is
used and GTIDs are not enabled on the server, an error is
generated. If OFF is used, this option does nothing. If
AUTO is used and GTIDs are enabled on the server, 'SET
@@GLOBAL.GTID_PURGED' is added to the output. If GTIDs
are disabled, AUTO does nothing. If no value is supplied
then the default (AUTO) value will be considered.
mysqldump命令如下:
$ bin/mysqldump --user=root --password='123456' --socket=/home/mysql/mysql3309/tmp/mysql.sock --default-character-set=utf8mb4 --events --routines --triggers --force --hex-blob --quick --single-transaction --set-gtid-purged=ON --databases db1 lg > /tmp/bak/data.sql
Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events.?
觀察備份文件data.sql,會(huì)發(fā)現(xiàn)兩處值得注意的地方:
·使用備份文件導(dǎo)入數(shù)據(jù)時(shí),將會(huì)話級(jí)系統(tǒng)變量@@SESSION.SQL_LOG_BIN設(shè)置為了0,即不產(chǎn)生二進(jìn)制日志。
SET @MYSQLDUMP_TEMP_LOG_BIN = @@SESSION.SQL_LOG_BIN;
SET @@SESSION.SQL_LOG_BIN= 0;
...
SET @@SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN;
·設(shè)置了全局系統(tǒng)變量@@GLOBAL.GTID_PURGED。
SET @@GLOBAL.GTID_PURGED='0c34233d-b2e1-11e9-85cf-080027f22add:1-2,
32a0c858-b59f-11e9-b069-0800270c3d91:1-2,
447e96e1-b59f-11e9-95fe-0800270c3d91:1-2,
4fdc13e1-b59e-11e9-b5e0-080027f22add:1-9,
b8282f18-b59e-11e9-83b0-0800270c3d91:1-5';
同時(shí)也設(shè)置了@@GLOBAL.GTID_EXECUTED,這就是復(fù)制從何處開始的依據(jù)。確切的說(shuō)是,@@GLOBAL.GTID_EXECUTED為空時(shí),才能設(shè)置@@GLOBAL.GTID_PURGED,否則報(bào)錯(cuò)如下。同時(shí)@@GLOBAL.GTID_EXECUTED會(huì)設(shè)置成和@@GLOBAL.GTID_PURGED具有相同的值。
ERROR 1840 (HY000): @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.
Query OK, 1 row affected (0.00 sec)
導(dǎo)入備份數(shù)據(jù)前,觀察新Slave節(jié)點(diǎn)上@@GLOBAL.GTID_PURGED,和@@GLOBAL.GTID_EXECUTED的值。
[root@mysql.sock][(none)]> select @@GLOBAL.GTID_PURGED;
+----------------------+
| @@GLOBAL.GTID_PURGED |
+----------------------+
|? ? ? ? ? ? ? ? ? ? ? |
+----------------------+
1 row in set (0.00 sec)
[root@mysql.sock][(none)]>?
[root@mysql.sock][(none)]> select @@GLOBAL.GTID_EXECUTED;
+------------------------+
| @@GLOBAL.GTID_EXECUTED |
+------------------------+
|? ? ? ? ? ? ? ? ? ? ? ? |
+------------------------+
1 row in set (0.00 sec)
導(dǎo)入數(shù)據(jù)后,再觀察。
[root@mysql.sock][(none)]> source /tmp/bak/data.sql;
...
[root@mysql.sock][lg]> select @@GLOBAL.GTID_PURGED;
+-------------------------------------------------+
| @@GLOBAL.GTID_PURGED |
+-------------------------------------------------+
| 0c34233d-b2e1-11e9-85cf-080027f22add:1-2,
32a0c858-b59f-11e9-b069-0800270c3d91:1-2,
447e96e1-b59f-11e9-95fe-0800270c3d91:1-2,
4fdc13e1-b59e-11e9-b5e0-080027f22add:1-9,
b8282f18-b59e-11e9-83b0-0800270c3d91:1-5 |
+-------------------------------------------------+
1 row in set (0.00 sec)
[root@mysql.sock][lg]> select @@GLOBAL.GTID_EXECUTED;
+-------------------------------------------------+
| @@GLOBAL.GTID_EXECUTED |
+-------------------------------------------------+
| 0c34233d-b2e1-11e9-85cf-080027f22add:1-2,
32a0c858-b59f-11e9-b069-0800270c3d91:1-2,
447e96e1-b59f-11e9-95fe-0800270c3d91:1-2,
4fdc13e1-b59e-11e9-b5e0-080027f22add:1-9,
b8282f18-b59e-11e9-83b0-0800270c3d91:1-5 |
+-------------------------------------------------+
1 row in set (0.00 sec)
最后change master即可。
CHANGE MASTER TO
MASTER_HOST='10.0.2.6',
MASTER_USER='repl',
MASTER_PASSWORD='123456',
MASTER_PORT=3309,
MASTER_AUTO_POSITION = 1;
注意,在一些特殊場(chǎng)景下,可能需要手動(dòng)設(shè)置@@GLOBAL.GTID_PURGED。
在GTID-based的復(fù)制中,如何設(shè)置級(jí)聯(lián)復(fù)制呢,要求復(fù)制拓?fù)淙缦?,其中箭頭代表數(shù)據(jù)的復(fù)制方向,括號(hào)中的部分還不存在。
S <- M (-> M' -> S')
若先建立M' -> S'的復(fù)制關(guān)系,使用mysqldump在M上備份數(shù)據(jù),然后導(dǎo)入M',數(shù)據(jù)會(huì)從M'復(fù)制到S'嗎,通過(guò)上面知道,導(dǎo)入數(shù)據(jù)時(shí)設(shè)置了@@SESSION.SQL_LOG_BIN= 0,所以數(shù)據(jù)不會(huì)從M'復(fù)制到S',這點(diǎn)是和Position-based復(fù)制不一樣的,即如下方式不會(huì)設(shè)置SQL_LOG_BIN。
$ bin/mysqldump --user=root --password='123456' --socket=/home/mysql/mysql3309/tmp/mysql.sock --default-character-set=utf8mb4 --events --routines --triggers --force --hex-blob --quick --single-transaction --set-gtid-purged=OFF --master-data=2 --databases db1 lg > /tmp/bak/2data.sql
所以正確的思路是,用備份數(shù)據(jù)同時(shí)恢復(fù)M'和S',然后建立M' -> S',最后建立M -> M'。
對(duì)于Failover,由于不需要指定位點(diǎn)信息,直接change master即可,比Position-based復(fù)制簡(jiǎn)潔很多。另,通過(guò)前面幾篇文章的介紹,也可以發(fā)現(xiàn)GTID-based的復(fù)制比Position-based復(fù)制在數(shù)據(jù)一致性方面更加嚴(yán)格,不像Position-based復(fù)制隨便指定個(gè)位點(diǎn),若復(fù)制過(guò)程無(wú)報(bào)錯(cuò),就可以繼續(xù)。
PS:使用xtrabackup備份數(shù)據(jù)時(shí),上面的思路是完全成立的。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
本文名稱:說(shuō)GTID-FailoverandScaleout-創(chuàng)新互聯(lián)
分享地址:http://muchs.cn/article34/doddpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、標(biāo)簽優(yōu)化、全網(wǎng)營(yíng)銷推廣、企業(yè)網(wǎng)站制作、營(yíng)銷型網(wǎng)站建設(shè)、虛擬主機(jī)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容