GTID-based的復(fù)制,在初始化階段,Slave節(jié)點(diǎn)會(huì)把已接收到的和提交的GTID集合信息,發(fā)送給Master節(jié)點(diǎn)。該GTID集合等價(jià)于后面兩個(gè)GTID集合的并集,@@GLOBAL.gtid_executed + performance_schema.replication_connection_status.RECEIVED_TRANSACTION_SET。
肇源網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)從2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。Master節(jié)點(diǎn)通過(guò)對(duì)比Slave節(jié)點(diǎn)發(fā)送過(guò)來(lái)的GTID集合信息,然后把所有記錄在現(xiàn)存二進(jìn)制日志文件中的,沒(méi)有在Slave節(jié)點(diǎn)上執(zhí)行過(guò)的GTID集合,發(fā)送給Slave節(jié)點(diǎn)。
那么,Master節(jié)點(diǎn)是如何對(duì)比Slave節(jié)點(diǎn)發(fā)送過(guò)來(lái)的GTID集合信息的呢?
Master節(jié)點(diǎn)會(huì)按照自己有的UUID為準(zhǔn),將GTID集合分類(lèi),分別計(jì)算同類(lèi)GTID集合的差集。此環(huán)節(jié),若Master節(jié)點(diǎn)發(fā)現(xiàn)Slave節(jié)點(diǎn)發(fā)送過(guò)來(lái)的GTID集合中UUID的種類(lèi),比自身上UUID的種類(lèi)多,Master節(jié)點(diǎn)會(huì)忽略該情況,復(fù)制邏輯還會(huì)繼續(xù)進(jìn)行。
實(shí)際例子如下,此情況復(fù)制是正常的。
Master節(jié)點(diǎn)上GTID集合信息:
[root@mysql.sock][db1]> show master status\G
*************************** 1. row ***************************
File: bin.000002
Position: 796
Binlog_Do_DB:?
Binlog_Ignore_DB:?
Executed_Gtid_Set: 0c34233d-b2e1-11e9-85cf-080027f22add:1-2,
4fdc13e1-b59e-11e9-b5e0-080027f22add:1-2
1 row in set (0.01 sec)
Slave節(jié)點(diǎn)上GTID集合信息:
[root@mysql.sock][lg]> show master status\G
*************************** 1. row ***************************
File: bin.000004
Position: 832
Binlog_Do_DB:?
Binlog_Ignore_DB:?
Executed_Gtid_Set: 32a0c858-b59f-11e9-b069-0800270c3d91:1-2,
447e96e1-b59f-11e9-95fe-0800270c3d91:1-2,
b8282f18-b59e-11e9-83b0-0800270c3d91:1-5
1 row in set (0.00 sec)
建立復(fù)制關(guān)系后,Slave節(jié)點(diǎn)上集合信息:
[root@mysql.sock][lg]> show master status \G
*************************** 1. row ***************************
File: bin.000004
Position: 1763
Binlog_Do_DB:?
Binlog_Ignore_DB:?
Executed_Gtid_Set: 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-2,
b8282f18-b59e-11e9-83b0-0800270c3d91:1-5
1 row in set (0.00 sec)
又若Master節(jié)點(diǎn)發(fā)現(xiàn)Slave節(jié)點(diǎn)上相同UUID對(duì)應(yīng)的GTID,比自身上的GTID多,這時(shí)Master節(jié)點(diǎn)會(huì)發(fā)送ER_SLAVE_HAS_MORE_GTIDS_THAN_MASTER報(bào)錯(cuò)給Slave節(jié)點(diǎn)。
實(shí)際例子報(bào)錯(cuò)如下:
Last_IO_Errno: 1236(MySQL error code 1236 (ER_MASTER_FATAL_ERROR_READING_BINLOG): Got fatal error %d from master when reading data from binary log: '%-.320s')
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Slave has more GTIDs than the master has, using the master's SERVER_UUID. This may indicate that the end of the binary log was truncated or that the last binary log file was lost, e.g., after a power or disk failure when sync_binlog != 1. The master may or may not have rolled back transactions that were already replica'
Last_SQL_Errno: 0
或Master節(jié)點(diǎn)發(fā)現(xiàn)計(jì)算出來(lái)相同UUID的GTID集合的差集中,有GTID已被刪除了,這時(shí)Master節(jié)點(diǎn)會(huì)發(fā)送ER_MASTER_HAS_PURGED_REQUIRED_GTIDS報(bào)錯(cuò)給Slave節(jié)點(diǎn)。
實(shí)際例子報(bào)錯(cuò)如下:
Last_IO_Errno: 1236
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'The slave is connecting using CHANGE MASTER TO MASTER_AUTO_POSITION = 1, but the master has purged binary logs containing GTIDs that the slave requires.'
Last_SQL_Errno: 0
經(jīng)過(guò)上面的邏輯后,Master節(jié)點(diǎn)最終得以將Slave節(jié)點(diǎn)需要的GTID集合(差集)發(fā)送過(guò)來(lái),復(fù)制就這樣開(kāi)始了。
另外有需要云服務(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ì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。