共用方式為


教學課程:在線上使用 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 虛擬網路,此模型會使用 ExpressRouteVPN 提供內部部署來源伺服器的站對站連線。 如需建立虛擬網路的詳細資訊,請參閱虛擬網路文件,特別是快速入門文章,裡面會提供逐步操作詳細資料。

  • 確定您的虛擬網路的網路安全性群組規則不會封鎖 ServiceBus、儲存體和 AzureMonitor 的 ServiceTag 的輸出連接埠 443。 如需虛擬網路 NSG 流量篩選的詳細資訊,請參閱<使用網路安全性群組來篩選網路流量>(機器翻譯) 一文。

  • 設定用於 Database Engine 存取的 Windows 防火牆

  • 開啟 Windows 防火牆以允許 Azure 資料庫移轉服務存取來源 PostgreSQL 伺服器,其預設會為 TCP 連接埠 5432。

  • 使用來源資料庫前面的防火牆設備時,您可能必須新增防火牆規則,才能讓 Azure 資料庫移轉服務存取來源資料庫,以進行移轉。

  • 為適用於 PostgreSQL Server 的 Azure 資料庫伺服器建立伺服器層級的防火牆規則,以允許 Azure 資料庫移轉服務存取目標資料庫。 提供用於 Azure 資料庫移轉服務之虛擬網路的子網路範圍。

設定 AWS RDS PostgreSQL 以進行複寫

  1. 若要建立新的參數群組,請遵循 AWS 在使用資料庫參數群組一文中提供的指示。

  2. 使用主要使用者名稱從 Azure 資料庫移轉服務連接到來源。 如果您使用的帳戶並非非主要使用者帳戶,該帳戶必須具有 rds_superuser 角色和 rds_replication 角色。 Rds_replication 角色會授與邏輯位置的管理權限,以及使用邏輯位置進行資料串流的權限。

  3. 使用下列組態建立新的參數群組:

    • 將 DB 參數群組中的 rds.logical_replication 參數設定為 1

    • max_wal_senders = [並行工作的數目]。 max_wal_senders 參數會設定可執行的並行工作數目。 建議的設定:10

    • max_replication_slots = [插槽數目]。 建議的設定:5

  4. 將您建立的參數群組與 RDS PostgreSQL 執行個體建立關聯。

移轉結構描述

  1. 從來源資料庫擷取結構描述並套用到目標資料庫,以完成所有資料庫物件 (例如資料表結構描述、索引和預存程序) 的移轉。

    若是只要遷移結構描述,最簡單的方法是使用 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
    
  2. 在目標服務中建立空的資料庫,即適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器。

  3. 將結構描述匯入目標服務,也就是適用於 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 資源提供者。

  1. 登入 Azure 入口網站。 搜尋並選取訂閱

    顯示入口網站訂用帳戶的螢幕擷取畫面。

  2. 選取您要在其中建立 Azure 資料庫移轉服務執行個體的訂用帳戶,然後選取 [資源提供者]

    SQL VM 資源提供者的螢幕擷取畫面。

  3. 搜尋移轉,然後針對 [Microsoft.DataMigration] 選取 [註冊]

    顯示註冊資源提供者的螢幕擷取畫面。

建立 Azure 資料庫移轉服務的執行個體

  1. 在 Azure 入口網站中,選取 [+ 建立資源],搜尋「Azure 資料庫移轉服務」,然後從下拉式清單選取 [Azure 資料庫移轉服務]

    Azure Marketplace 的螢幕擷取畫面。

  2. 在 [Azure 資料庫移轉服務] 畫面上,選取 [建立]

    螢幕擷取畫面,其中顯示建立 Azure 資料庫移轉服務執行個體。

  3. [建立移轉服務] 畫面上,指定服務的名稱、訂用帳戶,以及新的或現有的資源群組。

  4. 選取您要在其中建立 Azure 資料庫移轉服務執行個體的位置。

  5. 選取現有的虛擬網路或建立新的虛擬網路。

    虛擬網路會為 Azure 資料庫移轉服務提供來源 PostgreSQL 執行個體和目標適用於 PostgreSQL 的 Azure 資料庫執行個體的存取權。

    如需如何在 Azure 入口網站中建立虛擬網路的詳細資訊,請參閱使用 Azure 入口網站建立虛擬網路一文。

  6. 選取定價層。 對於此線上移轉,請選取 Premium: 4vCores 定價層。

    設定 Azure 資料庫移轉服務執行個體設定的螢幕擷取畫面。

  7. 選取 [建立] 以建立服務。

