恢復PostgreSQL數據庫備份至GuassDB 200

gs_restore是GaussDB 200提供的與gs_dump配套的導入工具。通過該工具,可將gs_dump導出的文件導入至數據庫。這裏通過postgreSQL的pg_dump命令備份數據庫,然後通過gs_restore將其恢復到GuassDB 200中。

1、備份PostgreSQL

[postgres@oln ~]$ pg_dump -Fc -C rhnschema >/var/satellite/bak/pg_rhnschema.dump 

2、GuassDB創建對應數據庫以及用戶

[omm@hd06 ~]$ gsql -d rhnschema -p 25308
gsql ((GaussDB Kernel V300R002C00 build 8a9c1eb6) compiled at 2019-08-01 18:47:38 commit 6093 last mr 10175 )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

rhnschema=# CREATE DATABASE rhnschema WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8';
rhnschema=# create role spwuser with sysadmin createdb password 'abcABC12';
rhnschema=# alter database rhnschema owner to spwuser;

3、執行gs_restore進行恢復

[omm@hd06 ~]$ gs_restore -j 4 -p 25308 -d rhnschema /tmp/pg_rhnschema.dmp

-j--代表同時運行多個進程,這個裏爲4個;
-p--代表GuassDB端口號,默認爲25308;
-d--連接數據庫的dbname,並直接將數據導入到該數據庫中。

4、查看數據傾斜狀態

GaussDB 200是採用Shared-nothing架構的MPP(Massive Parallel Processor,大規模併發處理)系統,採用水平分佈的方式,將業務數據表的元組按合適的分佈策略分散存儲在所有的DN。

當前產品支持複製(Replication)和散列(Hash)兩種用戶表分佈策略。

  • Replication方式:在每一個DN上存儲一份全量表數據。對於數據量比較小的表建議採取Replication分佈策略。
  • Hash方式:採用這種分佈方式,需要爲用戶表指定一個分佈列(distribute key)。當插入一條記錄時,系統會根據分佈列的值進行hash運算後,將數據存儲在對應的DN中。對於數據量比較大的表建議採取Hash分佈策略。

對於Hash分佈策略,如果分佈列選擇不當,可能導致數據傾斜。因此在採用Hash分佈策略之後會對用戶表的數據進行數據傾斜性檢查,以確保數據在各個DN上是均勻分佈的。一般情況下分佈列都是選擇鍵值重複度小,數據分佈比較均勻的列。

  • 確認集羣環境中的DN數
    rhnschema=# SELECT count(*) FROM pgxc_node where node_type='D';

    恢復PostgreSQL數據庫備份至GuassDB 200

  • 查看錶的數據傾斜性
    以下查詢兩張較大表的數據傾斜性。
    rhnschema=# SELECT a.count,b.node_name FROM (SELECT count(*) AS count,xc_node_id FROM rhnchecksum GROUP BY xc_node_id) a, pgxc_node b WHERE a.xc_node_id=b.node_id ORDER BY a.count desc;

    恢復PostgreSQL數據庫備份至GuassDB 200
    恢復PostgreSQL數據庫備份至GuassDB 200
    根據查詢結果得知,各DN上數據分佈差小於10%,數據分佈均衡。若各DN上數據分佈差大於等於10%,表明數據分佈傾斜,需要刪除目標表,然後重新導入。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章