本文介紹如何使用Data Transmission Service (简称DTS),將RDS PPAS遷移至PolarDB PostgreSQL版(相容Oracle)叢集。DTS支援結構遷移、全量資料移轉以及增量資料移轉,同時使用這三種遷移類型可以實現在自建應用不停服的情況下,平滑地完成資料庫的遷移。
前提條件
已建立PolarDB PostgreSQL版(相容Oracle)叢集,詳情請參見建立PolarDB PostgreSQL版(相容Oracle)叢集。
PolarDB PostgreSQL版(相容Oracle)叢集的儲存空間須大於RDS PPAS資料庫佔用的儲存空間。
若源RDS PPAS資料庫中的庫名稱、表名稱、欄位有大寫,在PolarDB PostgreSQL版(相容Oracle)叢集中建立庫、表、欄位時需要加上雙引號("")。
如需執行增量資料移轉,您需要為源RDS PPAS執行個體用於資料移轉的帳號開通superuser許可權。
注意事項
DTS在執行全量資料移轉時將佔用源庫和目標庫一定的讀寫資源,可能會導致資料庫的負載上升,在資料庫效能較差、規格較低或業務量較大的情況下(例如源庫有大量慢SQL、存在無主鍵表或目標庫存在死結等),可能會加重資料庫壓力,甚至導致資料庫服務不可用。因此您需要在執行資料移轉前評估源庫和目標庫的效能,同時建議您在業務低峰期執行資料移轉(例如源庫和目標庫的CPU負載在30%以下)。
如果源庫中待遷移的表沒有主鍵或唯一約束,且所有欄位沒有唯一性,可能會導致目標資料庫中出現重複資料。
一個資料移轉任務只能對一個資料庫進行資料移轉,如果有多個資料庫需要遷移,則需要為每個資料庫建立資料移轉任務。
對於遷移失敗的任務,DTS會觸發自動回復。當您需要將業務切換至目標執行個體,請務必先終止或釋放該任務,避免該任務被自動回復後,導致源端資料覆蓋目標執行個體的資料。
- 由於業務切換到目標端後,新寫入的Sequence不會按照源庫的Sequence最大值作為初始值去遞增,您需要在業務切換前,在源庫中查詢對應Sequence的最大值,然後在目標庫中將其作為對應Sequence的初始值。查詢源庫Sequence值的相關命令如下:
do language plpgsql $$
declare
nsp name;
rel name;
val int8;
begin
for nsp,rel in select nspname,relname from pg_class t2 , pg_namespace t3 where t2.relnamespace=t3.oid and t2.relkind='S'
loop
execute format($_$select last_value from %I.%I$_$, nsp, rel) into val;
raise notice '%',
format($_$select setval('%I.%I'::regclass, %s);$_$, nsp, rel, val+1);
end loop;
end;
$$;
RDS PPAS遷移至PolarDB PostgreSQL版(相容Oracle)叢集時,建議如下:
PolarDB PostgreSQL版(相容Oracle)叢集的規格大於或等於RDS PPAS規格,避免遷移後因PolarDB PostgreSQL版(相容Oracle)叢集的CPU和記憶體不足,導致慢SQL或記憶體溢出。推薦的PolarDB PostgreSQL版(相容Oracle)叢集規格,請參見RDS PPAS與推薦PolarDB PostgreSQL版(相容Oracle)叢集規格對照表。
如果對遷移後的串連數、IOPS等有業務要求,請參考計算節點規格,選擇符合業務需求的PolarDB PostgreSQL版(相容Oracle)叢集規格。
應用串連時使用叢集地址,可實現自動讀寫分離,將讀請求流量分配到唯讀節點,降低PolarDB PostgreSQL版(相容Oracle)叢集負載。如何擷取叢集地址,請參見查看或申請串連地址。
在庫表結構遷移過程中,DTS會將來源資料庫中的外鍵遷移到目標資料庫。
在全量遷移和增量遷移過程中,DTS會以Session層級暫時禁用約束檢查以及外鍵級聯操作。若任務運行時源庫存在串聯更新、刪除操作,可能會導致資料不一致。
源庫的操作限制:
若執行個體運行失敗,DTS技術支援人員將在8小時內嘗試恢複該執行個體。在恢複失敗執行個體的過程中,可能會對該執行個體進行重啟、調整參數等操作。
說明
在調整參數時,僅會修改執行個體的參數,不會對資料庫中的參數進行修改。可能修改的參數,包括但不限於修改執行個體參數中的參數。
RDS PPAS與推薦PolarDB PostgreSQL版(相容Oracle)叢集規格對照表
建議PolarDB PostgreSQL版(相容Oracle)叢集的規格大於或等於RDS PPAS規格,避免遷移後因PolarDB PostgreSQL版(相容Oracle)叢集的CPU和記憶體不足,導致慢SQL或記憶體溢出。推薦的PolarDB PostgreSQL版(相容Oracle)叢集規格如下:
RDS PPAS規格 | 推薦的PolarDB PostgreSQL版(相容Oracle)叢集規格 |
規格代碼 | CPU和記憶體 | 規格代碼 | CPU和記憶體 |
RDS PPAS規格 | 推薦的PolarDB PostgreSQL版(相容Oracle)叢集規格 |
規格代碼 | CPU和記憶體 | 規格代碼 | CPU和記憶體 |
rds.ppas.t1.small | 1核 1GB | polar.o.x4.medium | 2核 8GB |
ppas.x4.small.2 | 1核 4GB | polar.o.x4.medium | 2核 8GB |
ppas.x4.medium.2 | 2核 8GB | polar.o.x4.medium | 2核 8GB |
ppas.x8.medium.2 | 2核 16GB | polar.o.x4.large | 4核 16GB |
ppas.x4.large.2 | 4核 16GB | polar.o.x4.large | 4核 16GB |
ppas.x8.large.2 | 4核 32GB | polar.o.x4.xlarge | 8核 32GB |
ppas.x4.xlarge.2 | 8核 32GB | polar.o.x4.xlarge | 8核 32GB |
ppas.x8.xlarge.2 | 8核 64GB | polar.o.x8.xlarge | 8核 64GB |
ppas.x4.2xlarge.2 | 16核 64GB | polar.o.x8.2xlarge | 16核 128GB |
ppas.x8.2xlarge.2 | 16核 128GB | polar.o.x8.2xlarge | 16核 128GB |
ppas.x4.4xlarge.2 | 32核 128GB | polar.o.x8.4xlarge | 32核 256GB |
ppas.x8.4xlarge.2 | 32核 256GB | polar.o.x8.4xlarge | 32核 256GB |
rds.ppas.st.h43 | 60核 470GB | polar.o.x8.8xlarge | 64核 512GB |
遷移類型說明
遷移類型 | 說明 |
結構遷移 | DTS將遷移對象的結構定義遷移到目標PolarDB叢集。目前支援的對象包括:表、視圖、同義字、觸發器(不相容)、預存程序、儲存函數、包、自訂類型。 重要 不相容觸發器。當遷移對象包含了觸發器時,可能導致資料不一致。 |
全量資料移轉 | DTS會將源庫中遷移對象的存量資料,全部遷移至目標PolarDB叢集。 重要 在結構遷移和全量資料移轉完成之前,請勿對遷移對象執行DDL操作,否則可能導致遷移失敗。 |
增量資料移轉 | DTS在全量資料移轉的基礎上輪詢並捕獲源庫產生的Redo Log,將源庫的累加式更新即時移轉到目標PolarDB叢集。目前僅支援同步DML操作(INSERT、UPDATE、DELETE),暫不支援同步DDL操作。 通過增量資料移轉可以實現在應用不停服的情況下,平滑地完成資料移轉。 |
費用說明
遷移類型 | 鏈路配置費用 | 公網流量費用 |
結構遷移和全量資料移轉 | 不收費。 | 通過公網將資料移轉出阿里雲時將收費,詳情請參見計費概述。 |
增量資料移轉 | 收費,詳情請參見計費概述。 |
資料庫帳號的許可權要求
登入待遷移的Oracle資料庫,建立用於採集資料的帳號並授權。
資料庫 | 結構遷移 | 全量遷移 | 增量遷移 |
RDS PPAS | 讀許可權 | 讀許可權 | superuser許可權 |
PolarDB PostgreSQL版(相容Oracle)叢集 | schema的owner許可權 | schema的owner許可權 | schema的owner許可權 |
資料庫帳號建立及授權方法:
PolarDB PostgreSQL版(相容Oracle)叢集的帳號建立及授權方式,詳情請參見建立帳號。
操作步驟
進入目標地區的遷移工作清單頁面(二選一)。
單擊創建任務,進入任務配置頁面。
可選:在頁面右上方,單擊試用新版配置頁。
配置源庫及目標庫資訊。
類別 | 配置 | 說明 |
無 | 任務名稱 | DTS會自動產生一個任務名稱,建議配置具有業務意義的名稱(無唯一性要求),便於後續識別。 |
源庫資訊 | 資料庫類型 | 由於DTS暫不直接支援將RDS PPAS執行個體作為源庫,需選擇PostgreSQL來完成資料移轉任務的配置。 |
接入方式 | 選擇專線/VPN網關/智能網關。 |
執行個體地區 | 選擇源RDS PPAS執行個體所屬地區。 |
是否跨阿里雲帳號 | 本樣本為同一阿里雲帳號間遷移,選擇不跨帳號。 |
已和源端資料庫聯通的VPC | 選擇RDS PPAS執行個體的資料庫接入的VPC ID。 |
IP地址 | 填入RDS PPAS執行個體的私人網路地址。 |
連接埠 | 填入RDS PPAS執行個體服務連接埠,預設為3433。 |
資料庫帳號 | 填入源RDS PPAS執行個體的資料庫帳號。 |
資料庫密碼 | 填入該資料庫帳號對應的密碼。 |
目標庫資訊 | 資料庫類型 | 選擇PolarDB(相容Oracle)。 |
接入方式 | 選擇雲執行個體。 |
執行個體地區 | 選擇目標PolarDB PostgreSQL版(相容Oracle)叢集所屬地區。 |
執行個體ID | 選擇目標PolarDB PostgreSQL版(相容Oracle)叢集ID。 |
資料庫名稱 | 填入目標PolarDB PostgreSQL版(相容Oracle)執行個體中遷移對象所屬資料庫的名稱。 |
資料庫帳號 | 填入目標PolarDB PostgreSQL版(相容Oracle)執行個體的資料庫帳號。相關許可權要求,詳情請參見資料庫帳號的許可權要求。 |
資料庫密碼 | 填入該資料庫帳號對應的密碼。 |
配置完成後,在頁面下方單擊測試連接以進行下一步。
配置任務對象。
在對象配置頁面,配置待遷移的對象。
配置 | 說明 |
遷移類型 | |
目標已存在表的處理模式 | |
目標庫對象名稱大小寫策略 | 您可以配置目標執行個體中遷移對象的庫名、表名和列名的英文大小寫策略。預設情況下選擇DTS預設策略,您也可以選擇與源庫、目標庫預設策略保持一致。更多資訊,請參見目標庫對象名稱大小寫策略。 |
源庫對象 | 在源庫對象框中單擊待遷移的對象,然後單擊 將其移動到已選擇對象框。 說明 時間欄位支援Timestamp類型。當源庫時間欄位為0時,目標庫時間欄位將自動轉換為null。 |
已選擇對象 | 說明 如果使用了對象名映射功能,可能會導致依賴這個對象的其他對象遷移失敗。 |
單擊下一步高級配置,進行進階參數配置。
配置 | 說明 |
選擇調度該任務的專屬叢集 | DTS預設將任務調度到共用叢集上,您無需選擇。若您希望任務更加穩定,可以購買專屬叢集來運行DTS遷移任務。更多資訊,請參見什麼是DTS專屬叢集。 |
源庫、目標庫無法串連後的重試時間 | 在遷移任務啟動後,若源庫或目標庫串連失敗則DTS會報錯,並會立即進行持續的重試串連,預設重試720分鐘,您也可以在取值範圍(10~1440分鐘)內自訂重試時間,建議設定30分鐘以上。如果DTS在設定的時間內重新串連上源、目標庫,遷移任務將自動回復。否則,遷移任務將失敗。 |
源庫、目標庫出現其他問題後的重試時間 | 在遷移任務啟動後,若源庫或目標庫出現非串連性的其他問題(如DDL或DML執行異常),則DTS會報錯並會立即進行持續的重試操作,預設持續重試時間為10分鐘,您也可以在取值範圍(1~1440分鐘)內自訂重試時間,建議設定10分鐘以上。如果DTS在設定的重試時間內相關操作執行成功,遷移任務將自動回復。否則,遷移任務將會失敗。 重要 源庫、目標庫出現其他問題後的重試時間的值需要小於源庫、目標庫無法串連後的重試時間的值。 |
是否限制全量遷移速率 | 在全量遷移階段,DTS將佔用源庫和目標庫一定的讀寫資源,可能會導致資料庫的負載上升。您可以根據實際情況,選擇是否對全量遷移任務進行限速設定(設定每秒查詢源庫的速率QPS、每秒全量遷移的行數RPS和每秒全量遷移的數據量(MB)BPS),以緩解目標庫的壓力。 |
是否限制增量遷移速率 | 您也可以根據實際情況,選擇是否對增量遷移任務進行限速設定(設定每秒增量遷移的行數RPS和每秒增量遷移的數據量(MB)BPS),以緩解目標庫的壓力。 |
環境標籤 | 您可以根據實際情況,選擇用於標識執行個體的環境標籤。本樣本無需選擇。 |
配置ETL功能 | 選擇是否配置ETL功能。關於ETL的更多資訊,請參見什麼是ETL。 |
監控警示 | 是否設定警示,當遷移失敗或延遲超過閾值後,將通知警示連絡人。 |
儲存任務並進行預檢查。
購買執行個體。
預檢查通過率顯示為100%時,單擊下一步購買。
在購買頁面,選擇資料移轉執行個體的鏈路規格,詳細說明請參見下表。
類別 | 參數 | 說明 |
資訊配置 | 資源群組配置 | 選擇執行個體所屬的資源群組,預設為default resource group。更多資訊,請參見什麼是資源管理。 |
鏈路規格 | DTS為您提供了不同效能的遷移規格,遷移鏈路規格的不同會影響遷移速率,您可以根據業務情境進行選擇。更多資訊,請參見資料移轉鏈路規格說明。 |
配置完成後,閱讀並選中《資料轉送(隨用隨付)服務條款》。
單擊購買並啟動,並在彈出的確認對話方塊,單擊確定。
您可在資料移轉介面查看具體進度。