GaussDB 200支持將存在遠端服務器上的TEXT、CSV和FIXED格式的數據導入到集羣中。本文介紹使用GDS(Gauss Data Service)工具將遠端服務器上的數據導入GaussDB 200。環境如下表:
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
參數說明如下圖所示:
3、創建表並導入數據
這裏需要創建外表以及目標表,語句如下:
外表參數如下圖所示:
創建目標表,如下:
使用如下命令導入數據:rhnschema=# INSERT INTO rhnpackagefile2 SELECT * FROM f_rhnpackagefile; INSERT 0 27942567
在導入過程中,如果出現數據格式錯誤,系統會記錄到一張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支持的導出模式有Local和Remote模式。
- Remote模式:將集羣中的業務數據導出到集羣之外的主機上。
支持多個GDS服務併發導出,但1個GDS在同一時刻,只能爲1個集羣提供導出服務。
配置與集羣節點處於統一內網的GDS服務,導出速率受網絡帶寬影響,推薦的網絡配置爲10GE。
支持數據文件格式:TEXT、CSV和FIXED。單行數據大小需<1GB。 - Local模式:將集羣中的業務數據導出到集羣節點所在主機上。一種專門爲大量小文件而定製的一種策略。
數據將均勻切割並生成到集羣節點上指定的文件夾下,需佔用集羣節點的磁盤空間。
支持數據文件格式:TEXT、CSV和FIXED。單行數據大小需<1GB。 - 創建外表
SQL如下圖: - 導出數據
rhnschema=# insert into f_rhnpackagerepodata select *from rhnpackagerepodata; INSERT 0 94519