共用方式為


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

重要

建議您在適用於 PostgreSQL 的 Azure 資料庫中使用新的移轉服務,以取得更簡化、更有效率的移轉體驗。 此服務可藉由支援各種來源環境來簡化流程,確保輕鬆轉換至適用於 PostgreSQL 的 Azure 資料庫。

如需 Azure 資料庫移轉服務的詳細資訊,請參閱《什麼是 Azure Database Migration Service?》一文。

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

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

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

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

重要

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

必要條件

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

  • 下載並安裝 PostgreSQL 社群版。 來源 PostgreSQL 伺服器版本必須是 >= 9.4。 如需詳細資訊,請參閱《適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器中的受支援 PostgreSQL 版本》。

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

  • 建立適用於 PostgreSQL 的 Azure 資料庫伺服器

  • 使用 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 伺服器,其預設會為 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
    

    例如,若要建立 listdb 資料庫的結構描述傾印檔案:

    pg_dump -O -h localhost -U postgres -d listdb -s -x > listdbSchema.sql
    

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

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

    如需有關如何連線及建立資料庫的詳細資訊,請參閱在 Azure 入口網站中建立適用於 PostgreSQL 的 Azure 資料庫伺服器一文。

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

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

    例如:

    psql -h mypgserver-20170401.postgres.database.azure.com  -U postgres -d migratedb < listdbSchema.sql
    

    注意

    移轉服務會在內部處理外部索引鍵和觸發程序的啟用/停用,以確保可靠且強固的資料移轉。 因此,您不必擔心對目標資料庫結構描述進行任何修改。

註冊資源提供者

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

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

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

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

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

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

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

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

  1. 從 Azure 入口網站功能表或 [首頁] 頁面上,選取 [建立資源]。 搜尋並選取 [Azure 資料庫移轉服務]

    Azure Marketplace 的螢幕擷取畫面。

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

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

    選取適當的 [來源伺服器類型] 和 [目標伺服器類型],然後選擇 [資料庫移轉服務 (傳統)] 選項。

    選取 Database Migration Service (經典) 案例的螢幕擷取畫面。

  3. 在 [建立移轉服務] 的基本資料畫面上:

    • 選取訂用帳戶。
    • 建立新的資源群組,或選擇現有的群組。
    • 指定 Azure 資料庫移轉服務執行個體的名稱。
    • 選取您要在其中建立 Azure 資料庫移轉服務執行個體的位置。
    • 選擇 Azure 作為服務模式。
    • 選取定價層。 如需成本和定價層的詳細資訊,請參閱定價分頁

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

    • 選取 [下一步:網路]
  4. 在 [建立移轉服務] 的網路設定畫面上:

    • 選取現有的虛擬網路或建立新的虛擬網路。 虛擬網路提供 Azure 資料庫移轉服務存取來源伺服器和目標執行個體。 如需如何在 Azure 入口網站中建立虛擬網路的詳細資訊,請參閱使用 Azure 入口網站建立虛擬網路一文。

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

    • 選取 [檢閱 + 建立] 以檢閱詳細資料,然後選取 [建立] 以建立服務。

    • 在幾分鐘之後,您的 Azure 資料庫移轉服務執行個體就會建立且可供使用:

    已建立移轉服務

建立移轉專案

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

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

    搜尋 Azure 資料庫移轉服務的螢幕擷取畫面。

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

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

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

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

    建立新移轉專案的螢幕擷取畫面。

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

  5. 選取 [建立並執行活動],以成功使用 Azure 資料庫移轉服務來遷移資料。

指定來源詳細資料

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

    [新增來源詳細資料] 畫面的螢幕擷取畫面。

指定目標詳細資料

  1. 在 [目標詳細資料] 畫面上,為目標適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器指定連線詳細資料,這是使用 pg_dump 將結構描述部署至的預先佈建執行個體。

    [新增目標詳細資料] 畫面的螢幕擷取畫面。

  2. 選取 [下一步:選取資料庫],然後在 [選取資料庫] 畫面上,對應來源和目標資料庫以進行移轉。

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

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

  3. 選取 [下一步:選取資料表],然後在 [選取資料表] 畫面上,選取需要遷移的必要資料表。

    選取要移轉之資料表畫面的螢幕擷取畫面。

  4. 選取 [下一步:設定移轉設定],然後在 [設定移轉設定] 畫面上,接受預設值。

    設定移轉設定畫面的螢幕擷取畫面。

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

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

執行移轉

選取 [開始移轉]

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

監視移轉

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

    移轉監視畫面的螢幕擷取畫面。

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

    注意

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

    移轉完整載入詳細資料畫面的螢幕擷取畫面。

    移轉累加式載入詳細資料畫面的螢幕擷取畫面。

執行完全移轉

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

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

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

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

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