Share via


教學課程:使用移轉服務從內部部署或裝載 PostgreSQL 的 Azure VM 遷移至 適用於 PostgreSQL 的 Azure 資料庫

適用範圍:適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器

本教學課程會引導您使用 Azure 入口網站和 Azure CLI,將 PostgreSQL 執行個體從內部部署或 Azure 虛擬機器 (VM) 移轉至適用於 PostgreSQL 的 Azure 資料庫彈性伺服器。

適用於 PostgreSQL 的 Azure 資料庫中的移轉服務是已整合到 Azure 入口網站和 Azure CLI 中的完全受控服務。 其設計目的是要簡化適用於 PostgreSQL 的 Azure 資料庫彈性伺服器的移轉旅程圖。

  • 設定適用於 PostgreSQL 的 Azure 資料庫彈性伺服器
  • 設定移轉工作
  • 監視移轉
  • 取消移轉
  • 移轉後

必要條件(離線)

在使用適用於 PostgreSQL 的 Azure 資料庫中的移轉服務開始進行移轉之前,請先滿足下列適用於離線移轉案例的必要條件。

驗證來源版本

來源 PostgreSQL 版本應該是 >= 9.5。 如果來源 PostgreSQL 版本小於 9.5,請先將來源 PostgreSQL 版本升級至 9.5 或更新版本,再進行移轉。

目標設定

  • 移轉前必須先在 Azure 中設定適用於 PostgreSQL 的 Azure 資料庫。

  • 為適用於 PostgreSQL 的 Azure 資料庫選擇的 SKU 應與來源資料庫的規格對應,以確保相容性和適當的效能。

  • 關於如何建立新的適用於 PostgreSQL 的 Azure 資料庫,如需詳細指示,請參閱下列連結:快速入門:建立伺服器

網路設定

必須正確設定網路,才能在移轉期間確保來源與目標能成功連線。 以下指南可協助您為不同案例建立網路連線:

移轉的網路需求:

  • ExpressRoute/IPsec VPN/VPN 通道:在將內部部署/AWS 來源連線至 Azure 時,可能需要設定 ExpressRoute、IPsec VPN 或 VPN 通道,以便能安全地傳輸資料。

  • VNET 對等互連:在兩個不同的 VNet 之間建立虛擬網路對等互連,以便能進行直接的網路連線,這是在 Azure VM 與適用於 PostgreSQL 的 Azure 資料庫之間進行移轉時的必要條件。

連線能力案例:

下表可協助設定來源與目標之間的網路。

來源 Target 連線能力秘訣
公開 公開 如果來源已列入目標防火牆規則的允許清單,則不需要採取任何其他動作。
私人 公用 不支援此設定;請使用 pg_dump/pg_restore 來傳輸資料。
公開 私人 如果來源已列入目標防火牆規則的允許清單,則不需要採取任何其他動作。
私人 私人 在來源與目標之間建立 ExpressRoute、IPsec VPN、VPN 通道或虛擬網路對等互連。
私人 私人端點 不支援此設定;請連絡 Microsoft 支援服務

其他網路考量:

  • pg_hba.conf 設定:為了能在來源與目標 PostgreSQL 執行個體之間進行連線,請務必驗證並可能要修改 pg_hba.conf 檔案。 此檔案包含用戶端驗證,且必須設定為允許目標 PostgreSQL 連線到來源。 對 pg_hba.conf 檔案的變更通常需要重新啟動來源 PostgreSQL 執行個體才會生效。

注意

pg_hba.conf 檔案位於 PostgreSQL 安裝的資料目錄中。 如果來源資料庫是內部部署 PostgreSQL 伺服器或裝載在 Azure VM 上的 PostgreSQL 伺服器,則應該檢查並設定此檔案。 若為 AWS RDS 或類似受控服務上的 PostgreSQL 執行個體,則無法直接存取或不適用 pg_hba.conf 檔案。 相反地,要透過服務所提供的安全性和網路存取設定來控制存取。

如需網路設定的詳細資訊,請瀏覽適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器中的移轉服務網路指引

擴充

