教學課程:在線上使用 DMS 將 RDS PostgreSQL 遷移至適用於 PostgreSQL 的 Azure 資料庫
重要
建議您在適用於 PostgreSQL 的 Azure 資料庫中使用新的移轉服務,以取得更簡化、更有效率的移轉體驗。 此服務可藉由支援各種來源環境來簡化流程,確保輕鬆轉換至適用於 PostgreSQL 的 Azure 資料庫。
您可以使用 Azure 資料庫移轉服務,將資料庫從 RDS PostgreSQL 執行個體遷移至適用於 PostgreSQL 的 Azure 資料庫,同時讓來源資料庫在移轉期間保持連線。 換句話說,可在最短的應用程式停機時間內完成移轉。 在此教學課程中,您會在 Azure 資料庫移轉服務中使用線上移轉活動,將 DVD Rental
範例資料庫從 RDS PostgreSQL 9.6 執行個體移轉至適用於 PostgreSQL 的 Azure 資料庫。
在本教學課程中,您會了解如何:
- 使用 pg_dump 公用程式移轉範例結構描述。
- 建立 Azure 資料庫移轉服務的執行個體。
- 使用 Azure 資料庫移轉服務來建立移轉專案。
- 執行移轉。
- 監視移轉。
- 執行完全移轉。
若要使用「Azure 資料庫移轉服務」來執行線上移轉,必須根據「進階」定價層建立執行個體。 如需詳細資訊,請參閱 Azure 資料庫移轉服務的定價頁面。 我們會將磁碟加密,以防止在移轉期間使得資料遭竊。
重要
為了獲得最佳的移轉體驗,Microsoft 建議在目標資料庫所在的同一個 Azure 區域中,建立 Azure 資料庫移轉服務的執行個體。 跨區域或地理位置移動資料可能使移轉程序變慢,並產生錯誤。
提示
在 Azure 資料庫移轉服務中,您可在離線或線上時移轉資料庫。 在離線移轉中,當移轉開始時,應用程式即會開始停機。 若要將停機限制於在移轉後完全移轉至新環境所需的時間,請使用線上移轉。 建議您測試離線移轉,以決定停機是否在可接受範圍。 如果無法接受預期的停機,則請執行線上移轉。
本文說明如何在線上從 PostgreSQL 的內部部署執行個體遷移至適用於 PostgreSQL 的 Azure 資料庫。
必要條件
若要完成本教學課程,您需要:
下載並安裝 PostgreSQL 社群版 9.5、9.6 或 10。 來源 PostgreSQL 伺服器版本必須是 9.5.11、9.6.7、10 或更新版本。 如需詳細資訊,請參閱支援的 PostgreSQL 資料庫版本一文。
目標「適用於 PostgreSQL 的 Azure 資料庫」版本必須等於或晚於 RDS PostgreSQL 版本。 例如,RDS PostgreSQL 9.6 只能遷移至適用於 PostgreSQL 的 Azure 資料庫 9.6、10 或 11,但無法遷移至適用於 PostgreSQL 的 Azure 資料庫 9.5。
建立適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的執行個體。
使用 Azure Resource Manager 部署模型建立適用於 Azure 資料庫移轉服務的 Microsoft Azure 虛擬網路,此模型會使用 ExpressRoute 或 VPN 提供內部部署來源伺服器的站對站連線。 如需建立虛擬網路的詳細資訊,請參閱虛擬網路文件,特別是快速入門文章,裡面會提供逐步操作詳細資料。
確定您的虛擬網路的網路安全性群組規則不會封鎖 ServiceBus、儲存體和 AzureMonitor 的 ServiceTag 的輸出連接埠 443。 如需虛擬網路 NSG 流量篩選的詳細資訊,請參閱<使用網路安全性群組來篩選網路流量>(機器翻譯) 一文。
開啟 Windows 防火牆以允許 Azure 資料庫移轉服務存取來源 PostgreSQL 伺服器,其預設會為 TCP 連接埠 5432。
使用來源資料庫前面的防火牆設備時,您可能必須新增防火牆規則,才能讓 Azure 資料庫移轉服務存取來源資料庫,以進行移轉。
為適用於 PostgreSQL Server 的 Azure 資料庫伺服器建立伺服器層級的防火牆規則,以允許 Azure 資料庫移轉服務存取目標資料庫。 提供用於 Azure 資料庫移轉服務之虛擬網路的子網路範圍。
設定 AWS RDS PostgreSQL 以進行複寫
若要建立新的參數群組,請遵循 AWS 在使用資料庫參數群組一文中提供的指示。
使用主要使用者名稱從 Azure 資料庫移轉服務連接到來源。 如果您使用的帳戶並非非主要使用者帳戶,該帳戶必須具有 rds_superuser 角色和 rds_replication 角色。 Rds_replication 角色會授與邏輯位置的管理權限,以及使用邏輯位置進行資料串流的權限。
使用下列組態建立新的參數群組:
將 DB 參數群組中的
rds.logical_replication
參數設定為1
。max_wal_senders
= [並行工作的數目]。max_wal_senders
參數會設定可執行的並行工作數目。 建議的設定:10
。max_replication_slots
= [插槽數目]。 建議的設定:5
。
將您建立的參數群組與 RDS PostgreSQL 執行個體建立關聯。
移轉結構描述
從來源資料庫擷取結構描述並套用到目標資料庫,以完成所有資料庫物件 (例如資料表結構描述、索引和預存程序) 的移轉。
若是只要遷移結構描述,最簡單的方法是使用 pg_dump with the -s 選項。 如需詳細資訊,請參閱 Postgres pg_dump 教學課程的範例。
pg_dump -O -h hostname -U db_username -d db_name -s > your_schema.sql
例如,若要傾印 dvdrental 資料庫的結構描述檔案,請使用下列命令:
pg_dump -O -h localhost -U postgres -d dvdrental -s > dvdrentalSchema.sql
在目標服務中建立空的資料庫,即適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器。
將結構描述匯入目標服務,也就是適用於 PostgreSQL 的 Azure 資料庫。 若要還原結構描述傾印檔案,請執行下列命令:
psql -h hostname -U db_username -d db_name < your_schema.sql
例如:
psql -h mypgserver-20170401.postgres.database.azure.com -U postgres -d dvdrental < dvdrentalSchema.sql
注意
移轉服務會在內部處理外部索引鍵和觸發程序的啟用/停用,以確保可靠且強固的資料移轉。 因此,您不必擔心對目標資料庫結構描述進行任何修改。
註冊資源提供者
您必須在建立第一個資料庫移轉服務執行個體之前,註冊 Microsoft.DataMigration 資源提供者。
登入 Azure 入口網站。 搜尋並選取訂閱。
選取您要在其中建立 Azure 資料庫移轉服務執行個體的訂用帳戶,然後選取 [資源提供者]。
搜尋移轉,然後針對 [Microsoft.DataMigration] 選取 [註冊]。
建立 Azure 資料庫移轉服務的執行個體
在 Azure 入口網站中,選取 [+ 建立資源],搜尋「Azure 資料庫移轉服務」,然後從下拉式清單選取 [Azure 資料庫移轉服務]。
在 [Azure 資料庫移轉服務] 畫面上,選取 [建立]。
在 [建立移轉服務] 畫面上,指定服務的名稱、訂用帳戶,以及新的或現有的資源群組。
選取您要在其中建立 Azure 資料庫移轉服務執行個體的位置。
選取現有的虛擬網路或建立新的虛擬網路。
虛擬網路會為 Azure 資料庫移轉服務提供來源 PostgreSQL 執行個體和目標適用於 PostgreSQL 的 Azure 資料庫執行個體的存取權。
如需如何在 Azure 入口網站中建立虛擬網路的詳細資訊,請參閱使用 Azure 入口網站建立虛擬網路一文。
選取定價層。 對於此線上移轉,請選取 Premium: 4vCores 定價層。
選取 [建立] 以建立服務。
建立移轉專案
建立服務之後,請在 Azure 入口網站中找出該服務,然後建立新的移轉專案。
在 Azure 入口網站中,選取 [所有服務],搜尋 Azure 資料庫移轉服務,然後選取 [Azure 資料庫移轉服務]。
在 [Azure 資料庫移轉服務] 畫面上,搜尋您建立的 Azure 資料庫移轉服務執行個體名稱,選取該執行個體,然後選取 [新增移轉專案]。
在 [新增移轉專案] 畫面上指定專案名稱,並在 [來源伺服器類型] 文字方塊中中選取 [AWS RDS for PostgreSQL],然後在 [目標伺服器類型] 文字方塊中選取 [適用於 PostgreSQL 的 Azure 資料庫]。
在 [選擇活動類型] 區段中,選取 [線上資料移轉]。
重要
選取線上資料移轉。 此案例不支持離線移轉。
或者,您可以選擇 [僅建立專案] 以立即建立移轉專案,並於後續再執行移轉。
選取 [儲存]。
選取 [建立及執行活動],以建立專案並執行移轉活動。
在 [專案建立] 窗格中記下設定線上移轉所需的先決條件。
指定來源詳細資料
在 [新增來源詳細資料] 畫面上,指定來源 PostgreSQL 執行個體的連線詳細資料。
指定目標詳細資料
選取 [儲存],然後在 [目標詳細資料] 畫面上,指定目標「適用於 PostgreSQL Server 的 Azure 資料庫」伺服器的連線詳細資料;該伺服器是使用 pg_dump 預先佈建並已部署 DVD Rentals 結構描述。
選取 [儲存],然後在 [對應到目標資料庫] 畫面上,對應要進行移轉的來源和目標資料庫。
如果目標資料庫包含與來源資料庫相同的資料庫名稱,Azure 資料庫移轉服務依預設會選取目標資料庫。
選取 [儲存],在 [移轉摘要] 畫面的 [活動名稱] 文字方塊中,指定移轉活動的名稱,然後檢閱摘要,以確定來源和目標詳細資料都與您先前的指定相符。
執行移轉
選取 [執行移轉]。
[移轉活動] 視窗隨即出現,且活動的 [狀態] 為 [正在初始化]。
監視移轉
在移轉活動畫面上,選取 [重新整理] 以更新顯示,直到移轉的 [狀態] 顯示為 [執行中] 為止。
在 [資料庫名稱] 下方選取特定資料庫,以取得 [載入完整資料] 和 [累加式資料同步] 作業的移轉狀態。
[載入完整資料] 會顯示初始載入移轉狀態,而 [累加式資料同步] 則會顯示異動資料擷取 (CDC) 狀態。
執行完全移轉
初始完整載入完成後,資料庫會標示為 [已可執行完全移轉]。
當您準備好要完成資料庫移轉後,請選取 [開始完全移轉]。
等到 [暫止的變更] 計數器顯示
0
,以確保對來源資料庫的所有傳入交易都已停止,選取 [確認] 核取方塊,然後選取 [套用]。當資料庫移轉狀態顯示為 [已完成] 時,請將應用程式連線至新的「適用於 PostgreSQL 的 Azure 資料庫」目標資料庫。
內部部署 RDS PostgreSQL 執行個體至適用於 PostgreSQL 的 Azure 資料庫的線上移轉作業現已完成。