本文為您介紹如何同步 RDS PostgreSQL 執行個體的資料至 OceanBase 資料庫 Oracle 租戶。
前提條件
資料轉送已具備雲資源存取權限。詳情請參見 資料轉送遷移角色授權。
已為源端 RDS PostgreSQL 執行個體建立專用於資料同步任務的高許可權帳號。詳情請參見 PostgreSQL 資料來源。
已為目標端 OceanBase 資料庫 Oracle 租戶建立專用於資料同步任務的資料庫使用者,並為其賦予了相關許可權。詳情請參見 建立資料庫使用者。
如果您需要進行增量同步處理,請完成以下前置操作:
增量同步處理時,資料轉送不支援 DDL 的自動同步。如果待同步的表需要進行 DDL,請先手動在目標端執行該 DDL 語句,再在源端 RDS PostgreSQL 執行個體中執行。
為確保執行 DDL 語句後的增量 DML 能夠正確解析,您需要建立對應的觸發器和記錄 DDL 語句的表。詳情請參見 建立觸發器。
勾選增量同步處理後,
wal_level
參數必須設定為 logical。詳情請參見 修改 RDS PostgreSQL 執行個體的記錄層級。
使用限制
目前支援 RDS PostgreSQL 執行個體 V11.x 和 V12.x。
資料轉送僅支援同步庫名、表名和列名為 ASCII 碼且不包含特殊字元(包括換行、空格,以及 .|"'`()=;/&\)的對象。
資料轉送不支援同步 RDS PostgreSQL 執行個體的視圖、分區表、unlogged 表和暫存資料表,以及外鍵和檢查類的約束至 OceanBase 資料庫 Oracle 租戶。
增量同步處理僅支援從主庫進行同步。
注意事項
勾選增量同步處理後,表級複製標識
REPLICA IDENTITY
的要求如下:如果您通過 指定對象 入口選擇同步對象,指定的表需要具備主鍵,或者表級複製標識
REPLICA IDENTITY
為 FULL,否則將導致業務資料更新、刪除操作失敗。如果您通過 匹配規則 入口選擇同步對象,RDS PostgreSQL 執行個體需要訂閱已選資料庫的所有表 (包括已選表、未選表和新增表),且所有表均需要包含主鍵,或者表級複製標識
REPLICA IDENTITY
為 FULL,否則將導致業務資料更新、刪除操作失敗。
修改表級複製標識
REPLICA IDENTITY
為 FULL 的命令如下。ALTER TABLE table_name REPLICA IDENTITY FULL;
RDS PostgreSQL 執行個體的資料同步(結構同步或增量 DDL)至 OceanBase 資料庫 Oracle 租戶時,表名、欄位名將根據資料轉送的預設策略轉為大寫。例如,源端的表名為 a,則目標端預設轉為 A。您可以通過 a、A 或 “A” 的方式使用表名、欄位名,但不支援以 “a” 的方式使用表名、欄位名。
RDS PostgreSQL 執行個體的增量組件會自動建立 publication 和 slot,但需要您對 RDS PostgreSQL 執行個體記錄檔的磁碟使用方式進行監控。資料轉送預設每 10 分鐘通知更新一次 slot 的
confirmed_flush_lsn
為 10 分鐘以前的 LSN,因此每個增量組件至少會儲存 10 分鐘以上的 RDS PostgreSQL 執行個體記錄檔。說明如果您需要修改通知的間隔周期,或修改通知 RDS PostgreSQL 執行個體可以清理多久之前的記錄檔,請聯絡技術支援人員。
資料同步過程中,如果因為存在 slot 而無法清理 RDS PostgreSQL 執行個體的記錄檔,則需要徹底刪除資料同步任務後,再清理 RDS PostgreSQL 執行個體的日誌。RDS PostgreSQL 執行個體的記錄檔是否能被回收,取決於所有 slot 中最早的
slot restart_lsn
是否在記錄檔範圍內。如果表既沒有主鍵也沒有 NOT NULL UK,則同步資料至目標端時,可能出現重複資料。
如果源端字元集為 UTF-8,建議目標端使用相容源端的字元集(例如 UTF-8、UTF-16 等),避免因字元集不相容導致目標端出現亂碼等問題。
請確認資料轉送對 DECIMAL、FLOAT 或 DOUBLE 等列類型的同步精度是否符合預期。如果目標端欄位類型的精度小於源端欄位類型的精度,則可能發生截斷現象,導致源端和目標端的資料不一致。
如果您變更目標端的唯一索引,需要重啟資料同步任務,否則可能存在資料不一致的問題。
節點之間的時鐘不同步,或者電腦終端和伺服器之間的時鐘不同步,均可能導致增量同步處理的延遲時間不準確。
例如,如果時鐘早於標準時間,可能導致延遲時間為負數。如果時鐘晚於標準時間,可能導致延遲。
如果在建立資料同步任務時,您僅配置了 增量同步處理,資料轉送要求源端資料庫的本地增量日誌儲存 48 小時以上。
如果在建立資料同步任務時,您配置了 全量同步+增量同步處理,資料轉送要求源端資料庫的本地增量日誌至少保留 7 天以上。否則資料轉送可能因無法擷取增量日誌而導致資料同步任務失敗,甚至導致源端和目標端資料不一致。
如果源端或目標端存在僅大小寫不同的表對象,可能會因為源端或目標端大小寫不敏感導致資料移轉的結果不符合預期。
支援的源端和目標端執行個體類型
下表中,OceanBase 資料庫 Oracle 租戶簡稱為 OB_Oracle。
源端 | 目標端 |
PostgreSQL(RDS 執行個體) | OB_Oracle(OceanBase 叢集執行個體) |
PostgreSQL(RDS 執行個體) | OB_Oracle(VPC 內自建資料庫) |
資料類型映射
RDS PostgreSQL 執行個體 | OceanBase 資料庫 Oracle 租戶 |
int | NUMBER(10) |
smallint | NUMBER(5) |
bigint | NUMBER(20) |
decimal | NUMBER(p,s) |
numeric | NUMBER(p,s) |
real | BINARY_FLOAT |
double precision | BINARY_DOUBLE |
smallserial | NUMBER(5) |
serial | NUMBER(10) |
bigserial | NUMBER(20) |
char | CHAR(n) 說明
|
varchar | VARCHAR2(n) |
text | CLOB |
timestamp | TIMESTAMP(p) |
timestamp with time zone | TIMESTAMP(p) WITH TIME ZONE |
time | DATE |
time with time zone | TIMESTAMP(p) WITH TIME ZONE |
boolean | NUMBER(1) |
bytea | BLOB |
citext | CLOB |
tsvector | CLOB |
操作步驟
登入 OceanBase 管理主控台,購買資料同步任務。
詳情請參見 購買資料同步任務。
在 資料轉送 > 資料同步 頁面,單擊新購買的資料同步任務後的 配置。
如果您需要引用已有的任務配置資訊,可以單擊 引用配置。詳情請參見 引用和清空資料同步任務配置。
在 選擇源和目標 頁面,配置各項參數。
參數
描述
同步任務名稱
建議使用中文、數字和字母的組合。名稱中不能包含空格,長度不能超過 64 個字元。
源端
如果您已建立 PostgreSQL 資料來源,請從下拉式清單中進行選擇。如果未建立,請單擊下拉式清單中的 建立資料來源,在右側對話方塊進行建立。參數詳情請參見 建立 PostgreSQL 資料來源。
目標端
如果您已建立 OceanBase 資料來源,請從下拉式清單中進行選擇。如果未建立,請單擊下拉式清單中的 建立資料來源,在右側對話方塊進行建立。參數詳情請參見 OceanBase 資料來源。
標籤(可選)
單擊文字框,在下拉式清單中選擇目標標籤。您也可以單擊 管理標籤,進行建立、修改和刪除。詳情請參見 通過標籤管理資料同步任務。
單擊 下一步。在 選擇同步類型 頁面,選擇當前資料同步任務的同步類型。
同步類型包括 結構同步、全量同步 和 增量同步處理。增量同步處理 僅支援 DML 同步(包括
Insert
、Delete
和Update
),您可以根據需求進行自訂配置。詳情請參見 自訂配置 DDL/DML。單擊 下一步。在 選擇同步對象 頁面,選擇同步對象。
您可以通過 指定對象 和 匹配規則 兩個入口選擇同步對象。本文為您介紹通過 指定對象 方式選擇同步對象的具體操作,配置匹配規則的詳情請參見 配置和修改匹配規則 中庫到庫的通配規則說明和配置方式。
重要待同步的表名和其中的列名不能包含中文字元。
當資料庫的庫名或表名存在“$$”字元時,會影響資料同步任務的建立。
在 選擇同步對象 地區,選中 指定對象。
在 選擇同步範圍 地區的 源端對象 列表中選中需要同步的對象。您可以選擇一個或多個庫的表作為同步對象。
單擊 >,將其添加至 目標端對象 列表中。
資料轉送支援通過文本匯入對象,並支援對目標端對象進行重新命名、設定、移除單個或全部同步對象等操作。
說明通過 匹配規則 方式選擇遷移對象時,重新命名能力由匹配規則文法覆蓋,操作處僅支援設定過濾條件。詳情請參見 配置和修改匹配規則。
操作
步驟
匯入對象
在選擇地區的右側列表中,單擊右上方的 匯入對象。
在對話方塊中,單擊 確定。
重要匯入會覆蓋之前的操作選擇,請謹慎操作。
在 匯入同步對象 對話方塊中,匯入需要同步的對象。 您可以通過匯入 CSV 檔案的方式進行庫表重新命名、設定行過濾條件等操作。詳情請參見 下載和匯入同步對象配置。
單擊 檢驗合法性。
通過合法性的檢驗後,單擊 確定。
重新命名
資料轉送支援重新命名同步對象的名稱,詳情請參見 資料庫庫表重新命名。
設定
資料轉送支援
WHERE
條件實現行過濾,以及查看同步對象的列資訊。在選擇地區的右側列表中,滑鼠移至上方至目標對象。
單擊顯示的 設定。
在 設定 對話方塊中,您可以進行以下操作。
在 行過濾條件 地區的文字框中,輸入標準的 SQL 陳述式中的
WHERE
子句,來配置行過濾。詳情請參見 SQL 條件過濾資料。在 查看列 地區,查看同步對象的列資訊。
單擊 確定。
移除/全部移除
資料轉送支援在資料對應時,對暫時選中到目標端的單個或多個對象進行移除操作。
移除單個同步對象
在選擇地區的右側列表中,滑鼠移至上方至目標對象,單擊顯示的 移除,即可移除該同步對象。
移除全部同步對象
在選擇地區的右側列表中,單擊右上方的 全部移除。在對話方塊中,單擊 確定,即可移除全部同步對象。
單擊 下一步。在 同步選項 頁面,配置各項參數。
全量同步
在 選擇同步類型 頁面,選中 全量同步,才會顯示下述參數。
參數
描述
讀取並發配置
該參數用於配置全量同步階段從源端讀取資料的並發數,最大限制為 512.並發數過高可能會造成源端壓力過大,影響業務。
寫入並發配置
該參數用於配置全量同步階段往目標端寫入資料的並發數,最大限制為 512。並發數過高可能會造成目標端壓力過大,影響業務。
全量同步速率限制
您可以根據實際需求決定是否開啟全量同步速率限制。如果開啟,請設定 RPS(全量同步階段每秒最多可以同步至目標端的資料行數的最大值限制)和 BPS(全量同步階段每秒最多可以同步至目標端的資料量的最大值限制)。
說明此處設定的 RPS 和 BPS 僅作為限速限流能力,全量同步實際可以達到的效能受限於源端、目標端、執行個體規格配置等因素的影響。
目標端表對象存在記錄時處理策略
選擇 忽略:目標端表對象存在資料時,如果原資料與寫入資料衝突,資料轉送採用將衝突資料記錄日誌,保留原資料不變的策略進行資料寫入。
重要選擇 忽略,全量校正將使用 IN 模式拉取資料,無法校正目標端多資料的情境,並且校正效能存在一定程度降級。
選擇預設值 停止遷移:當目標端表對象存在資料時,全量遷移會報錯不允許遷移,請處理好目標端資料後再繼續遷移。
重要如果出錯後單擊恢複,資料轉送將忽略該配置選項,繼續遷移表資料,請謹慎操作。
增量同步處理
在 選擇同步類型 頁面,選中 增量同步處理,才會顯示下述參數。
參數
描述
寫入並發配置
該參數用於配置增量同步處理階段往目標端寫入資料的並發數,最大限制為 512。並發數過高可能會造成目標端壓力過大,影響業務。
增量同步處理速率限制
您可以根據實際需求決定是否開啟增量同步處理速率限制。如果開啟,請設定 RPS(增量同步處理階段每秒最多可以同步至目標端的資料行數的最大值限制)和 BPS(增量同步處理階段每秒最多可以同步至目標端的資料量的最大值限制)。
說明此處設定的 RPS 和 BPS 僅作為限速限流能力,增量同步處理實際可以達到的效能受限於源端、目標端、執行個體規格配置等因素的影響。
增量同步處理起始位點
源端為 PostgreSQL 時,不支援設定增量同步處理起始位點,起始位點預設為增量同步處理啟動時間。
進階選項
在 選擇同步類型 頁面未選中 結構同步,才會顯示下述參數。
參數
描述
同步資料
開啟同步資料後,您可以將指定資料(例如源端 Schema、其他自訂欄位值)寫入目標端的指定欄位。
同步 Schema Name
程式將擷取源端 Schema Name,並以字串形式寫入目標端表的指定欄位。
填寫 指定欄位名稱 時,請確保目標端所有待同步的表結構均存在該欄位。
同步自訂資料
您可以自訂欄位值,以字串形式同步至目標端待同步表的指定欄位。
重要Data Transmission Service不會對 指定欄位名稱 進列欄位類型校正,以及 欄位值 資料有效性校正和特殊字元轉義,請自行確保欄位類型和欄位值符合規範。
當目標端 OceanBase 資料庫 Oracle 租戶為 V4.3.0 及之後版本,並且在 選擇同步類型 頁面,選中 結構同步,才會顯示下述參數。
目標端表Object Storage Service類型包括 預設、行存、列存 和 行列混存,該配置用於確定結構同步或增量同步處理時目標端表對象的儲存類型,詳情請參見 default_table_store_format。
說明預設 選項是根據目標端參數配置自適應其他選項,是結構同步的表對象根據設定的儲存類型寫入對應的結構。
單擊 預檢查。
在 預檢查 環節,資料轉送會檢測源端和目標端的串連情況。如果預檢查報錯:
您可以在排查並處理問題後,重新執行預檢查,直至預檢查成功。
您也可以單擊錯誤預檢查項操作列中的 跳過,會彈出對話方塊提示您跳過本操作的具體影響,確認可以跳過後,請單擊對話方塊中的 確定。
預檢查成功後,單擊 啟動任務。
如果您暫時無需啟動任務,請單擊 儲存。後續您只能在 同步工作清單 頁面手動啟動任務或通過大量操作啟動任務。大量操作的詳情請參見 大量操作資料同步任務。資料同步任務啟動後,會根據選擇的同步類型依次執行,詳情請參見 查看同步詳情。
資料轉送支援在資料同步任務運行過程中減少同步對象,詳情請參見 減少同步對象。
重要RDS PostgreSQL 執行個體至 OceanBase 資料庫 Oracle 租戶的資料同步任務運行過程中不支援增加同步對象。
如果資料同步任務運行報錯(通常由於網路不通或進程啟動過慢導致),您可以在資料同步任務的列表或詳情頁面,單擊 恢複。