延伸模組是可新增至 PostgreSQL 以增強其功能的額外功能。 適用於 PostgreSQL 的 Azure 資料庫支援延伸模組,但必須以手動方式加以啟用。 若要啟用延伸模組,請遵循下列步驟:

  • 在來源中使用 select 命令列出要使用的所有延伸模組 - select extname,extversion from pg_extension;

  • 在適用於 PostgreSQL 的 Azure 資料庫上的 [伺服器參數] 頁面上,搜尋 azure.extensions 伺服器參數。 啟用在 PostgreSQL 內的來源中找到的延伸模組。

  • 儲存參數變更,並視需要重新啟動適用於 PostgreSQL 的 Azure 資料庫以套用新的設定。

    延伸模組的螢幕快照。

  • 檢查清單中是否包含下列任何延伸模組:

    • PG_CRON
    • PG_HINT_PLAN
    • PG_PARTMAN_BGW
    • PG_PREWARM
    • PG_STAT_STATEMENTS
    • PG_AUDIT
    • PGLOGICAL
    • WAL2JSON

如果有,請在伺服器參數頁面中搜尋 shared_preload_libraries 參數。 此參數會指出在重新啟動伺服器時預先載入的延伸模組程式庫集合。

使用者和角色

在移轉至適用於 PostgreSQL 的 Azure 資料庫時,務必要分開解決使用者和角色的移轉,因為這些項目的移轉需要您手動介入:

  • 手動移轉使用者和角色:使用者及其相關聯的角色必須以手動方式移轉至適用於 PostgreSQL 的 Azure 資料庫。 為了能夠進行此程序,您可以使用 pg_dumpall 公用程式搭配 --globals-only 旗標來匯出全域物件,例如角色和使用者帳戶。 請執行下列命令,並將 <<username>> 取代為實際的使用者名稱,並將 <<filename>> 取代為所需的輸出檔案名稱:

    pg_dumpall --globals-only -U <<username>> -f <<filename>>.sql
    
  • 超級使用者角色的限制:適用於 PostgreSQL 的 Azure 資料庫不支援超級使用者角色。 因此,具有超級使用者權限的使用者必須先移除這些權限,才能進行移轉。 請務必據此調整權限和角色。

藉由遵循這些步驟,您可以確保使用者帳戶和角色正確移轉至適用於 PostgreSQL 的 Azure 資料庫,而不會遇到與超級使用者限制相關的問題。

伺服器參數

這些參數不會自動移轉至目標環境,必須手動設定。

  • 藉由存取 Azure 入口網站中的 [伺服器參數] 區段,並據以手動更新參數值,讓來源 PostgreSQL 資料庫與適用於 PostgreSQL 的 Azure 資料庫有相符的伺服器參數值。

  • 儲存參數變更,並視需要重新啟動適用於 PostgreSQL 的 Azure 資料庫以套用新的設定。

在目標中停用高可用性 (可靠性) 和讀取複本

  • 請務必要在目標環境中停用高可用性 (可靠性)和讀取複本。 請在移轉完成後,才啟用這些功能。

  • 藉由遵循這些指導方針,可協助確保移轉程序順暢進行,而不會因為 HA 和讀取複本而增添變數。 移轉完成且資料庫穩定之後,便可以繼續啟用這些功能,以增強 Azure 中資料庫環境的可用性和可擴縮性。

您可以使用 Azure 入口網站 進行移轉。

設定移轉工作

移轉服務會在 Azure 入口網站上提供簡單的精靈型體驗。

  1. 開啟 Web 瀏覽器,然後移至入口網站。 輸入您的認證來登入。 預設檢視是您的服務儀表板。

  2. 移至適用於 PostgreSQL 的 Azure 資料庫彈性伺服器。

  3. 在彈性伺服器 [概觀] 索引標籤的左側功能表上,向下捲動至 [移轉] 並加以選取。

    移轉選取項目的螢幕快照。

  4. 選取 [建立] 按鈕,以從內部部署或 Azure VM 移轉至彈性伺服器。

    注意

    第一次使用移轉服務時會出現空白方格,並提示您開始進行第一次移轉。

    如果已建立目標為彈性伺服器的移轉,方格中現在會包含所嘗試之移轉的相關資訊。

  5. 選取 [建立] 按鈕,以瀏覽一系列用來執行移轉的精靈型索引標籤。

    建立移轉頁面的螢幕快照。

設定

