日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

使用kettle的數(shù)據(jù)庫增量備份與全量備份

作者:LG_985938339 更新時(shí)間: 2022-05-11 編程語言

使用kettle的數(shù)據(jù)庫增量備份與全量備份

      • 背景
      • 單表對(duì)主表的全量備份
      • 使用update_time的增量備份
      • 使用Kettle Spoon

背景

冷熱庫備份,熱庫保留最近七天的原始數(shù)據(jù),其余的數(shù)據(jù)都備份到冷庫,平均每天約產(chǎn)生300G的原始數(shù)據(jù)。
熱庫采用業(yè)務(wù)上的id和時(shí)間每一天來分表,并且有一個(gè)分區(qū)的主表,冷庫只按業(yè)務(wù)id來分表,天的數(shù)據(jù)都聚合在一起。
使用kettle進(jìn)行數(shù)據(jù)庫的數(shù)據(jù)備份轉(zhuǎn)移,有對(duì)歷史數(shù)據(jù)做全量備份和對(duì)增量數(shù)據(jù)做每天的增量數(shù)據(jù)的兩種方案。

如下所示:
熱庫:
分區(qū)主表: tableName_業(yè)務(wù)id
分區(qū)子表: tableName_業(yè)務(wù)id_日期
冷庫:
分區(qū)主表: tableName_業(yè)務(wù)id
分區(qū)子表: tableName_業(yè)務(wù)id_日期

對(duì)于某些數(shù)據(jù)量不是太大的表,在熱庫因?yàn)榭紤]性能的原因,依舊會(huì)按天進(jìn)行分表,但是備份到冷庫之后會(huì)很少用到,一般都是原始的ods表,只有項(xiàng)目改了方案或者其他情況,需要重跑數(shù)據(jù)或者做數(shù)據(jù)清洗,才有可能使用到冷庫的數(shù)據(jù)。所以某些數(shù)據(jù)量不是太大的表可以在冷庫直接做主表存儲(chǔ),不做按天分表(不分表或者按月分表)。天表數(shù)據(jù)達(dá)到幾百萬的,冷庫依舊是做按天分表。

單表對(duì)主表的全量備份

由于是全量備份,需要對(duì)所有熱庫的數(shù)據(jù)進(jìn)行備份到冷庫,其中數(shù)據(jù)量會(huì)很大,可能需要很長(zhǎng)的備份時(shí)長(zhǎng),備份過程可能會(huì)出現(xiàn)數(shù)據(jù)庫報(bào)錯(cuò)或者連接數(shù)不足等非意料中的異常,為了方便排查未成功備份的數(shù)據(jù),使用熱庫子表對(duì)冷庫主表備份的方式。當(dāng)備份出現(xiàn)問題時(shí),直接排查log或者郵件,直接重新備份發(fā)生錯(cuò)誤的子表就行。

使用update_time的增量備份

增量備份,如果和全量備份一樣使用子表全量備份到主表的方式的話,因?yàn)闊釒鞎?huì)保留七天的數(shù)據(jù),再加上前幾天的天表,可能會(huì)有歷史數(shù)據(jù)遺留的數(shù)據(jù)插入進(jìn)去,那么可能就需要每一天做增量備份的時(shí)候,都將熱庫存在的七天的表都重新備份一次冷庫中去。但是前面六天絕大部分?jǐn)?shù)據(jù)是不需要再次備份的,這樣會(huì)浪費(fèi)比較多的性能。

一般是使用update_time這個(gè)字段來進(jìn)行備份的,每次備份都會(huì)先查詢冷庫的表中最大的更新時(shí)間maxUpdateTime,然后根據(jù)這個(gè)時(shí)間去熱庫的表中查詢出所有update_time > maxUpdateTime的數(shù)據(jù),再將其備份到冷庫中去,這樣用作同步備份的就只有新增和修改過的這一部分?jǐn)?shù)據(jù)了。

使用Kettle Spoon

1、Kettle Spoon的循環(huán),通過一個(gè)步驟來引入要循環(huán)的變量,另外后面跟一個(gè)步驟來循環(huán)執(zhí)行每一個(gè)變量
在這里插入圖片描述
通過SQL獲取表名(上圖中的獲取表類型):
在這里插入圖片描述
表循環(huán)任務(wù):
在這里插入圖片描述
2、Insert/Update和Table Output
備份的時(shí)候一般就是選用這兩種方式備份,前面一種會(huì)插入數(shù)據(jù)或者更新數(shù)據(jù)(如果主鍵重復(fù)),后面一種就是直接插入數(shù)據(jù),如果主鍵重復(fù)則會(huì)直接報(bào)錯(cuò)。
在這里插入圖片描述
需要注意的是,Insert/Update及其消耗CPU資源,而Table Output則性能會(huì)好很多,速度也會(huì)快很多。如果確定插入的數(shù)據(jù)完全沒有主鍵重復(fù)的數(shù)據(jù)的話,最好是使用Table Output進(jìn)行備份。
在這里插入圖片描述
在這里插入圖片描述

3、對(duì)于容易出錯(cuò)的地方都應(yīng)該做異常處理機(jī)制(如與數(shù)據(jù)庫交互的所有操作),如果某些地方在執(zhí)行的地方報(bào)錯(cuò)了而沒有異常處理機(jī)制,那么這個(gè)任務(wù)就會(huì)直接終止。
在這里插入圖片描述

4、使用郵件,配置錯(cuò)誤信息
有一個(gè)Mail的組件,可以拉出來直節(jié)配置,對(duì)于郵件地址、賬號(hào)密碼等配置就不多說了,主要是在程序發(fā)生錯(cuò)誤的時(shí)候,將發(fā)生的錯(cuò)誤信息附加在郵件的附件中。
在這里插入圖片描述
在這里插入圖片描述
配置好上面兩個(gè)步驟,當(dāng)發(fā)生異常時(shí),就會(huì)發(fā)送一個(gè)異常郵件出來,并且郵件會(huì)攜帶一個(gè)包含錯(cuò)誤日志的附件過來。

原文鏈接:https://blog.csdn.net/weixin_44228698/article/details/123622098

欄目分類
最近更新