GaussDB Roach邏輯備份恢復

      網友投稿 1397 2022-05-29

      目錄:

      GaussDB Roach邏輯備份恢復原理

      gs_dump邏輯備份恢復工具

      roach邏輯備份恢復

      GaussDB?Roach邏輯備份恢復實踐

      邏輯備份恢復支持、規格及約束

      續備份、續恢復

      邏輯備份刪除

      存儲介質

      容錯支持

      特殊表名

      并行處理

      最佳實踐

      FAQ

      GaussDB Roach邏輯備份恢復

      GaussDB Roach邏輯備份恢復原理:

      1.? gs_dump邏輯備份恢復:

      可以設置事務隔離級別。

      gs_dump一致性備份:在單個database內保持一致,不同database之間無法保持一致,因為不同database之間需要切換connection,不能在不同database之間共享snapshot,因此只能在同一個database內保持一致性。

      如果不保持一致。一個database數據量非常大,gs_dump備份時間會比較長,將會持有鎖比較長的時間,對于一些需要ddl操作的database實例來說無法忍受。

      解決方案:

      細粒度備份,而不要備份整個database,

      一次只備份一個table,調用gs_dump多次。

      如果多個表之間有關聯,將這些表放入一個gs_dump操作中,用-t tablename來操作。但是這個-t其實是解決了依賴關系,本質上還是按照依賴順序串行導出。

      一個單表數據量非常大,考慮分區表,也就是將數據進行了分片。否則這些表的ddl將會增加gs_dump之間的沖突。

      對于數據量非常大的databse實例,推薦使用PITR物理增量備份。

      gs_dump并行備份: gs_dump版本>=9.3,server版本>=9.2,需要支持pg_export snapshot

      n+1個連接,-j n是并行度,1是主節點的連接

      對于版本<9.2,需要并行度和數據庫一致性,在備份的時候不能做dml操作。

      2.? roach邏輯備份恢復:

      GaussDB是一個分布式數據庫,數據自動分片存儲。

      GaussDB roach采用了基于單表粒度的備份恢復來實現邏輯備份,即一次只備份一個table,每次通過gs_dump導出table的ddl語句,并通過單獨的外表方法(roach外表方法)來導出數據(不同表之間不保證數據一致性)。

      GaussDB?Roach邏輯備份恢復實踐:

      1. 邏輯備份恢復:

      支持單表、多表(可以是不同schema的表)、schema、database級別邏輯備份。

      schema、database都默認轉為多表邏輯執行(基于單表的串行實現),備份出schema、database內包含的所有表數據。

      可以從多表、schema、或者database邏輯備份中恢復出任意單張表或者多張表。

      規格約束:不支持private table,nodegroup table, replication table,table has trigger/sequence表的備份恢復。

      對于表之間依賴關系,trigger,sequence,index等沒有進行導出,只備份恢復數據。

      單表: --tablename table? 其中tablename可以是schema.table; schema默認為public,database默認為postgres

      單表備份:python $GPHOME/script/GaussRoach.py --master-port 9500 --agent-port 9600 --media-destination media_path? --metadata-destination metadata_path? --media-type DISK? --logging --logging-level INFO -t backup?--tablename table?[--schemaname schema] [--dbname database]

      單表恢復:python $GPHOME/script/GaussRoach.py --master-port 9500 --agent-port 9600 --media-destination media_path? --metadata-destination metadata_path? --media-type DISK? --logging --logging-level INFO -t restore?--tablename table?[--schemaname schema] [--dbname database]? --backup-key bkpkey [--clean]/[--create]

      多表: --table-list?????? --table-list選項與--tablename以及--schemaname不兼容;可以是不同schema中的表

      tablelist文件內容示例:

      public.t1

      gauss.test

      T2

      Public."Temp"

      漢字表名

      cc.1a

      多表備份:python $GPHOME/script/GaussRoach.py --master-port port_no --agent-port?port_no?--media-destination media_path? --metadata-destination metadata_path? --media-type DISK? --logging --logging-level INFO -t backup?--table-list tablelist?[--schemaname schema] [--dbname database]

      多表恢復:python $GPHOME/script/GaussRoach.py --master-port 9500 --agent-port 9600 --media-destination media_path? --metadata-destination metadata_path? --media-type DISK? --logging --logging-level INFO -t restore?--tablelist?tablelist? [--dbname database]? --backup-key bkpkey [--clean]/[--create]

      Schema: --schemaname

      Schema規格約束:?其中系統級schema "dbms_job", "dbms_lob", "dbms_om", "dbms_output", "dbms_random", "dbms_redact", "dbms_sql", "sys", "utl_file", "utl_raw", "cstore"不支持備份恢復,都會報錯退出。

      Schema備份:python $GPHOME/script/GaussRoach.py --master-port?port_no??--agent-port?port_no?--media-destination media_path? --metadata-destination metadata_path? --media-type DISK? --logging --logging-level INFO -t backup?--schemaname schema?[--dbname database]

      Schema恢復:python $GPHOME/script/GaussRoach.py --master-port?port_no?--agent-port?port_no?--media-destination media_path? --metadata-destination metadata_path? --media-type DISK? --logging --logging-level INFO -t restore?--schemaname schema? [--dbname database]? --backup-key bkpkey [--clean]/[--create]

      其中-t restore?--schemaname schema? --dbname database --backup-key bkpkey 可以從database級別邏輯備份中恢復出指定的schema

      Database:?? --dbname

      Database規格約束:其中系統級schema "dbms_job", "dbms_lob", "dbms_om", "dbms_output", "dbms_random", "dbms_redact", "dbms_sql", "sys", "utl_file", "utl_raw", "cstore"不支持備份恢復,都會被默認過濾掉。

      Database備份:python $GPHOME/script/GaussRoach.py --master-port?port_no?--agent-port?port_no?--media-destination media_path? --metadata-destination metadata_path? --media-type DISK? --logging --logging-level INFO -t backup --dbname database

      Database恢復:python $GPHOME/script/GaussRoach.py --master-port?port_no?--agent-port?port_no?--media-destination media_path? --metadata-destination metadata_path? --media-type DISK? --logging --logging-level INFO -t restore?--dbname database? --backup-key bkpkey [--clean]/[--create]

      2. 邏輯續備份、續恢復:

      邏輯備份續備份、續恢復。其中續備份對于已經進行過校驗的表名不會繼續校驗,以提升效率。如果在續備份時某些表已經被過濾掉,沒有實際備份,而用戶又對表對象屬性進行了修改,希望能夠得到備份,則考慮重新進行單表、多表重新備份,或者等待下次備份即可。

      多表、schema、database等均支持續備份、續恢復,僅在備份、恢復失敗之后才需要做。

      續備份:?--resume-backup --backup-key bkpkey

      python $GPHOME/script/GaussRoach.py --master-port?port_no?--agent-port?port_no?--media-destination media_path? --metadata-destination metadata_path? --media-type DISK? --logging --logging-level INFO -t backup?--schemaname schema?[--dbname database]?--resume-backup? --backup-key bkpkey

      續恢復:?--resume-restore--backup-key bkpkey

      python $GPHOME/script/GaussRoach.py --master-port?port_no?--agent-port?port_no?--media-destination media_path? --metadata-destination metadata_path? --media-type DISK? --logging --logging-level INFO -t restore?--schemaname schema? [--dbname database]??--backup-key bkpkey?[--clean]/[--create]?--resume-restore

      3. 邏輯備份刪除: 通過指定backupkey來刪除,cascade是將所有backupkey全部刪除。

      python $GPHOME/script/GaussRoach.py --master-port?port_no?--media-destination /home/dulong/backup/media? --metadata-destination /home/dulong/backup/metadata? --media-type DISK? --logging --logging-level INFO -t delete?--cascade? --backup-key bkpkey

      4. 存儲介質:一般指定DISK,兼容NBU、OBS等多種存儲方式

      5. 容錯支持:對于不支持的表會進行過濾,不會影響其他表的正常備份恢復。

      恢復到新集群:默認備份恢復database是postgres,可以指定其他database。恢復到新集群需要加--create;而恢復到老集群則最好加--clean,會將原有數據清理刪除再恢復已防止數據冗余;不加則直接恢復數據,可能會導致沖突或者數據冗余。

      同樣的,如果一個數據庫中某些表已經被drop掉,恢復時這些表需要--create,而其他表需要--clean。用--clean時恢復時另一部分需要--create的表會被過濾掉,反之亦然。

      6. 特殊表名:

      漢字表名不需要加雙引號

      大寫表名,大小寫表名,首字母為數字,含有$, . 等特殊字符在對象中等都為特殊對象名。其中除了含大寫字符的不能自動識別外,其余均可自動識別并加上雙引號。表名含有. 時,默認. 前為schema名稱,如果該.就是表名的一部分,則需要加兩側加雙引號,以保證可以識別正確。

      特殊對象名稱需要加雙引號,例如schema名為 a.b,表名為 'public.',傳入必須加雙引號,如‘“a.b”’,‘“public.”’,雙引號外側再加單引號是為了保證正確傳入了對象名,如果傳入“public.”,內部傳入其實為'public.';如果對象名內有大寫字符,也需要加雙引號,否則內核會默認轉為小寫。

      PS: 盡量不要數據庫對象內加各種特殊符號。

      7. 并行處理:

      Gauss數據庫為分布式數據庫,默認進行了分片處理。每個數據庫節點上有一個或多個datanode,一般一個datanode對應一個磁盤,而我們每個節點推薦>=2個datanode保證高可用等。數據落盤為每個datanode同時向磁盤寫數據,不同datanode并行的向磁盤寫入數據。

      每個datanode內為串行的處理表數據,一個表數據處理完之后再處理下一個表(8.1)。在8.1及8.2后續版本中,將實現單個datanode的多個表并行的處理數據(自定義并發度)。

      8. 最佳實踐:

      設置常規作業,利用多表邏輯備份業務中比較重要的表,schema及database備份往往將所有表備份,重要程度不高的表備份恢復仍然有較高開銷。

      對常規作業設置優先級,按優先級進行不同時間間隔的備份與恢復。

      Database級別邏輯備份將備份整庫數據,如果database實例內表數量大且規模大,性能會比較差(單個datanode內串行備份恢復);推薦使用PITR物理增量備份來替代Database邏輯備份。

      如果邏輯備份恢復中途失敗,盡可能使用續備份、續恢復以完成作業。續備份只備份未備份成功的表,且對已經校驗過的表將不會進行二次校驗,而現行的校驗為串行校驗,表數量比較大的時候開銷仍然較大;續恢復將恢復未恢復成功的表。在8.1以及8.2后續版本中,將實現更為細粒度的續備份、續恢復,備份效率將更為提高。

      合理設置壓縮算法和壓縮率

      FAQ:

      1.?Why not gs_dumpall?

      The? gs_dumpall?program exports all databases, one after another, into a single script file, which prevents you from performing the parallel restore. If you back up all ? ? ?databases this way, the restore process will take more time.

      The processing of dumping all databases takes longer than each individual one so you do not know which dump of each database relates to a specific point in time.

      If you have a good reason to use the gs_dump all to backup all databases, the following is the command:

      gs_dumpall -U postgres > c:\gsbackup\all.sql

      2.?Why not gs_dump?

      gs_dump雖然靈活,但是數據導出按照sql或者二進制,僅支持在單節點導出。數據量較大的情況下性能往往較差,且不易擴展。

      3.一致性?

      數據的一致性要求在備份恢復過程中要求并不一定很高,而對于性能,擴展性,靈活性等均有一定要求。因此犧牲一定一致性來換取更好的性能,易用性等,對于實際場景往往可以接受。

      云備份 云數據庫 GaussDB(for openGauss) 云數據庫 GaussDB(for Redis)

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:【網絡通信與信息安全】之深入解析進程之間的通信方式
      下一篇:Flink狀態管理與Checkpoint實戰——模擬電商訂單計算過程中宕機的場景,探索宕機恢復時如何精準繼續計算訂單
      相關文章
      亚洲精品视频在线播放| 亚洲一级毛片视频| 亚洲av永久无码精品网址| 亚洲午夜久久久久久尤物| 亚洲精品免费在线| 久久亚洲精品无码AV红樱桃| 亚洲乱码中文字幕综合| 中文字幕亚洲日韩无线码| 自拍偷自拍亚洲精品偷一| 亚洲AV无码男人的天堂| 午夜亚洲WWW湿好爽| 国产精品亚洲天堂| 国产成人高清亚洲一区久久| 午夜在线亚洲男人午在线| 亚洲AV无码乱码在线观看| 亚洲国产精品一区二区三区久久| 国产亚洲精彩视频| 久久久久亚洲AV无码去区首| 亚洲精品中文字幕无码A片老| 亚洲色大成网站www久久九| 亚洲国产综合AV在线观看| 日韩欧美亚洲中文乱码| 国产偷国产偷亚洲高清人| 亚洲精品无码永久在线观看| 国外亚洲成AV人片在线观看| 亚洲精品无码成人AAA片| 亚洲ⅴ国产v天堂a无码二区| 亚洲美女aⅴ久久久91| 亚洲ts人妖网站| 亚洲私人无码综合久久网| 亚洲AV无码一区二区三区鸳鸯影院| 国产成人高清亚洲一区久久| 久久精品国产精品亚洲| 亚洲αv在线精品糸列| 亚洲黄色免费在线观看| 亚洲人成www在线播放| 亚洲AⅤ男人的天堂在线观看| 亚洲人成人无码网www国产| 亚洲日韩av无码| 91亚洲国产在人线播放午夜| 2020久久精品亚洲热综合一本|