GPDB43 Administrator Guide--第八章 使用gptransfer遷移資料
第八章 使用gptransfer遷移資料
使用gptransfer工具在database之間傳送資料;gptransfer遷移工具可以傳送greenplum資料庫後設資料和資料到另一個資料庫。可以透過工具傳輸整個資料庫內容,也可以只傳輸幾個選定的表資料。傳輸資料的源資料庫與目標資料庫可以是在同一個cluster(segment instance),也可以是在不同的cluster(segment instance)。可以跨所有segment並行傳輸資料,透過gpfdist載入工具還能提高傳輸速度;
gptransfer要求傳輸源與目的都必須是現有的cluster,而且網路可訪問,ssh等效訪問;全資料庫傳輸包括資料庫schema、表資料、索引、檢視、角色、使用者定義函式、資源佇列等。配置檔案,如postgres.conf,pg_hba.conf等需要管理員手動傳輸。用gppkg在資料庫上安裝了擴充套件,如MADlib和程式語言擴充套件,在目標資料庫上也必須要安裝;
一、前提條件
?該gptransfer效用只能用於Greenplum資料庫,包括EMC DCA。 Pivotal HAWQ不支援作為源或目標。
?源和目標的Greenplum叢集必須都是4.2或更高版本。
?至少有一個Greenplum例項必須在其分佈gptransfer工具。該實用程式包括在Greenplum的資料庫版本4.2.8.1及更高和4.3.2.0及更高。如果源或目標都不包括gptransfer,你必須升級其中一個cluster到能使用gptransfer的版本。
?該gptransfer實用程式可以從源或目標資料庫的叢集上執行。
?目的cluster的segment數量必須大於或等於源cluster主機的數量。在目標的segment數量可能比源中的segment數量少,則資料傳輸將以較慢的速度。
?在兩個叢集段主機必須與對方的網路連線。
?在這兩個叢集的每臺主機必須能夠與證照驗證連線到所有其他主機SSH。您可以使用gpssh_exkeys工具來在兩個叢集的主機之間交換公鑰。
二、gptransfer過程
1.在源資料庫建立可寫外部表
2.在目標資料庫建立可讀外部表
3.在源cluster上建立命名管道、gpfdist程式
4.在源資料庫執行select into 到可寫外部表,匯出資料;
5.在目標資料庫執行select into 從可讀外部表插入資料;
6.驗證資料,透過比較行數與MD5雜湊值;
7.清理外部表,命名管道,gpfdist程式;
三、快模式與慢模式
快模式:
慢模式:
四、批次與子批次大小
gptransfer執行的並行程度是由兩個命令列選項來確定的:--batch-size和--sub-batch-size。--batch-size選項指定每批傳輸的表數量。預設指是2,這意味著,每次傳輸兩個表。最小批次大小為1,最大值為10。--sub-batch-size引數指定開始傳輸表操作時並行子過程的最大數目。預設值是25,最大為50。--batch-size和--sub-batch-size的乘積就是並行的數量。
如果設定為預設值,例如,gptransfer可以執行50個併發任務。每個執行緒是一個Python程式並消耗記憶體,所以設定這些值過高,會導致一個Python記憶體錯誤。出於這個原因,批次大小應適應您的環境。
五、準備gptransfer主機
gptransfer要求源和目標的所有主機的ssh等效;另外,gptransfer要求一個主機對映檔案,在選項--source-map-file=host_map_file中指定,格式如下:
host1_name,host1_ip_addr
host2_name,host2_ipaddr
...
六、限制
· gptransfer只傳輸使用者的資料庫,postgres、template0、template1等系統資料庫不能傳輸;配置檔案需要管理員手動傳輸;外掛要單獨安裝;
· 目標cluster segment至少要與源cluster segment 一樣多;如果少的話則傳輸較慢;
· 傳輸小表或者空表會出乎意料的慢。因為,固定的開銷是不能避免的,如設定外部表,並行程式建立通訊連線等;因此小表可以採用其他方法傳輸資料;
七、全模式與表模式
全模式(full mode),全資料庫傳輸包括資料庫schema、表資料、索引、檢視、角色、使用者定義函式、資源佇列等。資料庫不能在目標cluster上已經存在,如果存在則,報錯如下:[ERROR]:- gptransfer: error: --full option specified but tables exist on destination system
表模式(table mode),傳輸資料包括表定義,索引,表資料;目標cluster上對應資料庫必須儲存;如果對應表也存在的話,則報錯:
[INFO]:-Validating transfer table set...
[CRITICAL]:- gptransfer failed. (Reason='Table database.schema.table exists in database database .') exiting...
gptransfer選項,-t指定表,-f指表的定列表檔案,格式如:database.schema.table,--skip-existing、--truncate、--drop選項處理存在的表;
Object |
Full Mode |
Table Mode |
Data |
Yes |
Yes |
Indexes |
Yes |
Yes |
Roles |
Yes |
No |
Functions |
Yes |
No |
Resource Queues |
Yes |
No |
postgres.conf |
No |
No |
pg_hba.conf |
No |
No |
gppkg |
No |
No |
八、locking
-x選項開啟表鎖。排它鎖直到表資料copy和驗證完成;
九、驗證
gptransfer --validate=type。型別有兩種:一是count、二是md5
十、失敗傳輸
傳輸失敗的日誌檔案格式是-f選項要求的日誌,因此,可以透過gptransfer -f重新開始傳輸;
例子:
[WARNING]:-Some tables failed to transfer. A list of these tables
[WARNING]:-has been written to the file failed_transfer_tables_20140808_101813.txt
[WARNING]:-This file can be used with the -f option to continue
十一、最佳實踐
1.小心設定並行,不要超過主機記憶體
2.傳輸資料庫時,先使用gptransfer --full 和--schema-only選項,然後,再執行gptransfer --schema-only選項,同時增加--truncate或drop;
3.小心選擇gpfdist和外部表的分隔符
4.如果有許多空表需要傳輸,建議考慮DDL指令碼實現,不要使用gptransfer;
5.如果傳輸的表有索引,傳輸之前最好drop掉。因為,在目標資料庫上載入資料同時還要維護索引,影響傳輸速度;來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16976507/viewspace-1806831/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- GPDB43 Administrator Guide--第三章 訪問GREENPLUM資料庫GUIIDE資料庫
- GPDB43 Administrator Guide--第五章 高可用GUIIDE
- GPDB43 Administrator Guide--第二章 啟動與停止GREENPLUM資料庫GUIIDE資料庫
- GPDB43 Administrator Guide--第四章 配置GREENPLUM資料庫系統GUIIDE資料庫
- GPDB43 Administrator Guide--第六章 備份與恢復資料庫GUIIDE資料庫
- GPDB43 Administrator Guide--第九章 管理greenplum系統GUIIDE
- GPDB43 Administrator Guide--第七章 擴充套件greenplum系統GUIIDE套件
- GPDB43 Administrator Guide--第一章 GREENPLUM 體系結構GUIIDE
- 【遷移】使用rman遷移資料庫資料庫
- 【資料遷移】使用傳輸表空間遷移資料
- 使用RMAN進行資料遷移
- 使用expdp、impdp遷移資料庫資料庫
- 使用prebuilt table 方式遷移資料UI
- 遷移資料.
- 【DATAPUMP】使用DataPump遷移Oracle資料庫Oracle資料庫
- 使用資料泵(expdp、impdp)遷移資料庫流程資料庫
- Kafka資料遷移Kafka
- 資料庫遷移資料庫
- redis資料遷移Redis
- 轉資料遷移
- ORACLE 資料遷移Oracle
- DXWB 資料遷移
- 資料的遷移
- Harbor資料遷移
- 【資料遷移】RMAN遷移資料庫到ASM(三)遷移onlinelog等到ASM資料庫ASM
- 使用impdp,expdp資料泵進入海量資料遷移
- Laravel migration (資料庫遷移) 的使用Laravel資料庫
- 使用RMAN完成跨平臺資料遷移
- 使用RMAN進行Oracle資料庫遷移Oracle資料庫
- 使用RMAN執行oracle ASM資料遷移OracleASM
- 使用RMAN遷移資料庫到異機資料庫
- 使用資料泵遷移遇到的問題
- 使用SqlBulkCopy批量插入或遷移資料(轉)SQL
- 使用bulkCollect解決資料遷移問題
- 資料遷移(1)——通過資料泵表結構批量遷移
- 使用者清理及使用者資料遷移
- gitlab資料遷移Gitlab
- 資料庫遷移 :理解資料庫