真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

說GTID-FailoverandScaleout

在GTID-based復制中,如何擴容一個只讀實例?

創(chuàng)新互聯(lián)公司成立與2013年,先為臨泉等服務(wù)建站,臨泉等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為臨泉企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

這里使用MySQLdump工具在Master節(jié)點上進行數(shù)據(jù)備份,注意一個關(guān)鍵參數(shù):--set-gtid-purged[=name],該參數(shù)代表在備份文件中,哪些GTID已執(zhí)行過了,在change master時,復制將從這些GTID之后進行。

--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,會發(fā)現(xiàn)兩處值得注意的地方:

·使用備份文件導入數(shù)據(jù)時,將會話級系統(tǒng)變量@@SESSION.SQL_LOG_BIN設(shè)置為了0,即不產(chǎ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è)置了@@GLOBAL.GTID_EXECUTED,這就是復制從何處開始的依據(jù)。確切的說是,@@GLOBAL.GTID_EXECUTED為空時,才能設(shè)置@@GLOBAL.GTID_PURGED,否則報錯如下。同時@@GLOBAL.GTID_EXECUTED會設(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)

導入備份數(shù)據(jù)前,觀察新Slave節(jié)點上@@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)

導入數(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;

注意,在一些特殊場景下,可能需要手動設(shè)置@@GLOBAL.GTID_PURGED。

在GTID-based的復制中,如何設(shè)置級聯(lián)復制呢,要求復制拓撲如下,其中箭頭代表數(shù)據(jù)的復制方向,括號中的部分還不存在。

S <- M (-> M' -> S')

若先建立M' -> S'的復制關(guān)系,使用mysqldump在M上備份數(shù)據(jù),然后導入M',數(shù)據(jù)會從M'復制到S'嗎,通過上面知道,導入數(shù)據(jù)時設(shè)置了@@SESSION.SQL_LOG_BIN= 0,所以數(shù)據(jù)不會從M'復制到S',這點是和Position-based復制不一樣的,即如下方式不會設(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ù)同時恢復M'和S',然后建立M' -> S',最后建立M -> M'。

對于Failover,由于不需要指定位點信息,直接change master即可,比Position-based復制簡潔很多。另,通過前面幾篇文章的介紹,也可以發(fā)現(xiàn)GTID-based的復制比Position-based復制在數(shù)據(jù)一致性方面更加嚴格,不像Position-based復制隨便指定個位點,若復制過程無報錯,就可以繼續(xù)。

PS:使用xtrabackup備份數(shù)據(jù)時,上面的思路是完全成立的。


分享題目:說GTID-FailoverandScaleout
網(wǎng)站URL:http://weahome.cn/article/gigjsi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部