教學課程:透過 Azure 入口網站 使用 DMS 將 PostgreSQL 移轉至線上適用於 PostgreSQL 的 Azure 資料庫

您可以使用 Azure 資料庫移轉服務,將資料庫從內部部署 PostgreSQL 執行個體移轉至適用於 PostgreSQL 的 Azure 資料庫,且應用程式的停機時間最短。 在此教學課程中,您會在 Azure 資料庫移轉服務中使用線上移轉活動,將 DVD Rental 範例資料庫從內部部署的 PostgreSQL 9.6 執行個體移轉至適用於 PostgreSQL 的 Azure 資料庫。

在本教學課程中,您會了解如何:

  • 使用 pg_dump 公用程式移轉範例結構描述。
  • 建立 Azure 資料庫移轉服務的執行個體。
  • 在 Azure 資料庫移轉服務中建立移轉專案。
  • 執行移轉。
  • 監視移轉。
  • 執行完全移轉。

注意

若要使用「Azure 資料庫移轉服務」來執行線上移轉,必須根據「進階」定價層建立執行個體。 我們會將磁碟加密,以防止在移轉期間使得資料遭竊

重要事項

為了獲得最佳的移轉體驗,Microsoft 建議在目標資料庫所在的同一個 Azure 區域中,建立 Azure 資料庫移轉服務的執行個體。 跨區域或地理位置移動資料可能使移轉程序變慢,並產生錯誤。

Prerequisites

若要完成本教學課程,您需要:

  • 下載並安裝 PostgreSQL 社群版 9.4、9.5、9.6 或 10。 來源 PostgreSQL Server 版本必須是 9.4、9.5、9.6、10、11、12 或 13。 如需詳細資訊,請參閱支援的 PostgreSQL 資料庫版本

    另請注意,目標「適用於 PostgreSQL 的 Azure 資料庫」版本必須等於或晚於內部部署 PostgreSQL 版本。 例如,PostgreSQL 9.6 可以移轉至適用於 PostgreSQL 的 Azure 資料庫 9.6、10 或 11,但無法移轉至適用於 PostgreSQL 的 Azure 資料庫 9.5。

  • 建立適用於 PostgreSQL 的 Azure 資料庫伺服器建立適用於 PostgreSQL 的 Azure 資料庫 - 超大規模 (Citus) 伺服器

  • 使用 Azure Resource Manager 部署模型建立 Azure 資料庫移轉服務的 Microsoft Azure 虛擬網路,以使用 ExpressRouteVPN 為您的內部部署來源伺服器提供站對站連線能力。 如需建立虛擬網路的詳細資訊,請參閱虛擬網路文件,特別是快速入門文章,裡面會提供逐步操作詳細資料。

    注意

    在虛擬網路設定期間,如果您使用 ExpressRoute 搭配與 Microsoft 對等互連的網路,請將下列服務端點新增至將佈建服務的子網路:

    • 目標資料庫端點 (例如 SQL 端點、Azure Cosmos DB 端點等)
    • 儲存體端點
    • 服務匯流排端點

    此為必要設定,因為 Azure 資料庫移轉服務沒有網際網路連線。

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

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

  • 開啟您的 Windows 防火牆以允許 Azure 資料庫移轉服務存取來源 PostgreSQL Server (依預設會使用 TCP 連接埠 5432)。

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

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

  • 在 postgresql.config 檔案中啟用邏輯複寫,並設定下列參數:

    • wal_level = logical
    • max_replication_slots = [插槽數目],建議設定為五個插槽
    • max_wal_senders =[並行工作數目] - max_wal_senders 參數設定可執行的並行工作數目,建議設定為 10 個工作

重要事項

現有資料庫中的所有資料表都需要主要索引鍵,以確保變更可以同步處理至目標資料庫。

移轉範例結構描述

若要完成所有資料表物件 (例如資料表結構描述、索引和預存程序),我們必須從來源資料庫擷取結構描述,並套用至資料庫。

  1. 使用 pg_dump-s 命令來建立資料庫的結構描述傾印檔案。

    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 -x > dvdrentalSchema.sql
    

    如需有關使用 pg_dump 公用程式的詳細資訊,請參閱 pg-dump 教學課程中的範例。

  2. 在您的目標環境中建立一個空的資料庫,即適用於 PostgreSQL 的 Azure 資料庫。

    如需如何連接及建立資料庫的詳細資訊,請參閱在 Azure 入口網站中建立適用於 PostgreSQL 的 Azure 資料庫伺服器在 Azure 入口網站中建立適用於 PostgreSQL 的 Azure 資料庫 - 超大規模 (Citus) 伺服器文章。

    注意

    適用於 PostgreSQL 的 Azure 資料庫 - 超大規模 (Citus) 的一個執行個體只有單一資料庫:citus

  3. 透過還原結構描述傾印檔案,將結構描述匯入到您所建立的目標資料庫中。

    psql -h hostname -U db_username -d db_name < your_schema.sql
    

    例如:

    psql -h mypgserver-20170401.postgres.database.azure.com  -U postgres -d dvdrental citus < dvdrentalSchema.sql
    

    注意

    移轉服務會在內部處理外鍵和觸發程式的啟用/停用,以確保可靠且健全的資料移轉。 因此,您不需要擔心對目標資料庫架構進行任何修改。

註冊資源提供者

您必須在建立第一個資料庫移轉服務執行個體之前,註冊 Microsoft.DataMigration 資源提供者。

  1. 登入 Azure 入口網站。 搜尋並選取 [訂用帳戶]

    顯示入口網站訂用帳戶

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

    顯示資源提供者

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

    註冊資源提供者

建立 DMS 執行個體

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

    Azure Marketplace

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

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

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

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

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

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

  5. 選取定價層。

    如需成本和定價層的詳細資訊,請參閱定價分頁

    設定 Azure 資料庫移轉服務執行個體設定

  6. 選取 [檢閱 + 建立] 以建立服務。

    服務建立大約會在 10 到 15 分鐘內完成。

建立移轉專案

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

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

    找出 Azure 資料庫移轉服務的所有執行個體

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

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

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

    建立 Azure 資料庫移轉服務專案

    注意

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

  5. 選取 [儲存],記下要成功使用 Azure 資料庫移轉服務來移轉資料的需求,然後選取 [建立及執行活動]。

指定來源詳細資料

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

    新增來源詳細資料畫面

  2. 選取 [儲存]。

指定目標詳細資料

  1. 在 [目標詳細資料] 畫面上,指定目標超大規模 (Citus) 伺服器的連線詳細資料,這是使用 pg_dump 部署的 DVD Rentals 結構描述超大規模 (Citus) 的預先佈建執行個體。

    目標詳細資料畫面

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

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

    對應到目標資料庫畫面

  3. 選取 [儲存],然後在 [移轉設定] 畫面上接受預設值。

    移轉設定畫面

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

    移轉摘要畫面

執行移轉

  • 選取 [執行移轉]

    移轉活動視窗隨即出現,且活動的 [狀態] 應該會更新,以顯示為 [備份進行中]。

監視移轉

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

    監視移轉程序

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

    注意

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

    完整資料載入詳細資料

    累加式資料同步詳細資料

執行完全移轉

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

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

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

    完成完全移轉畫面

  3. 當資料庫移轉狀態顯示 [已完成] 時,請重新建立序列 (如果適用),然後將應用程式連線至適用於 PostgreSQL 的 Azure 資料庫的新目標執行個體。

後續步驟