Greenplum · 源碼閱讀 · gpbackup的backupPredata源碼分析

一.背景

Greenplum · 源碼閱讀 · gpbackup的DoSetup源碼分析一文中介紹了備份的準(zhǔn)備操作,接下來就是數(shù)據(jù)備份喘先,包括元數(shù)據(jù)和用戶數(shù)據(jù)泊碑。元數(shù)據(jù)的備份包含全局?jǐn)?shù)據(jù)缕溉、predata和postdata的備份死陆。本文主要分析backupPredata函數(shù)。

二.backupPredata函數(shù)

該函數(shù)步驟比較多其屏,包括外部表協(xié)議喇勋、擴(kuò)展、存儲(chǔ)過程偎行、語(yǔ)言川背、類型等。

1.函數(shù)位置

func backupPredata(metadataFile *utils.FileWithByteCount, tables []Table, tableOnly bool)位于

backup.go文件中蛤袒。

2.函數(shù)流程說明

圖1 處理流程

輔助說明如下:

1)retrieveFunctions

查詢存儲(chǔ)過程熄云,表名pg_proc,查詢信息的時(shí)候會(huì)和pg_description以及pg_shdescription做左連接,查出proc完整信息妙真。

proc采用的語(yǔ)言定義存放于pg_language,如internal,c缴允,sql,plpgsql,plpythonu等。

更多信息參考:https://gpdb.docs.pivotal.io/6-10/ref_guide/system_catalogs/pg_description.html

2)retrieveProtocols

查詢外部協(xié)議珍德,表名pg_extprotocol,如創(chuàng)建pxf外部協(xié)議练般,通過CREATE EXTENSION pxf;就會(huì)在該表中增加一條記錄。

DROP EXTENSION pxf;刪除外部協(xié)議锈候。gphdfs和pxf等屬于用戶自定義協(xié)議薄料;file、gpfdist泵琳、gpfdists屬于內(nèi)部協(xié)議摄职,不屬于此范圍。

更多信息參考:https://gpdb.docs.pivotal.io/6-10/admin_guide/external/g-external-tables.html

3)backupSchemas

備份Schema信息获列。

4)backupExtensions

備份擴(kuò)展信息琳钉,表名pg_extension,查詢會(huì)顯示如plpqsql蛛倦、pxf等。

5)backupCollations

備份排序規(guī)則啦桌,表名pg_collation溯壶,描述可用排序規(guī)則及皂,本質(zhì)是一個(gè)SQL名字到操作系統(tǒng)local分類的映射,如order by中的排序規(guī)則且改。

更多信息參考:http://www.postgres.cn/docs/9.6/catalog-pg-collation.html

6)retrieveAndBackupTypes

備份類型验烧,表名pg_type,通過typtype分別讀取又跛,然后一起備份碍拆。typtype包括b:基礎(chǔ)類型、c:組合類型慨蓝、d:領(lǐng)域感混、e:枚舉、p:pseduo類型礼烈、r:范圍類型弧满。

更多信息參考:https://gpdb.docs.pivotal.io/6-10/ref_guide/system_catalogs/pg_type.html

7)backupProceduralLanguages

備份語(yǔ)言,表名:pg_language此熬,該備份會(huì)涉及表pg_seclabel(安全標(biāo)簽)和pg_shseclabel. 安全標(biāo)簽命令SECURITY LABEL庭呜。

更多信息參考:http://www.postgres.cn/docs/9.6/view-pg-seclabels.html

8)retrieveFDWObjects

查詢外部數(shù)據(jù)包裹對(duì)象,涉及的表pg_foreign_data_wrapper(獲取外部數(shù)據(jù)wrapper的定義)犀忱、pg_foreign_server募谎、pg_user_mappings(用于用戶和server的接入權(quán)限管理)。

9)retrieveTSObjects

查詢文本搜索對(duì)象阴汇,涉及的表pg_ts_parser数冬、pg_ts_config、pg_ts_template鲫寄、pg_ts_dict吉执。

更多信息參考:http://www.postgres.cn/docs/9.6/catalog-pg-ts-parser.html

10)backupOperatorFamilies

備份操作符族,涉及的表pg_opfamily地来。

11)retrieveOperatorObjects

涉及的表pg_operator戳玫、pg_opclass。

12)retrieveAggregates

表名pg_aggregate未斑。

13)retrieveCasts

表名pg_cast咕宿。

14)retrieveViews

表名pg_class。

15)retrieveAndBackupSequences

表名pg_class蜡秽,類型relkind='S'府阀。

16)retrieveConstraints

查詢約束關(guān)系,表名pg_constraint芽突,涉及pg_class试浙、pg_partition,如分區(qū)的約束寞蚌。

17)backupDependentObjects

備份依賴對(duì)象田巴,表名pg_depend钠糊,涉及的表pg_extable、pg_partition壹哺、pg_tablespace抄伍、pg_class。

18)backupConversions

表名pg_conversion管宵,保存編碼轉(zhuǎn)換信息截珍,如iso_8859_1_to_utf8。

19)backupConstraints

保存約束信息到文件箩朴。

3.設(shè)計(jì)模式

?在獲取元數(shù)據(jù)對(duì)象信息采用了表驅(qū)動(dòng)的模式岗喉,抽取共性:從數(shù)據(jù)庫(kù)獲取多種對(duì)象,結(jié)果為ObjectMetaMap,方便代碼的擴(kuò)展和維護(hù)隧饼∩虮ぃ控制函數(shù)為GetMetadataForObjectType。

圖2 表驅(qū)動(dòng)模式


三燕雁、相關(guān)文章

1.Greenplum · 源碼閱讀 · gpbackup的參數(shù)檢查源碼分析

2.Greenplum · 源碼閱讀 · gpbackup的DoSetup源碼分析

四诞丽、代碼位置

https://github.com/greenplum-db/gpbackup/tree/master/backup

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市拐格,隨后出現(xiàn)的幾起案子僧免,更是在濱河造成了極大的恐慌,老刑警劉巖捏浊,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件懂衩,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡金踪,警方通過查閱死者的電腦和手機(jī)浊洞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胡岔,“玉大人法希,你說我怎么就攤上這事“腥常” “怎么了苫亦?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)怨咪。 經(jīng)常有香客問我屋剑,道長(zhǎng),這世上最難降的妖魔是什么诗眨? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任唉匾,我火速辦了婚禮,結(jié)果婚禮上匠楚,老公的妹妹穿的比我還像新娘肄鸽。我一直安慰自己卫病,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布典徘。 她就那樣靜靜地躺著,像睡著了一般益咬。 火紅的嫁衣襯著肌膚如雪逮诲。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天幽告,我揣著相機(jī)與錄音梅鹦,去河邊找鬼。 笑死冗锁,一個(gè)胖子當(dāng)著我的面吹牛齐唆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播冻河,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼箍邮,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了叨叙?” 一聲冷哼從身側(cè)響起锭弊,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎擂错,沒想到半個(gè)月后味滞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡钮呀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年剑鞍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片爽醋。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蚁署,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出子房,到底是詐尸還是另有隱情形用,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布证杭,位于F島的核電站田度,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏解愤。R本人自食惡果不足惜镇饺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望送讲。 院中可真熱鬧奸笤,春花似錦惋啃、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至健盒,卻和暖如春绒瘦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背扣癣。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工惰帽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人父虑。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓该酗,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親士嚎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子呜魄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355