GaussDB 200使用GDS服務導入導出數據

GaussDB 200支持將存在遠端服務器上的TEXT、CSV和FIXED格式的數據導入到集羣中。本文介紹使用GDS(Gauss Data Service)工具將遠端服務器上的數據導入GaussDB 200。環境如下表:
GaussDB 200使用GDS服務導入導出數據

1、準備源數據

這裏從PostgreSQL數據庫中,使用copy命令導出一個csv格式的文件,如下:

rhnschema=> copy rhnpackagefile to '/tmp/rhnpackagefile.csv' with csv;

2、安裝並啓動GDS

  • 創建用戶以及用戶組
[root@hd04 bin]# groupadd gdsgrp
[root@hd04 bin]# useradd -g gdsgrp gds_user
  • 創建相關目錄
    分別創建存放源數據以及GDS安裝目錄(自定義)。
    [root@hd04 ~]# mkdir /opt/bin   --GDS安裝目錄
    [root@hd04 ~]# mkdir /opt/data --源數據存放目錄
    [root@hd04 ~]# chown -R gds_user:gdsgrp /opt/bin/gds
    [root@hd04 ~]# chown -R gds_user:gdsgrp /opt/data
  • 拷貝源數據到數據目錄
    [root@hd04 ~]# su - gds_user
    [gds_user@hd04 ~]$ scp root@hd01:/tmp/rhnpackagefile.csv /opt/data
  • 安裝GDS服務
    GDS工具位於GassDB安裝包裏,需要單獨解壓出來,以redhat的安裝包爲例,如下:
    [root@hd04 ~]# tar -xzf GaussDB_200_6.5.1_RHEL.tar.gz

    解壓後找到GaussDB-Kernel-V300R002C00-REDHAT-64bit-Gds.tar.gz壓縮包,並解壓至GDS安裝目錄。

    [gds_user@hd04 ~]$ cd /opt/bin
    [gds_user@hd04 bin]$ tar -xzf /tmp/GaussDB-Kernel-V300R002C00-REDHAT-64bit-Gds.tar.gz

    然後以root用戶修改/etc/profile,加入以下內容:

    [root@hd04 ~]# vi /etc/profile
    export LD_LIBRARY_PATH="/opt/bin/lib:$LD_LIBRARY_PATH"

    此處主要是配置GDS庫路徑,因爲它依賴了Cjson動態庫。

  • 啓動GDS服務
    [root@hd04 ~]# su - gds_user
    [gds_user@hd04 ~]$ /opt/bin/gds/gds -d /opt/data -p 192.168.120.25:5000 -H 192.168.110.1/24,192.168.120.1/24 -l /opt/bin/gds/gds_log.txt -D

    GDS的啓動模式有兩種:非ssl傳輸數據模式和ssl加密方式傳輸數據模式。上面使用的是非ssl傳輸數據模式。
    對於ssl模式,需要將GaussDB創建的GDS證書拷貝到GDS的安裝目錄裏,如下:

    [gds_user@hd04 ~]$ cd /opt/bin/
    [gds_user@hd04 bin]$ scp -r root@hd01:/opt/huawei/Bigdata/mppdb/core/share/sslcert/gds ./

    以ssl模式啓動GDS服務如下:

    [gds_user@hd04 ~]$ /opt/bin/gds/gds -d /opt/data -p 192.168.120.25:5000 -H 192.168.110.1/24 -l /opt/bin/gds/gds_log.txt -D --enable-ssl --ssl-dir /opt/bin/gds

    參數說明如下圖所示:
    GaussDB 200使用GDS服務導入導出數據

    3、創建表並導入數據

    這裏需要創建外表以及目標表,語句如下:
    GaussDB 200使用GDS服務導入導出數據
    外表參數如下圖所示:
    GaussDB 200使用GDS服務導入導出數據
    創建目標表,如下:
    GaussDB 200使用GDS服務導入導出數據
    使用如下命令導入數據:

    rhnschema=# INSERT INTO rhnpackagefile2 SELECT * FROM f_rhnpackagefile;
    INSERT 0 27942567

    GaussDB 200使用GDS服務導入導出數據
    在導入過程中,如果出現數據格式錯誤,系統會記錄到一張error表裏(創建外表時指定的表)。

    4、優化導入數據的查詢性能

    在數據導入完成後,執行ANALYZE語句生成表統計信息。執行計劃生成器會使用這些統計數據,以生成最有效的查詢執行計劃。

如果導入過程中,進行了大量的更新或刪除行時,應運行VACUUM FULL命令,然後運行ANALYZE命令。大量的更新和刪除操作,會產生大量的磁盤頁面碎片,從而逐漸降低查詢的效率。VACUUM FULL可以將磁盤頁面碎片恢復並交還操作系統。

rhnschema=# VACUUM FULL rhnpackagefile2;
VACUUM
rhnschema=# ANALYZE rhnpackagefile2;
ANALYZE

5、停止GDS服務

導入完成後,如果不需要GDS服務,可以將其停止。以gds_user用戶,查詢出GDS服務的進程號將其kill掉即可。

6、使用外表並行導出數據

使用GDS工具將數據從數據庫導出到普通文件系統中,適用於高併發、大量數據導出的場景。通過外表設置的導出模式、導出數據格式等信息來指定待導出的數據文件,利用多DN並行的方式,將數據從數據庫導出到數據文件中,從而提高整體導出性能。不支持直接導出文件到HDFS文件系統。

  • CN只負責任務的規劃及下發,把數據導出的工作交給了DN,釋放了CN的資源,使其有能力處理外部請求。
  • 通過讓各個DN都參與數據導出,充分利用各個設備的計算能力及網絡帶寬。
    GaussDB 200使用GDS服務導入導出數據

GaussDB 200支持的導出模式有Local和Remote模式。

  • Remote模式:將集羣中的業務數據導出到集羣之外的主機上。
    支持多個GDS服務併發導出,但1個GDS在同一時刻,只能爲1個集羣提供導出服務。
    配置與集羣節點處於統一內網的GDS服務,導出速率受網絡帶寬影響,推薦的網絡配置爲10GE。
    支持數據文件格式:TEXT、CSV和FIXED。單行數據大小需<1GB。
  • Local模式:將集羣中的業務數據導出到集羣節點所在主機上。一種專門爲大量小文件而定製的一種策略。
    數據將均勻切割並生成到集羣節點上指定的文件夾下,需佔用集羣節點的磁盤空間。
    支持數據文件格式:TEXT、CSV和FIXED。單行數據大小需<1GB。
    GaussDB 200使用GDS服務導入導出數據
  • 創建外表
    SQL如下圖:
    GaussDB 200使用GDS服務導入導出數據
  • 導出數據
    rhnschema=# insert into f_rhnpackagerepodata select *from rhnpackagerepodata;
    INSERT 0 94519

    GaussDB 200使用GDS服務導入導出數據

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