openGauss學(xué)習(xí)筆記-148 openGauss 數(shù)據(jù)庫運(yùn)維-備份與恢復(fù)-邏輯備份與恢復(fù)之gs_dumpall

openGauss學(xué)習(xí)筆記-148 openGauss 數(shù)據(jù)庫運(yùn)維-備份與恢復(fù)-邏輯備份與恢復(fù)之gs_dumpall148.1 背景信息148.2 注意事項(xiàng)148.3 語法148.4 參數(shù)說明148.4.1 通用參數(shù)148.4.2 轉(zhuǎn)儲(chǔ)參數(shù)148.5 說明148.6 示例

openGauss學(xué)習(xí)筆記-148 openGauss 數(shù)據(jù)庫運(yùn)維-備份與恢復(fù)-邏輯備份與恢復(fù)之gs_dumpall

148.1 背景信息

gs_dumpall是openGauss用于導(dǎo)出所有數(shù)據(jù)庫相關(guān)信息工具,它可以導(dǎo)出openGauss數(shù)據(jù)庫的所有數(shù)據(jù),包括默認(rèn)數(shù)據(jù)庫postgres的數(shù)據(jù)、自定義數(shù)據(jù)庫的數(shù)據(jù)以及openGauss所有數(shù)據(jù)庫公共的全局對(duì)象。

gs_dumpall工具由操作系統(tǒng)用戶omm執(zhí)行。

gs_dumpall工具在進(jìn)行數(shù)據(jù)導(dǎo)出時(shí),其他用戶可以訪問openGauss數(shù)據(jù)庫(讀或?qū)懀?/p>

gs_dumpall工具支持導(dǎo)出完整一致的數(shù)據(jù)。例如,T1時(shí)刻啟動(dòng)gs_dumpall導(dǎo)出openGauss數(shù)據(jù)庫,那么導(dǎo)出數(shù)據(jù)結(jié)果將會(huì)是T1時(shí)刻該openGauss數(shù)據(jù)庫的數(shù)據(jù)狀態(tài),T1時(shí)刻之后對(duì)openGauss的修改不會(huì)被導(dǎo)出。

gs_dumpall時(shí)生成列不會(huì)被轉(zhuǎn)儲(chǔ)。

gs_dumpall在導(dǎo)出openGauss所有數(shù)據(jù)庫時(shí)分為兩部分:

  • gs_dumpall自身對(duì)所有數(shù)據(jù)庫公共的全局對(duì)象進(jìn)行導(dǎo)出,包括有關(guān)數(shù)據(jù)庫用戶和組、表空間以及屬性(例如,適用于數(shù)據(jù)庫整體的訪問權(quán)限)信息。

  • gs_dumpall通過調(diào)用gs_dump來完成openGauss中各數(shù)據(jù)庫的SQL腳本文件導(dǎo)出,該腳本文件包含將數(shù)據(jù)庫恢復(fù)為其保存時(shí)的狀態(tài)所需要的全部SQL語句。

以上兩部分導(dǎo)出的結(jié)果為純文本格式的SQL腳本文件,使用gsql運(yùn)行該腳本文件可以恢復(fù)openGauss數(shù)據(jù)庫。

148.2 注意事項(xiàng)

  • 禁止修改導(dǎo)出的文件和內(nèi)容,否則可能無法恢復(fù)成功。

  • 為了保證數(shù)據(jù)一致性和完整性,gs_dumpall會(huì)對(duì)需要轉(zhuǎn)儲(chǔ)的表設(shè)置共享鎖。如果某張表在別的事務(wù)中設(shè)置了共享鎖,gs_dumpall會(huì)等待此表的鎖釋放后鎖定此表。如果無法在指定時(shí)間內(nèi)鎖定某張表,轉(zhuǎn)儲(chǔ)會(huì)失敗。用戶可以通過指定–lock-wait-timeout選項(xiàng),自定義等待鎖超時(shí)時(shí)間。

  • 由于gs_dumpall讀取所有數(shù)據(jù)庫中的表,因此必須以openGauss管理員身份進(jìn)行連接,才能導(dǎo)出完整文件。在使用gsql執(zhí)行腳本文件導(dǎo)入時(shí),同樣需要管理員權(quán)限,以便添加用戶和組以及創(chuàng)建數(shù)據(jù)庫。

148.3 語法

gs_dumpall [OPTION]...

148.4 參數(shù)說明