第一個索引標籤是 [設定] 索引標籤。

使用者必須提供與移轉相關的多個詳細資料,例如移轉名稱、來源伺服器類型、選項和模式。

  • 移轉名稱是至此彈性伺服器目標的每個移轉的唯一識別碼。 此欄位只接受英數字元,不接受任何特殊字元,但連字號 (-) 除外。 名稱的開頭不能是連字號,而且對於目標伺服器而言應該是唯一的。 對相同彈性伺服器目標的任兩個移轉不能有相同的名稱。

  • 來源伺服器類型 - 根據您的 PostgreSQL 來源,您可以選取適用於 PostgreSQL 的 Azure 資料庫單一伺服器、內部部署、Azure VM。

  • 移轉選項 - 可讓您在觸發移轉前執行驗證。 您可以挑選下列任何選項

    • 驗證:檢查您的伺服器和資料庫整備程度,以移轉至目標。
    • 移轉:略過驗證並開始移轉。
    • 驗證並移轉:在觸發移轉之前執行驗證。 如果沒有驗證失敗,便會觸發移轉。
      • 若要在執行移轉前先執行預先移轉驗證,選擇 [驗證] 或 [驗證並移轉] 選項是很好的做法。

若要深入了解預先移轉驗證,請瀏覽預先移轉

  • 移轉模式可讓您挑選移轉的模式。 預設選項為 [離線]

選取 [下一步:連線至來源] 按鈕。

設定移轉頁面的螢幕快照。

連線至來源

[連線至來源] 索引標籤會提示您提供與 [設定] 索引標籤中的所選來源相關的詳細資料,這是資料庫的來源。

  • 伺服器名稱 - 提供來源 PostgreSQL 執行個體的主機名稱或 IP 位址

  • 連接埠 - 來源伺服器的連接埠號碼

  • 伺服器管理員登入名稱 - 來源 PostgreSQL 伺服器的使用者名稱

  • 密碼 - 來源 PostgreSQL 伺服器的密碼

  • SSL 模式 - 支援的值有偏好和必要。 當來源 PostgreSQL 伺服器上的 SSL 為 OFF 時,使用 SSLMODE=prefer。 如果來源伺服器上的 SSL 是 ON,則使用 SSLMODE=require。 您可以在 postgresql.conf 檔案中確定 SSL 值。

  • 測試連線 - 執行目標與來源之間的連線能力測試。 連線成功後,使用者可以繼續進行下一個步驟;其必須識別目標與來源之間的網路問題,並驗證來源的使用者名稱/密碼。 測試連線會花幾分鐘的時間在目標與來源之間建立連線。

測試連線成功後,請選取 [下一步:選取移轉目標] 按鈕。

線上來源移轉頁面的螢幕快照。

連線至目標

[選取移轉目標] 索引標籤會顯示彈性伺服器目標的中繼資料,例如訂用帳戶名稱、資源群組、伺服器名稱、位置和 PostgreSQL 版本。

  • 管理使用者名稱 - 目標 PostgreSQL 伺服器的管理使用者名稱

  • 密碼 - 目標 PostgreSQL 伺服器的密碼

  • 測試連線 - 執行目標與來源之間的連線能力測試。 連線成功後,使用者可以繼續進行下一個步驟。 否則,我們必須識別目標與來源之間的網路問題,並驗證目標的使用者名稱/密碼。 測試連線會花幾分鐘的時間在目標與來源之間建立連線

測試連線成功後,請選取 [下一步:選取要移轉的資料庫]

線上目標移轉頁面的螢幕快照。

選取要移轉的資料庫

在 [選取要移轉的資料庫] 索引標籤下,您可以選擇要從來源 PostgreSQL 伺服器移轉的使用者資料庫清單。

選取資料庫之後,請選取 [下一步:摘要]

fetchDB 移轉頁面的螢幕快照。

摘要

[摘要] 索引標籤會摘要說明用於建立驗證或移轉的所有來源和目標詳細資料。 檢閱詳細資料,然後選取 [開始驗證和移轉] 按鈕。

摘要移轉頁面的螢幕快照。

監視移轉