建立移轉專案

建立服務之後,請在 Azure 入口網站中找出該服務,然後建立新的移轉專案。

  1. 在 Azure 入口網站中,選取 [所有服務],搜尋 Azure 資料庫移轉服務,然後選取 [Azure 資料庫移轉服務]

    找出 Azure 資料庫移轉服務之所有執行個體的螢幕擷取畫面。

  2. 在 [Azure 資料庫移轉服務] 畫面上,搜尋您建立的 Azure 資料庫移轉服務執行個體名稱,選取該執行個體,然後選取 [新增移轉專案]

  3. 在 [新增移轉專案] 畫面上指定專案名稱,並在 [來源伺服器類型] 文字方塊中中選取 [AWS RDS for PostgreSQL],然後在 [目標伺服器類型] 文字方塊中選取 [適用於 PostgreSQL 的 Azure 資料庫]

  4. 在 [選擇活動類型] 區段中,選取 [線上資料移轉]

    重要

    選取線上資料移轉。 此案例不支持離線移轉。

    建立資料庫移轉服務專案的螢幕擷取畫面。

    或者,您可以選擇 [僅建立專案] 以立即建立移轉專案,並於後續再執行移轉。

  5. 選取 [儲存]。

  6. 選取 [建立及執行活動],以建立專案並執行移轉活動。

    在 [專案建立] 窗格中記下設定線上移轉所需的先決條件。

指定來源詳細資料

在 [新增來源詳細資料] 畫面上,指定來源 PostgreSQL 執行個體的連線詳細資料。

來源詳細資料的螢幕擷取畫面。

指定目標詳細資料

  1. 選取 [儲存],然後在 [目標詳細資料] 畫面上,指定目標「適用於 PostgreSQL Server 的 Azure 資料庫」伺服器的連線詳細資料;該伺服器是使用 pg_dump 預先佈建並已部署 DVD Rentals 結構描述。

    目標詳細資料的螢幕擷取畫面。

  2. 選取 [儲存],然後在 [對應到目標資料庫] 畫面上,對應要進行移轉的來源和目標資料庫。

    如果目標資料庫包含與來源資料庫相同的資料庫名稱,Azure 資料庫移轉服務依預設會選取目標資料庫。

    對應至目標資料庫的螢幕擷取畫面。

  3. 選取 [儲存],在 [移轉摘要] 畫面的 [活動名稱] 文字方塊中,指定移轉活動的名稱,然後檢閱摘要,以確定來源和目標詳細資料都與您先前的指定相符。

    移轉摘要的螢幕擷取畫面。

執行移轉

選取 [執行移轉]

[移轉活動] 視窗隨即出現,且活動的 [狀態] 為 [正在初始化]

監視移轉

  1. 在移轉活動畫面上,選取 [重新整理] 以更新顯示,直到移轉的 [狀態] 顯示為 [執行中] 為止。

    活動狀態 - 正在執行的螢幕擷取畫面。

  2. 在 [資料庫名稱] 下方選取特定資料庫,以取得 [載入完整資料] 和 [累加式資料同步] 作業的移轉狀態。

    [載入完整資料] 會顯示初始載入移轉狀態,而 [累加式資料同步] 則會顯示異動資料擷取 (CDC) 狀態。

    清查畫面 - 載入完整資料的螢幕擷取畫面。

    清查畫面 - 累加式資料同步的螢幕擷取畫面。

執行完全移轉

初始完整載入完成後,資料庫會標示為 [已可執行完全移轉]

  1. 當您準備好要完成資料庫移轉後,請選取 [開始完全移轉]

  2. 等到 [暫止的變更] 計數器顯示 0,以確保對來源資料庫的所有傳入交易都已停止,選取 [確認] 核取方塊,然後選取 [套用]

    完成完全切換畫面的螢幕擷取畫面。

  3. 當資料庫移轉狀態顯示為 [已完成] 時,請將應用程式連線至新的「適用於 PostgreSQL 的 Azure 資料庫」目標資料庫。

內部部署 RDS PostgreSQL 執行個體至適用於 PostgreSQL 的 Azure 資料庫的線上移轉作業現已完成。