自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MySQL GTID的混合問(wèn)題修復(fù)和思考

數(shù)據(jù)庫(kù) MySQL
這幾天做一個(gè)跨機(jī)房實(shí)時(shí)遷移的操作,碰到一個(gè)有些奇怪的問(wèn)題,記錄一下。整體服務(wù)是在兩個(gè)機(jī)房對(duì)等部署,然后通過(guò)級(jí)聯(lián)復(fù)制的方式串起來(lái)。

[[343805]]

這幾天做一個(gè)跨機(jī)房實(shí)時(shí)遷移的操作,碰到一個(gè)有些奇怪的問(wèn)題,記錄一下。

整體服務(wù)是在兩個(gè)機(jī)房對(duì)等部署,然后通過(guò)級(jí)聯(lián)復(fù)制的方式串起來(lái)。

 

實(shí)際切換前,節(jié)點(diǎn)B因?yàn)槭菑膸?kù),是很容易摘除的,所以整體的部署架構(gòu)僅剩下A,C,D

 

同時(shí)在切換前,為了保證整個(gè)業(yè)務(wù)訪問(wèn)域名的可用性,會(huì)臨時(shí)開(kāi)啟雙主復(fù)制,這個(gè)階段能夠最大程度保證數(shù)據(jù)的完整性。當(dāng)然這里會(huì)有兩種模式,一種是最大保護(hù)模式,最大保護(hù)模式意味著數(shù)據(jù)只能從一個(gè)入口寫入,如果雙寫很可能會(huì)數(shù)據(jù)沖突,第二種是最大可用模式,也就意味著整個(gè)過(guò)程數(shù)據(jù)在兩邊始終可以寫入。這個(gè)模式的選用和具體的業(yè)務(wù)特點(diǎn)有關(guān)(讀多寫少,讀多寫多等)。

 

所以A和C之間的雙主配置就顯得尤其重要,也是整個(gè)平滑切換數(shù)據(jù)完整性的基礎(chǔ)。

目前A,C,D節(jié)點(diǎn)的GTID基本信息如下:

A: show master status

Executed_Gtid_Set: A:1-222717169,B:1-697

C:show slave status

Executed_Gtid_Set: A:1-222716771,B:1-700

D:show slave status

Executed_Gtid_Set: A:1-222716771,B:1-700

這個(gè)數(shù)據(jù)表達(dá)的含義比較深刻,那就是在數(shù)據(jù)鏈中,存在已被摘除的節(jié)點(diǎn)B的GTID信息,而從C,D的GTID相關(guān)信息可以看到,B中是丟失了一個(gè)數(shù)據(jù)事務(wù)的(當(dāng)然這個(gè)過(guò)程不是真正的數(shù)據(jù)變化,和操作不規(guī)范有關(guān))

所以在這種情況下如果要配置雙主,需要解決的就是B相關(guān)GTID的差異,一種是直接抹去B的痕跡,這個(gè)過(guò)程需要在C,D上面可操作,但是實(shí)際復(fù)制雙主的時(shí)候又會(huì)出問(wèn)題。

如果把GTID當(dāng)做一種數(shù)據(jù)血緣的角度會(huì)發(fā)現(xiàn),整個(gè)GTID真是一個(gè)很有靈性的設(shè)計(jì)。假設(shè)紅色是A的數(shù)據(jù)血緣,綠色是B的數(shù)據(jù)血緣。

 

舍棄了B之后,A,C開(kāi)啟了雙主,整個(gè)數(shù)據(jù)血緣就是如下的狀態(tài)了:

 

所以整個(gè)復(fù)制拓?fù)渲械娜魏螖?shù)據(jù)變化都能夠有理有據(jù)的追溯,這是GTID設(shè)計(jì)很有價(jià)值的一件事情。

關(guān)于修復(fù)方式,也比較清晰,那就是把C和D的數(shù)據(jù)血緣B的部分做下“回退”,如下:

A: show master status

Executed_Gtid_Set: A:1-222717169,B:1-697

C:show slave status

Executed_Gtid_Set: A:1-222716771,B:1-697

D:show slave status

Executed_Gtid_Set: A:1-222716771,B:1-697

按照這種模式來(lái)一次修改C和D,整個(gè)雙向復(fù)制就能夠很快構(gòu)建起來(lái)了。

回置GTID的原理可以參考如下的圖,通過(guò)gtid_purged可以間接實(shí)現(xiàn)裁剪。

 

C端修復(fù)的步驟如下:

1)stop slave;

2)show slave status\G

3)reset master;

切記是在Slave端執(zhí)行,這個(gè)階段的目的就是要重新配置GTID的校準(zhǔn)值。這個(gè)時(shí)候mysql.gtid_executed應(yīng)該就是空的了。

4)重置GTID_purged值

  1. SET @@GLOBAL.GTID_PURGED='A:1-222716771,B:1-697'

5)刪除從庫(kù)的復(fù)制配置

  1. reset slave all

6)配置復(fù)制關(guān)系

CHANGE MASTER TO MASTER_USER='dba_repl', MASTER_PASSWORD='xxxx' , MASTER_HOST='xxxxx',MASTER_PORT=xxxx,MASTER_AUTO_POSITION = 1;

7)重啟Slave節(jié)點(diǎn),查看狀態(tài)

  1. start slave; 
  2.  
  3. show slave status\G 

修復(fù)好之后,這部分打算是寫一個(gè)巡檢GTID和修復(fù)的腳本邏輯,能夠把這部分的管理做得更細(xì)致一些。

本文轉(zhuǎn)載自微信公眾號(hào)「楊建榮的學(xué)習(xí)筆記」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系楊建榮的學(xué)習(xí)筆記公眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: 楊建榮的學(xué)習(xí)筆記
相關(guān)推薦

2016-12-05 18:54:53

Rexxar豆瓣

2017-07-19 09:53:42

Oracle分區(qū)問(wèn)題

2023-01-11 08:00:00

MySQLGTID雙主模式

2015-09-21 09:10:36

排查修復(fù)Windows 10

2015-05-20 09:44:54

混合云云存儲(chǔ)合規(guī)

2023-04-25 18:54:13

數(shù)據(jù)數(shù)據(jù)丟失

2013-04-07 10:50:24

2017-07-06 15:12:48

MySQLgtid特性數(shù)據(jù)恢復(fù)

2014-06-17 15:20:09

Wi-FiiPadiPhone

2016-01-13 13:47:04

云計(jì)算混合云私有云

2013-11-11 09:26:50

編程思考

2022-06-06 08:21:13

MySQL數(shù)據(jù)庫(kù)命令

2014-08-28 09:43:38

FabricGTIDMysql

2020-03-22 11:20:16

Vue開(kāi)發(fā)前端

2015-01-12 14:55:36

2024-11-21 10:05:14

2019-12-30 18:18:51

云計(jì)算混合云公共云

2019-02-28 22:14:27

云計(jì)算混合云公共云

2015-02-26 09:35:48

AWSOpenStack混合云
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)