選取 [開始驗證和移轉] 按鈕後,系統會在幾秒鐘內顯示通知,指出驗證或移轉建立已成功。 系統會自動將您重新導向至彈性伺服器的 [移轉] 頁面。 該項目會處於 InProgress 狀態,以及 PerformingPreRequisiteSteps 子狀態。 此工作流程會花 2 到 3 分鐘的時間來設定移轉基礎結構和檢查網路連線。

監視移轉頁面的螢幕快照。

顯示移轉的方格具有以下資料行:名稱狀態移轉模式移轉類型來源伺服器來源伺服器類型資料庫持續時間開始時間。 這些項目會以開始時間的遞減順序顯示,最上方為最近的項目。 您可以使用 [重新整理] 按鈕來重新整理驗證或移轉的執行狀態。

移轉詳細資料

請選取方格中的移轉名稱,以查看相關聯的詳細資料。

在 [設定] 索引標籤中,我們選取了 [驗證並移轉] 移轉選項。 在此案例中,會先執行驗證再開始移轉。 PerformingPreRequisiteSteps 子狀態完成之後,工作流程會移至 Validation in Progress 的子狀態。

  • 如果驗證發生錯誤,移轉會進入 Failed 狀態。

  • 如果驗證完成且沒有任何錯誤,則會開始移轉,且工作流程會移至 Migrating Data 的子狀態。

執行個體層級和資料庫層級有提供驗證詳細資料。

  • 執行個體層級的驗證
    • 包含與連線能力檢查、來源版本 (亦即,PostgreSQL 版本 >= 9.5)、伺服器參數檢查 (亦即,是否已在適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的伺服器參數中啟用延伸模組) 相關的驗證。
  • 資料庫層級的驗證
    • 其包含與適用於 PostgreSQL 的 Azure 資料庫彈性伺服器中延伸模組和定序支援相關的個別資料庫驗證。

您可以在 [移轉詳細資料] 頁面底下看到驗證移轉狀態。 顯示驗證和移轉詳細數據的螢幕快照。

可能的移轉狀態包括:

  • InProgress:正在設定移轉基礎結構,或正在移轉實際的資料。
  • Canceled:已取消或刪除移轉。
  • Failed:移轉已失敗。
  • Validation Failed:驗證已失敗。
  • Succeeded:移轉已成功且已完成。
  • WaitingForUserAction:僅適用於線上移轉。 等候使用者動作以執行完全移轉。

可能的移轉子狀態包括:

  • PerformingPreRequisiteSteps:正在設定用於資料移轉的基礎結構。
  • Validation in Progress:驗證正在進行中。
  • MigratingData:資料移轉正在進行中。
  • CompletingMigration:移轉處於完成的最終階段。
  • Completed:已完成移轉。
  • Failed:移轉失敗。

可能的驗證子狀態包括:

  • Failed:驗證失敗。
  • Succeeded:驗證成功。
  • Warning:驗證處於警告狀態。 警告是您在規劃移轉時必須記住的參考訊息。

使用入口網站取消移轉

您可以取消任何進行中的驗證或移轉。 工作流程必須處於 InProgress 狀態,才能取消。 您無法取消處於 SucceededFailed 狀態的移轉。

  • 取消驗證會停止進一步的驗證活動,而驗證會移至 [已 取消] 狀態。
  • 取消移轉會停止目標伺服器上的進一步移轉活動,並移至 [已 取消] 狀態。 取消動作會回復目標伺服器上的移轉服務所做的所有變更。

移轉後

資料庫完成後,必須手動驗證來源與目標之間的資料,並確認目標資料庫中的所有物件都已成功建立。

移轉之後,便可以執行下列工作:

  • 確認彈性伺服器上的資料,並確定其是與來源執行個體完全相同的複本。

  • 驗證後,視需要在彈性伺服器上啟用高可用性選項。

  • 變更彈性伺服器的 SKU,以符合應用程式需求。 這項變更需要重新啟動資料庫伺服器。

  • 如果您有在來源執行個體中變更任何伺服器參數的預設值,請在彈性伺服器中複製這些伺服器參數值。

  • 將其他伺服器設定 (例如標籤、警示和防火牆規則 (如果適用的話)) 從來源執行個體複製到彈性伺服器。

  • 對應用程式進行變更,以將連接字串指向彈性伺服器。

  • 密切監視資料庫效能,確認資料庫是否需要微調效能。