PgSQL·最佳實踐·雲上的資料遷移
title: PgSQL · 最佳實踐 · 雲上的資料遷移
author: 義從
背景
大多數使用雲產品作為 IT 解決方案的客戶同時使用多款雲產品是一個普遍現象。
使用者在多款雲產品之間轉移資料成為一個基礎的需求。
例如
- 1. 使用者把線下機房中的 Oracle 資料庫中的資料 遷移到雲上 RDS PPAS 中。
- 2. 使用 RDS MYSQL 做為資料庫支撐交易型業務場景,同時使用 HybridDB for PostgreSQL 作資料倉儲解決方案。
- 3. 把 ODPS 中的大量資料匯入到 HybridDB for PostgreSQL 進行實時分析。
上述場景都不可避免的需要進行雲上的資料遷移。本文給大家聊聊這方面的一些解決方案,希望能幫助大家用好雲產品。
一:關於硬體
在開始資料遷移之前,我們要對雲相關的硬體有一些瞭解,這往往決定了我們能做到的最好情況,有助於我們選擇最終解決方案。
1. 同一可用區
如果資料在雲上,且在同一可用區間進行交換,那麼恭喜你,這是最有效率的資料交換方式,也是我們最推薦的場景。資料應該儘量在一個可用區。
現階段的雲產品所配置的網路最差都是千兆網路,萬兆網路基本普及。資料的遷移在一個可用區間經過的交換機最小,因此延遲低,頻寬較大,可以做到比較理想的吞吐量。
因此,後端資料庫、前端ECS和存放大量資料的 OSS 都應該在選擇在同一個可用區。
2. 跨可用區、城市間可用區
部分有較高可用性要求的客戶,會選擇同城多可用區部署,甚至跨城市部署。進一步,阿里雲有很多資料產品支援原生的多可用區部署方案。
阿里雲在同城或跨城市的可用區間是通過專線網路連線。在這樣的網路產品中交換資料效率雖然沒有再同一可用區高,但依然能保證較高的網路質量。
從網路通訊效率角度,從高到低自然是:
同可用區 > 同城多可用區間 > 跨城多可用區間
例如:
(華東一 可用區B 內部) > (華東一 可用區B 和 華東一 可用區C 間) > (華東一 可用區B 和 華北一 可用區B 間)
3. 公網和 VPN 網路
這是效率最差的情況,也是背景章節中的資料上雲場景的典型。因為該場景的物理通道是公共的且不可控。往往延遲較大,且質量有較大波動。
先天不足,自然需要用軟體做適當的彌補,通常建議使用者選取具有下列特性的軟體或服務。
- a: 支援重試機制,支援斷點續傳,大任務不能由於一個異常導致整個失敗。
- b: 支援併發機制,使用大併發增大吞吐量。
- c: 使用增量資料遷移減少服務的停機時間。
接下來聊一聊資料交換中的資料格式問題。
二:關於資料格式
在不同資料產品間轉移資料通常有兩種方式
1. 不落地的資料遷移
軟體或服務同時連線到源資料端和目的端,把資料從源端拉出來,轉換成目的端識別的格式後立即寫入到目的端。
該方法不需要資料中轉空間,但要求的網路質量較高。如果資料量超大,如 TB 級,那麼遷移時間也比較長。
阿里雲開源產品 rds_dbsync, CDP(dataX, 雲服務 DTS 都屬於這類。
2. 通過通用檔案格式的資料遷移
如果您的資料量較大,則建議使用離線遷移轉移資料,例如幾十 TB 的數倉資料。
離線遷移是指把全量資料匯出成一種通用的資料格式,再匯入到目的資料庫。
相比不落地資料遷移,他有這些優勢
- 1)離線匯出的資料通常都會進行壓縮,壓縮比一般在 1:2 到 1:5 之間,能較大節省網路開銷,從而提升整體效率。
- 2)離線方式很容易並行化,並行是提高效率的最有效手段。
基於檔案的資料遷移,檔案的格式是其中的關鍵。檔案需要明確的交代資料的組織方式。
目前常用的檔案格式有: TXT/CSV TSV ORC Parquet protobuf 等。
這裡部分資料格式已經自帶資料壓縮,例如 ORC Parquet。 對於未壓縮的格式,如 CSV 可以自由選擇資料壓縮格式,例如 gzip bzip2 snappy 等。
2.1 通過 TEXT/CSV 檔案中轉資料
- 對於結構化資料,比較理想的資料格式是 CSV,CSV 是一種通用的資料格式標準,格式簡單且透明,大家可以參考資料:CSV檔案標準。
- PostgreSQL CSV 引數在資料[2]中。適用於社群和阿里雲的 PostgreSQL 已經 Greenplum 和 HybridDB for PostgreSQL。
-
任何符合 CSV 標準的檔案都可以匯入 PostgreSQL 系列產品。
- PostgreSQL 推送式匯入資料 [COPY] [2]
- HybridDB for PostgreSQL 推送式寫資料 [COPY] [4]
CSV 相對簡單的文字格式的優勢是定義了清楚的語意,用於很容易處理一些複雜的場景
- CSV 行分割符號是 ‘n’ ,也就是換行符
-
DELIMITER 用於定義列的分割符
- 當使用者資料中包括 DELIMITER 時,則需要配合 QUOTE 引數。
- 推薦的列分割符有 ‘,’、‘t‘ 、‘|’ 或一些不常出現的字元。
-
QUOTE 以列為單位包裹有特殊字元的使用者資料
- 使用者包含有特殊字元的字串會被 QUOTE 包裹,用於區分使用者資料和控制字元。
- 如果不必要,例如整數,資料不會被 QUOTE 包裹(用於優化效率)。
- QUOTE 不能和 DELIMITER 相同,預設 QUOTE 是雙引號。
- 當使用者資料中包含了 QUOTE 字元,則需要使用轉義字元 ESCAPE 加以區分。
-
ESCAPE 特殊字元轉義
- 轉義字元出現在需要轉義的特殊字元前,表示它不是一個特殊字元
- ESCAPE 預設和 QUOTE 相同,也就是雙引號。
- 也支援設定成 ‘’(MySQL 預設的轉義字元)或別的字元。
這是典型的 TEXT 和 CSV 檔案中預設的控制字元
控制字元 格式 | TEXT | CSV |
---|---|---|
DELIMITER(列分割符) | t (tab) | , (comma) |
QUOTE(摘引) | ” (double-quote) | “(double-quote) |
ESCAPE(轉義) | (不適用) | 和 QUOTE 相同 |
NULL(空值) | N (backslash-N) | (無引號的空字串) |
所有的控制字元都必須是單位元組字元
2.2 用 OSS 中專資料
OSS 和 AWS 的 S3 一樣,是雲上廉價的儲存服務,它打通了幾乎所有的雲產品。我們推薦使用者使用它來中專大容量資料。
OSS 支援跨可用區資料轉儲資料(跨區域複製),使用者可以很高效的把大量資料轉移到另一個可用區。
目前,雲裳的 PostgreSQL 和 HybridDB for PostgreSQL 都支援 OSS 資料來源的讀寫。
- PostgreSQL + OSS 讀寫外部資料來源 [oss_fdw] [5]
- HybridDB for PostgreSQL + OSS 並行的匯入匯出資料 [oss_ext] [3]
總結
本期分享了雲上和資料轉移相關的幾個簡單技巧,希望能幫到大家用好雲。我們的產品在快速迭代,也請大家多反饋問題,幫助我們進步。
參考資料
- CSV 格式標準
- PostgreSQL COPY
- PostgreSQL + OSS oss_fdw
- HybridDB for PostgreSQL COPY
- HybridDB for PostgreSQL + OSS oss_ext
- 阿里雲開源軟體 rds_dbsync
- SLS 支援投遞 CSV 格式的資料到 OSS
相關文章
- Hadoop資料遷移MaxCompute最佳實踐Hadoop
- 線上資料遷移,數字化時代的必修課 —— 京東雲資料遷移實踐
- 快速雲原生化,從資料中心到雲原生的遷移最佳實踐
- 資料庫上雲實踐:使用Ora2pg進行資料庫遷移資料庫
- MSSQL·最佳實踐·RDSSDK實現資料庫遷移上阿里雲RDSSQLServerSQL資料庫阿里Server
- Jenkins搭建與資料遷移實踐Jenkins
- cassandra百億級資料庫遷移實踐資料庫
- 攜程MySQL遷移OceanBase最佳實踐|分享MySql
- 最佳實踐 | 資料庫遷雲解決方案選型 & 流程全解析資料庫
- 資料庫平滑遷移方案與實踐分享資料庫
- MSSQL·最佳實踐·例項級別資料庫上雲RDSSQLServerSQL資料庫Server
- xtts遷移實踐TTS
- VPGAME 的 Kubernetes 遷移實踐GAM
- VPGAME的Kubernetes遷移實踐GAM
- 騰訊雲 雲資料庫遷移資料庫
- 雲資料庫管理與資料遷移資料庫
- 企業級雲資料庫最佳實踐資料庫
- 高途資料平臺遷移與成本治理實踐
- 阿里雲NAS檔案遷移專案實踐阿里
- 全量、增量資料在HBase遷移的多種技巧實踐
- 阿里雲王林平:一站式資料庫上雲最佳實踐阿里資料庫
- 騰訊安全姬生利:《資料安全法》下,雲上資料安全最佳實踐
- Oracle資料庫(資料泵)遷移方案(上)Oracle資料庫
- 愛奇藝的雲上資料治理實踐
- SaaS 模式雲資料倉儲 MaxCompute 資料安全最佳實踐模式
- Oracle資料庫(DataGuard)遷移方案(上)Oracle資料庫
- 雲資料遷移(Cloud Data Migration,CDM)Cloud
- 【Redis 技術探索】「資料遷移實戰」手把手教你如何實現線上 + 離線模式進行遷移 Redis 資料實戰指南(scan模式遷移)Redis模式
- 金倉資料庫資料遷移實戰:從MySQL到KES的順利遷移資料庫MySql
- Swift Static Libraries遷移實踐Swift
- GaussDB技術解讀系列:資料庫遷移創新實踐資料庫
- 雲時代的資料庫客戶端 —— CloudQuery最佳實踐資料庫客戶端Cloud
- 從 Oracle 到 TiDB,全鏈路資料遷移平臺核心能力和杭州銀行遷移實踐OracleTiDB
- 圖資料庫設計實踐 | 儲存服務的負載均衡和資料遷移資料庫負載
- Mysql百萬級資料遷移,怎麼遷移?實戰過沒?MySql
- 小米Kylin平滑遷移HBase實踐
- 伺服器資料遷移的方法-硬體不同如何遷移資料伺服器
- ORM實操之資料庫遷移ORM資料庫
- 千億級資料遷移mongodb成本節省及效能最佳化實踐(附效能對比質疑解答)MongoDB