712
阿裏雲
本地PostgreSQL遷移至RDS for PostgreSQL__數據遷移_用戶指南_數據傳輸-阿裏雲
使用數據傳輸DTS可以將本地PostgreSQL實例的數據遷移到RDS For PostgreSQL實例。PostgreSQL遷移支持增量數據同步功能,可以實現在本地應用不停服的情況下,平滑完成PostgreSQL數據庫的遷移工作。
本小節簡單介紹使用DTS進行PostgreSQL->RDS for PostgreSQL數據遷移的任務配置流程。
遷移類型簡介
結構遷移
數據傳輸DTS將遷移對象的結構定義遷移到目標實例。對於PostgreSQL,數據傳輸服務支持結構遷移的對象包含:Table、trigger、view、sequence、function、user defined type、rule、domain、operation、aggregate。
全量數據遷移
數據傳輸DTS將源數據庫遷移對象的存量數據全部遷移到目標實例。
增量數據遷移
增量數據遷移將遷移過程中,本地PostgreSQL實例的增量更新數據同步到目標RDS實例,最終實現本地PostgreSQL同目標RDS實例進入動態數據同步的過程。使用增量數據遷移,可以實現在本地PostgreSQL正常提供服務的時候,平滑完成PostgreSQL->RDS For PostgreSQL的數據遷移。
遷移限製
- 源實例,支持PostgreSQL 9.2、9.3、9.4
- 遷移過程中,不支持DDL操作
- 不支持遷移使用C語言編寫的function
- 如果使用了對象名映射功能後,依賴這個對象的其他對象可能遷移失敗
遷移權限要求
當使用數據傳輸服務進行PostgreSQL遷移時,在不同遷移類型情況下,源跟目標數據庫的遷移帳號權限要求如下:
遷移類型 | 結構遷移 | 全量遷移 | 增量數據遷移 |
---|---|---|---|
本地PostgreSQL實例 | pg_catalog的usage權限 | 遷移對象的select | superuser |
目的RDS實例 | 遷移對象的create、usage權限 | schema的owner | schema的owner |
遷移順序
數據傳輸服務在進行PostgreSQL->RDS For PostgreSQL數據遷移時,為了解決對象間的依賴,提高遷移成功率。結構對象及數據的遷移順序如下:
- 進行結構對象:Table、view、sequence、function、user defined type、rule、domain、operation、aggregate的遷移
- 全量數據遷移
- 進行結構對象:trigger、foreign key的遷移
全量數據遷移完成後,任務列表中的遷移進度為:結構遷移100%,全量遷移100%,遷移狀態為“遷移中”,此時遷移任務正在進行步驟(3)中的對象的遷移。此時,請勿手動結束任務,否則會造成遷移數據丟失。
遷移步驟
下麵詳細介紹下使用DTS將本地的PostgreSQL數據庫遷移到RDS for PostgreSQL的任務配置流程。
RDS實例數據庫創建
在數據遷移過程中,如果待遷移的數據庫在目標RDS實例中不存在,那麼DTS自動會創建。但是對於如下兩種情況,用戶需要在配置遷移任務之前,手動創建數據庫。
- 數據庫名稱不符合:RDS定義規範(由小寫字母、數字、下劃線、中劃線組成,字母開頭,字母或數字結尾,最長64個字符)。
- 待遷移數據庫,在本地PostgreSQL跟目標RDS For PostgreSQL實例中存儲名稱不同。
對於這兩種情況,用戶需要在配置遷移任務之前,先在RDS控製台完成數據庫創建。具體參考RDS數據庫創建流程。
遷移帳號創建
遷移任務配置,需要提供Oracle數據庫及目標RDS實例的遷移賬號。遷移賬號所需權限詳見上文的 遷移權限要求。
如果您的本地PostgreSQL或RDS For PostgreSQL實例的遷移賬號尚未創建,那麼可以參考如下流程創建遷移賬號:
通過PostgreSQL客戶端,在PostgreSQL中創建遷移賬號。
create user username password 'password'
如果您要使用增量遷移,那麼創建的賬號必須是superuser,所以創建賬號語句調整為:
create user username with superuser password 'password'
參數說明:
- username:要創建的賬號
- password:該賬號的登錄密碼
給遷移賬號授權,本地PostgreSQL及RDS For PostgreSQL的遷移賬號權限要求詳見上表。
GRANT privileges ON tablename TO username;
參數說明:
- privileges:該賬號的操作權限,如 SELECT、INSERT、UPDATE 等。如果要授權該賬號所有權限,則使用 ALL
- tablename:表名。如果要授權該賬號所有的表權限,則使用通配符 *
- username:要授權的賬號名
邏輯流複製插件安裝
如果您需要使用增量數據遷移進行不停機遷移,那麼在任務配置之前,需要在本地PostgreSQL中安裝DTS提供的邏輯流複製插件。
插件下載。
插件安裝。
- 解壓下載的壓縮包。
將ali_decoding.so文件拷貝到 PostgreSQL安裝路徑的lib目錄下。
如果用rpm包安裝,那麼這個絕對路徑為:/usr/pgsql-{$version}/lib/,其中$version為版本號,例如版本為9.5,那麼絕對路徑為:/usr/pgsql-9.5/lib。
將ali_decoding.contorl文件拷貝到PostgreSQL安裝路徑下的share/extension 目錄下。
如果用rpm包安裝,那麼這個絕對路徑為:/usr/pgsql-${version}/share/extension/,其中${version}為PostgreSQL版本號,如果版本為9.5,那麼絕對路徑為:/usr/pgsql-9.5/share/extension/。
測試安裝是否成功。
使用superuser賬號登錄PostgreSQL客戶端,運行如下SQL,看是否能夠成功創建replication slot。如果成功創建那麼說明插件安裝成功。
SELECT * FROM pg_create_logical_replication_slot('replication_slot_test', 'ali_decoding');
如果輸出結果如下,說明插件安裝成功。
測試成功後,使用如下SQL將replication slot刪除掉。
SELECT pg_drop_replication_slot('replication_slot_test');
遷移任務配置
當上麵的所有前置條件都配置完成後,就可以開始正式的數據遷移了。下麵詳細介紹遷移任務配置流程。
- 進入數據傳輸DTS控製台,點擊右上角的創建遷移任務,開始遷移任務配置。
本地PostgreSQL跟目標RDS For PostgreSQL實例連接信息配置。
這個步驟主要配置 遷移任務名稱,PostgreSQL連接信息及目標RDS For PostgreSQL實例連接信息。其中:
任務名稱
DTS為每個任務自動生成一個任務名稱,任務名稱沒有唯一性要求。您可以根據需要修改任務名稱,建議為任務配置具有業務意義的名稱,便於後續的任務識別。
源實例信息
- 實例類型:選擇 有公網IP的自建數據庫
- 數據庫類型: 選擇 PostgreSQL
- 主機名或IP地址: 配置PostgreSQL訪問地址,這個地址必須為公網訪問方式
- 端口:本地PostgreSQL實例的監聽端口
- 數據庫名稱:連接PostgreSQL的默認數據庫名
- 數據庫賬號:本地PostgreSQL實例的連接賬號
- 數據庫密碼:本地PostgreSQL實例連接賬號對應的密碼
目標實例信息
- 實例類型:選擇 RDS實例
- RDS實例ID: 配置遷移的目標RDS實例的實例ID。 DTS支持經典網絡、VPC網絡的RDS實例
- 數據庫名稱:連接RDS For PostgreSQL的默認數據庫名
- 數據庫賬號:RDS For PostgreSQL實例的連接賬號
- 數據庫密碼:上麵RDS For PostgreSQL實例連接賬號對應的密碼
當配置完連接信息後,點擊右下角 授權白名單並進入下一步 進行白名單授權。這個步驟DTS會將DTS服務器的IP地址添加到目標RDS實例的白名單中,避免因為RDS實例設置了白名單,導致DTS服務器連接不上RDS實例導致遷移失敗。
選擇遷移對象及遷移類型。
遷移類型
對於PostgreSQL->RDS For PostgreSQL,支持 結構遷移、全量數據遷移、增量數據遷移。
如果隻需要進行全量遷移,那麼遷移類型選擇:結構遷移+全量數據遷移。
如果需要進行不停機遷移,那麼遷移類型選擇:結構遷移+全量數據遷移+增量數據遷移。
遷移對象
選擇您要遷移的對象。遷移對象選擇的粒度可以為:庫、表、列三個粒度。默認情況下,對象遷移到RDS for PostgreSQL實例後,對象名跟本地PostgreSQL實例一致。如果您遷移的對象在源實例跟目標實例上名稱不同,那麼需要使用DTS提供的對象名映射功能,詳細使用方式可以參考庫表列映射。
預檢查。
在遷移任務正式啟動之前,會先進行前置預檢查,隻有預檢查通過後,才能成功啟動遷移。預檢查的內容及修複方式可以參考本文末尾的 預檢查簡介 一節。
如果預檢查失敗,那麼可以點擊具體檢查項後的按鈕,查看具體的失敗詳情,並根據失敗原因修複後,重新進行預檢查。
啟動遷移任務。
當預檢查通過後,可以啟動遷移任務,任務啟動成功後,可以在任務列表中查看遷移的具體狀態及遷移進度。
至此,完成本地PostgreSQL數據庫到RDS for PostgreSQL實例的數據遷移任務配置。
預檢查內容
DTS在啟動遷移之前,會進行前置預檢查,本小節簡單介紹PostgreSQL->RDS for PostgreSQL的預檢查內容:
預檢查項 | 檢查內容 | 備注 |
---|---|---|
源庫連接性檢查 | 檢查DTS服務同本地PostgreSQL實例的連通性 | (1) 填寫信息是否有誤?如果填寫信息有誤,請修改後重新預檢查 (2) 檢查端口是否配置從其他服務器連接 |
目的庫連接性檢查 | 檢查DTS服務同目的RDS For PostgreSQL實例的連通性 | 檢查填寫信息是否有誤,如果有誤請先修改後重新預檢查 |
目的庫連接性檢查 | 檢查DTS服務同目的RDS For PostgreSQL實例的連通性 | 檢查填寫信息是否有誤,如果有誤請先修改後重新預檢查 |
源庫版本檢查 | 檢查本地PostgreSQL版本跟目標RDS For PostgreSQL是否一致 | 如果版本不一致,預檢查會有提醒。可以根據提醒對本地PostgreSQL進行升級或降級,也可以繼續遷移 |
數據庫可用性檢查 | 檢查待遷移數據庫在目標RDS For PostgreSQL是否已存在 | 如果待遷移數據庫命名規範不滿足RDS實例要求,那麼DTS在目標RDS實例創建待遷移數據庫會報錯失敗,即數據庫可用性檢查會失敗。此時可以參考 庫表列映射 對遷移數據庫進行重命名 |
源庫權限檢查 | 檢查任務配置時,提供的本地PostgreSQL數據庫賬號的權限是否滿足要求 | 如果檢查失敗,那麼請參考本文 遷移賬號創建 一節對遷移賬號進行授權後,重新進行預檢查 |
目的庫權限檢查 | 檢查任務配置時,提供的目的RDS For PostgreSQL數據庫賬號的權限是否滿足要求 | 如果檢查失敗,那麼請參考本文 遷移賬號創建 一節對遷移賬號進行授權後,重新進行預檢查 |
同名對象存在性檢查 | 檢查待遷移對象在目標RDS For PostgreSQL實例中是否已經存在 | 如果檢查失敗,請將目標庫中這些已經存在的對象刪除後,重新進行預檢查 |
源端同名對象存在性檢查 | 檢查要遷移到同一個數據庫中的多個對象是否重名 | 如果檢查失敗,可以參考 庫表列映射 將重名對象進行重命名 |
約束完整性檢查 | 檢查待遷移對象依賴的父對象是否遷移 | 如果檢查失敗,那麼可以修改遷移對象,同時遷移依賴的父對象後,重新預檢查 |
增量拓撲衝突檢查 | 檢查同一個遷移對象是否已經存在遷移鏈路 | 如果存在衝突鏈路,那麼需要刪除掉衝突鏈路後,重新預檢查 |
LC_MONETERY 一致性檢查 | 檢查源庫、目標庫的Lc_monetery定義是否一致 | 如果檢查失敗,可以修改目標RDS For PostgreSQL的LC_MONETERY定義,或者繼續遷移 |
PostgreSQL邏輯流複製插件檢查 | 檢查本地PostgreSQL實例是否安裝了邏輯流複製插件 | 如果檢查失敗,可以參考下麵的 邏輯流複製插件安裝 一節安裝邏輯流複製插件後重新預檢查 |
PostgreSQL邏輯流slot存在性檢查 | 檢查本地PostgreSQL實例存在跟DTS創建的replication slot重名的replication slot | 如果檢查失敗,可以刪除本地PostgreSQL中已經存在的同名replication slot後,重新預檢查 |
最後更新:2016-11-23 16:03:55
上一篇:
Oracle到PPAS不停機數據遷移__數據遷移_用戶指南_數據傳輸-阿裏雲
下一篇:
從本地MongoDB遷移到MongoDB實例__數據遷移_用戶指南_數據傳輸-阿裏雲
數據庫專家在線保障__工作說明書_尊享服務_支持計劃-阿裏雲
6.3 使用ACL進行權限管理__第六章 用戶與權限_使用手冊_分析型數據庫-阿裏雲
獲取解析記錄列表__解析管理接口_API文檔_雲解析-阿裏雲
Spark + Log Service__Spark_開發人員指南_E-MapReduce-阿裏雲
ServiceParameterMap__數據類型_API_API 網關-阿裏雲
快速入門概述__快速開始_企業級分布式應用服務 EDAS-阿裏雲
不同企業之間的資源操作與授權管理__使用場景_用戶指南_訪問控製-阿裏雲
5.1 數據的導入__第五章 Data Pipeline_使用手冊_分析型數據庫-阿裏雲
資源授權場景__場景示例_Open API_消息隊列 MQ-阿裏雲
ECS 產品調價細則(20161015起)__購買指南_雲服務器 ECS-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