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

數(shù)據(jù)庫(kù)遷移,要停機(jī)發(fā)布么?看看別家的程序員怎么做的

運(yùn)維 數(shù)據(jù)庫(kù)運(yùn)維
很多公司,在進(jìn)行數(shù)據(jù)遷移的時(shí)候,都會(huì)選擇停服來(lái)處理,這是一種偷懶的方法,數(shù)據(jù)遷移能不能做到不停服呢?今天我們來(lái)介紹下這個(gè)高速換輪胎的技術(shù),數(shù)據(jù)庫(kù)遷移。

本來(lái)以為過(guò)年了要好好寫文章,因?yàn)橐咔榈年P(guān)系,新增的不少的需求。希望這場(chǎng)疫情早日過(guò)去吧,武漢加油。今天我們來(lái)聊一聊數(shù)據(jù)庫(kù)遷移,這個(gè)其實(shí)非常的常見,例如我們要從自己的機(jī)房將數(shù)據(jù)遷移到騰訊云或者阿里云這些線上服務(wù),或者我們有時(shí)候需要把一個(gè)業(yè)務(wù)拆分成多個(gè)子業(yè)務(wù),為了減少系統(tǒng)的耦合,我們通常也會(huì)選擇拆庫(kù),這就需要進(jìn)行數(shù)據(jù)遷移。很多公司,在進(jìn)行數(shù)據(jù)遷移的時(shí)候,都會(huì)選擇停服來(lái)處理,這是一種偷懶的方法,數(shù)據(jù)遷移能不能做到不停服呢?今天我們來(lái)介紹下這個(gè)高速換輪胎的技術(shù),數(shù)據(jù)庫(kù)遷移。

數(shù)據(jù)庫(kù)遷移,要停機(jī)發(fā)布么?看看別家的程序員怎么做的

 

這個(gè)是最常見的數(shù)據(jù)遷移的一個(gè)流程。一開始,我們的應(yīng)用都是讀寫舊的數(shù)據(jù)庫(kù),這個(gè)時(shí)候我們還沒(méi)有開啟數(shù)據(jù)遷移。緊接著,我們會(huì)有一個(gè)新的數(shù)據(jù)庫(kù),一般來(lái)說(shuō),這個(gè)時(shí)候,我們會(huì)開啟雙寫,什么是雙寫呢?就是對(duì)數(shù)據(jù)庫(kù)的寫操作,我們既寫到舊庫(kù),又寫到新庫(kù)。如果擔(dān)心因?yàn)殡p寫而造成的耗時(shí)增加,我們可以選擇異步同步的模式,但是異步勢(shì)必增加了系統(tǒng)的復(fù)雜性,我們需要把失敗的日志記錄下來(lái),以便后期進(jìn)行處理。

在第二步的時(shí)候,我們?nèi)匀皇亲x取舊數(shù)據(jù)庫(kù)的數(shù)據(jù),這個(gè)時(shí)候?qū)€上的業(yè)務(wù)幾乎是沒(méi)有影響的,接下來(lái),我們可以準(zhǔn)備讀取新庫(kù)的數(shù)據(jù),為了減小影響,我們可以采用一定的灰度策略,先讓部分流量讀取新庫(kù),然后再慢慢擴(kuò)大灰度范圍,這個(gè)時(shí)候所有的寫請(qǐng)求還是雙寫的,一旦發(fā)現(xiàn)有問(wèn)題,可以回退到第二步甚至是第一步,減少對(duì)業(yè)務(wù)的影響。當(dāng)服務(wù)穩(wěn)定下來(lái)之后,我們可以去掉對(duì)舊庫(kù)的寫入,這樣子就能完成一次數(shù)據(jù)遷移。

[[313745]]