148.4.1 通用參數(shù)

  • -f, –filename=FILENAME

    將輸出發(fā)送至指定文件。如果這里省略,則使用標(biāo)準(zhǔn)輸出。

  • -v, –verbose

    指定verbose模式。該選項(xiàng)將導(dǎo)致gs_dumpall向轉(zhuǎn)儲(chǔ)文件輸出詳細(xì)的對(duì)象注解和啟動(dòng)/停止次數(shù),向標(biāo)準(zhǔn)錯(cuò)誤流輸出處理信息。

  • -V, –version

    打印gs_dumpall版本,然后退出。

  • –lock-wait-timeout=TIMEOUT

    請(qǐng)勿在轉(zhuǎn)儲(chǔ)剛開始時(shí)一直等待以獲取共享表鎖。如果無法在指定時(shí)間內(nèi)鎖定某個(gè)表,就選擇失敗??梢砸匀魏畏蟂ET statement_timeout的格式指定超時(shí)時(shí)間。

  • -?, –help

    顯示gs_dumpall命令行參數(shù)幫助,然后退出。

148.4.2 轉(zhuǎn)儲(chǔ)參數(shù)

  • -a, –data-only

    只轉(zhuǎn)儲(chǔ)數(shù)據(jù),不轉(zhuǎn)儲(chǔ)模式(數(shù)據(jù)定義)。

  • -c, –clean

    在重新創(chuàng)建數(shù)據(jù)庫之前,執(zhí)行SQL語句清理(刪除)這些數(shù)據(jù)庫。針對(duì)角色和表空間的轉(zhuǎn)儲(chǔ)命令已添加。

  • -g, –globals-only

    只轉(zhuǎn)儲(chǔ)全局對(duì)象(角色和表空間),無數(shù)據(jù)庫。

  • -o, –oids

    轉(zhuǎn)儲(chǔ)每個(gè)表的對(duì)象標(biāo)識(shí)符(OIDs),作為表的一部分?jǐn)?shù)據(jù)。該選項(xiàng)用于應(yīng)用以某種方式參照了OID列的情況。如果不是以上這種情況,請(qǐng)勿使用該選項(xiàng)。

  • -O, –no-owner

    不輸出設(shè)置對(duì)象的歸屬這樣的命令,以匹配原始數(shù)據(jù)庫。默認(rèn)情況下,gs_dumpall會(huì)發(fā)出ALTER OWNER或SET SESSION AUTHORIZATION語句設(shè)置所創(chuàng)建的模式元素的所屬。如果腳本正在運(yùn)行,該語句不會(huì)執(zhí)行成功,除非是由系統(tǒng)管理員觸發(fā)(或是擁有腳本中所有對(duì)象的同一個(gè)用戶)。通過指定-O,編寫一個(gè)任何用戶都能存儲(chǔ)的腳本,且該腳本會(huì)授予該用戶擁有所有對(duì)象的權(quán)限。

  • -r, –roles-only

    只轉(zhuǎn)儲(chǔ)角色,不轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫或表空間。

  • -s, –schema-only

    只轉(zhuǎn)儲(chǔ)對(duì)象定義(模式),而非數(shù)據(jù)。

  • -S, –sysadmin=NAME

    該參數(shù)為擴(kuò)展預(yù)留接口,不建議使用。。

  • -t, –tablespaces-only

    只轉(zhuǎn)儲(chǔ)表空間,不轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫或角色。

  • -x, –no-privileges

    防止轉(zhuǎn)儲(chǔ)訪問權(quán)限(授權(quán)/撤銷命令)。

  • –column-inserts|–attribute-inserts

    以INSERT命令帶列名(INSERT INTO表(列、…)值…)方式導(dǎo)出數(shù)據(jù)。這會(huì)導(dǎo)致恢復(fù)緩慢。但是由于該選項(xiàng)會(huì)針對(duì)每行生成一個(gè)獨(dú)立分開的命令,所以在重新加載某行時(shí)出現(xiàn)的錯(cuò)誤只會(huì)導(dǎo)致那行丟失,而非整個(gè)表內(nèi)容。

  • –disable-dollar-quoting

    該選項(xiàng)將禁止在函數(shù)體前使用美元符號(hào)$,并強(qiáng)制使用SQL標(biāo)準(zhǔn)字符串語法對(duì)其進(jìn)行引用。

  • –disable-triggers

    該參數(shù)為擴(kuò)展預(yù)留接口,不建議使用。

  • –inserts

    發(fā)出INSERT命令(而非COPY命令)轉(zhuǎn)儲(chǔ)數(shù)據(jù)。這會(huì)導(dǎo)致恢復(fù)緩慢。注意:如果重排列順序,可能會(huì)導(dǎo)致恢復(fù)整個(gè)失敗。–column-inserts選項(xiàng)更加安全,雖然可能更慢些。

  • –no-security-labels

    該參數(shù)為擴(kuò)展預(yù)留接口,不建議使用。

  • –no-tablespaces

    請(qǐng)勿輸出創(chuàng)建表空間的命令,也請(qǐng)勿針對(duì)對(duì)象選擇表空間。使用該選項(xiàng),無論默認(rèn)表空間是哪個(gè),在恢復(fù)過程中所有對(duì)象都會(huì)被創(chuàng)建。

  • –no-publications

    不轉(zhuǎn)儲(chǔ)發(fā)布。

  • –no-security-labels

    該參數(shù)為擴(kuò)展預(yù)留接口,不建議使用。

  • –no-subscriptions

    不轉(zhuǎn)儲(chǔ)訂閱。

  • –include-alter-table

    導(dǎo)出表中已刪除的列信息。

  • –quote-all-identifiers

    強(qiáng)制對(duì)所有標(biāo)識(shí)符加引號(hào)。為了向后續(xù)版本遷移,且其中可能涉及引入額外關(guān)鍵詞,在轉(zhuǎn)儲(chǔ)相應(yīng)數(shù)據(jù)庫時(shí)該選項(xiàng)會(huì)有幫助。

  • –dont-overwrite-file

    不重寫當(dāng)前文件。

  • –use-set-session-authorization

    輸出符合SQL標(biāo)準(zhǔn)的SET SESSION AUTHORIZATION命令而不是ALTER OWNER命令來確定對(duì)象所有權(quán)。這樣令轉(zhuǎn)儲(chǔ)更加符合標(biāo)準(zhǔn),但是如果轉(zhuǎn)儲(chǔ)文件中的對(duì)象的歷史有些問題,那么可能不能正確恢復(fù)。并且,使用SET SESSION AUTHORIZATION的轉(zhuǎn)儲(chǔ)需要數(shù)據(jù)庫系統(tǒng)管理員的權(quán)限才能轉(zhuǎn)儲(chǔ)成功,而ALTER OWNER需要的權(quán)限則低得多。

  • –with-encryption=AES128

    指定轉(zhuǎn)儲(chǔ)數(shù)據(jù)需用AES128進(jìn)行加密。

  • –with-key=KEY

    AES128密鑰規(guī)則如下:

    • 密鑰長(zhǎng)度為8~16個(gè)字符。

    • 至少包含大寫字母(A-Z),小寫字母(a-z),數(shù)字(0-9),非字母數(shù)字字符(限定為~!@#$%^&*()-_=+|[{}];:,<.>/?)四類字符中的三類字符。

  • –include-Extensions

    如果include-Extensions參數(shù)被設(shè)置,將備份所有的CREATE Extension語句。

  • –include-templatedb

    轉(zhuǎn)儲(chǔ)過程中包含模板庫。

  • –binary-upgrade

    該參數(shù)為擴(kuò)展預(yù)留接口,不建議使用。

  • –binary-upgrade-usermap=“USER1=USER2”

    該參數(shù)為擴(kuò)展預(yù)留接口,不建議使用。

  • –non-lock-table

    該參數(shù)僅供軟件間接口調(diào)用。

  • –tablespaces-postfix

    該參數(shù)為擴(kuò)展預(yù)留接口,不建議使用。

  • –parallel-jobs

    指定備份進(jìn)程并發(fā)數(shù),取值范圍為1~1000。

  • –pipeline

    使用管道傳輸密碼,禁止在終端使用。

[圖片上傳失敗...(image-b15afb-1702083855992)]

說明:

  • -g/–globals-only和-r/–roles-only不能同時(shí)使用。
  • -g/–globals-only和-t/–tablespaces-only不能同時(shí)使用。
  • -r/–roles-only和-t/–tablespaces-only不能同時(shí)使用。
  • -s/–schema-only和-a/–data-only不能同時(shí)使用。
  • -r/–roles-only和-a/–data-only不能同時(shí)使用。
  • -t/–tablespaces-only和-a/–data-only不能同時(shí)使用。
  • -g/–globals-only和-a/–data-only不能同時(shí)使用。
  • –tablespaces-postfix和–binary-upgrade必須一起使用。
  • –binary-upgrade-usermap和–binary-upgrade必須一起使用。
  • –parallel-jobs和-f/–file必須一起使用。

連接參數(shù):

  • -h, –host=HOSTNAME

    指定主機(jī)的名稱。如果取值是以斜線開頭,它將用作Unix域套接字的目錄。默認(rèn)值取自PGHOST環(huán)境變量;如果沒有設(shè)置,將啟動(dòng)某個(gè)Unix域套接字建立連接。

    該參數(shù)只針對(duì)openGauss外,對(duì)openGauss內(nèi)本機(jī)只能用127.0.0.1。

    環(huán)境變量:PGHOST

  • -l, –database=DATABASENAME

    指定所連接的轉(zhuǎn)儲(chǔ)全局對(duì)象的數(shù)據(jù)庫名稱,并去尋找還有其他哪些數(shù)據(jù)庫需要被轉(zhuǎn)儲(chǔ)。如果沒有指定,會(huì)使用postgres數(shù)據(jù)庫,如果postgres數(shù)據(jù)庫不存在,會(huì)使用template1。

  • -p, –port=PORT

    指定服務(wù)器所偵聽的TCP端口或本地Unix域套接字后綴,以確保連接。默認(rèn)值設(shè)置為PGPORT環(huán)境變量。

    在開啟線程池情況下,建議使用 pooler port,即偵聽端口+1。

    環(huán)境變量:PGPORT

  • -U, –username=NAME

    所連接的用戶名。

    環(huán)境變量:PGUSER

  • -w, –no-password

    不出現(xiàn)輸入密碼提示。如果服務(wù)器要求密碼認(rèn)證并且密碼沒有通過其它形式給出,則連接嘗試將會(huì)失敗。 該選項(xiàng)在批量工作和不存在用戶輸入密碼的腳本中很有幫助。

  • -W, –password=PASSWORD

    指定用戶連接的密碼。如果主機(jī)的認(rèn)證策略是trust,則不會(huì)對(duì)系統(tǒng)管理員進(jìn)行密碼驗(yàn)證,即無需輸入-W選項(xiàng);如果沒有-W選項(xiàng),并且不是系統(tǒng)管理員,“Dump Restore工具”會(huì)提示用戶輸入密碼。

  • –role=ROLENAME

    指定創(chuàng)建轉(zhuǎn)儲(chǔ)使用的角色名。選擇該選項(xiàng),會(huì)使gs_dumpall連接數(shù)據(jù)庫后,發(fā)起一個(gè)SET ROLE角色名命令。當(dāng)所授權(quán)用戶(由-U指定)沒有g(shù)s_dumpall要求的權(quán)限時(shí),該選項(xiàng)會(huì)起到作用,即切換到具備相應(yīng)權(quán)限的角色。某些安裝操作規(guī)定不允許直接以系統(tǒng)管理員身份登錄,而使用該選項(xiàng)能夠在不違反該規(guī)定的情況下完成轉(zhuǎn)儲(chǔ)。

  • –rolepassword=ROLEPASSWORD

    指定具體角色用戶的角色密碼。

148.5 說明

由于gs_dumpall內(nèi)部調(diào)用gs_dump,所以一些診斷信息參見gs_dump。

一旦恢復(fù),最好在每個(gè)數(shù)據(jù)庫上運(yùn)行ANALYZE,優(yōu)化程序提供有用的統(tǒng)計(jì)數(shù)據(jù)。

gs_dumpall恢復(fù)前需要所有必要的表空間目錄為空;否則,對(duì)于處在非默認(rèn)位置的數(shù)據(jù)庫,數(shù)據(jù)庫創(chuàng)建會(huì)失敗。

148.6 示例

使用gs_dumpall一次導(dǎo)出openGauss的所有數(shù)據(jù)庫。

[圖片上傳失敗...(image-a9d323-1702083855992)]

說明:

gs_dumpall僅支持純文本格式導(dǎo)出。所以只能使用gsql恢復(fù)gs_dumpall導(dǎo)出的轉(zhuǎn)儲(chǔ)內(nèi)容。

gs_dumpall -f backup/bkp2.sql -p 37300
gs_dump[port='37300'][dbname='postgres'][2018-06-27 09:55:09]: The total objects number is 2371.
gs_dump[port='37300'][dbname='postgres'][2018-06-27 09:55:35]: [100.00%] 2371 objects have been dumped.
gs_dump[port='37300'][dbname='postgres'][2018-06-27 09:55:46]: dump database dbname='postgres' successfully
gs_dump[port='37300'][dbname='postgres'][2018-06-27 09:55:46]: total time: 55567  ms
gs_dumpall[port='37300'][2018-06-27 09:55:46]: dumpall operation successful
gs_dumpall[port='37300'][2018-06-27 09:55:46]: total time: 56088  ms

?? 點(diǎn)贊,你的認(rèn)可是我創(chuàng)作的動(dòng)力!

?? 收藏,你的青睞是我努力的方向!

?? 評(píng)論,你的意見是我進(jìn)步的財(cái)富!

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容