相信很多人會(huì)問(wèn),說(shuō)的容易。那么對(duì)于歷史數(shù)據(jù),怎么遷移到新庫(kù)呢?這里我們介紹兩種常見的方法,一是懶惰遷移,二是主動(dòng)遷移。什么是懶惰遷移呢?這個(gè)是從英文單詞Lazy翻譯過(guò)來(lái)的,就是如果這行數(shù)據(jù)沒(méi)有被使用到,我們就不管他,如果它被使用到,那么我們就把它遷移過(guò)來(lái)。一般我們會(huì)使用一個(gè)key-value來(lái)記錄下哪些key被懶惰遷移過(guò),當(dāng)我們更新舊表的時(shí)候,如果發(fā)現(xiàn)這個(gè)key沒(méi)有被遷移,那么就順路把他寫到新表里面,并且更新下鍵值數(shù)據(jù),表示這個(gè)key已經(jīng)被遷移過(guò)了,后面雙寫的時(shí)候,直接雙寫即可,無(wú)需進(jìn)行數(shù)據(jù)遷移。

另外一個(gè)是主動(dòng)遷移,有些數(shù)據(jù),可能在進(jìn)行數(shù)據(jù)遷移的時(shí)候就沒(méi)被訪問(wèn)過(guò),例如用戶可能幾個(gè)月不登錄,你不能因?yàn)閿?shù)據(jù)遷移就把他拋棄了。所以我們需要對(duì)這些冷數(shù)據(jù)進(jìn)行數(shù)據(jù)遷移,簡(jiǎn)單來(lái)說(shuō),就是掃取數(shù)據(jù)庫(kù)中的存量數(shù)據(jù),然后將他們寫入新的數(shù)據(jù)庫(kù)即可。

[[313746]]

總結(jié)

這里要注意的是,我們?cè)跀?shù)據(jù)遷移的時(shí)候,如果用戶頻繁地修改數(shù)據(jù),是有可能造成數(shù)據(jù)不一致的,所以,一般我們都會(huì)選擇在晚上,用戶活躍度低的時(shí)候進(jìn)行數(shù)據(jù)遷移。甚至在業(yè)務(wù)方便會(huì)去限制用戶的并發(fā)請(qǐng)求數(shù),從而減少因?yàn)椴l(fā)而出現(xiàn)數(shù)據(jù)不一致的情況。上述方案,對(duì)于大多數(shù)公司與業(yè)務(wù),其實(shí)已經(jīng)夠用了,當(dāng)然,如果你的業(yè)務(wù)場(chǎng)景更加復(fù)雜,數(shù)據(jù)量更加大,還要進(jìn)一步分析,進(jìn)一步制定遷移方案。歡迎大家關(guān)注我,共同學(xué)習(xí),共同進(jìn)步。大家的支持是我繼續(xù)嘮嗑的動(dòng)力。同名公眾號(hào)(沙茶敏碎碎念) 

責(zé)任編輯:龐桂玉 來(lái)源: 今日頭條
相關(guān)推薦

2023-09-27 22:44:18

數(shù)據(jù)遷移數(shù)據(jù)庫(kù)

2021-09-28 09:57:50

程序員技能開發(fā)

2011-10-10 09:22:27

程序員

2021-10-12 10:22:33

數(shù)據(jù)庫(kù)架構(gòu)技術(shù)

2015-09-20 18:31:29

阿里云心電數(shù)據(jù)云上安心

2011-09-26 09:52:04

程序員

2012-11-01 11:31:56

程序員編程開發(fā)

2023-09-27 07:18:27

Nginxsession客戶端

2013-01-17 10:10:44

程序員

2015-03-25 13:16:55

SQL Server數(shù)據(jù)庫(kù)安全開發(fā)人員

2019-08-16 09:12:59

數(shù)據(jù)庫(kù)PostgreSQL Oracle

2017-10-20 13:28:50

2017-11-08 12:25:37

小程序運(yùn)營(yíng)公眾號(hào)

2015-10-19 17:49:43

程序員泡沫工資

2015-07-20 10:11:08

程序員幸福

2022-12-26 11:57:41

數(shù)據(jù)庫(kù)治理

2021-11-10 09:19:42

數(shù)據(jù)庫(kù)程序員性能

2022-09-04 19:43:05

程序員數(shù)據(jù)庫(kù)

2012-11-14 14:18:57

程序員

2011-07-05 11:08:05

程序員
點(diǎn)贊
收藏

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