教學課程:使用移轉服務從 適用於 PostgreSQL 的 Azure 資料庫 移轉至 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器

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

使用 Azure 入口網站,您可以將 適用於 PostgreSQL 的 Azure 資料庫 的實例移轉至 適用於 PostgreSQL 的 Azure 資料庫 – 彈性伺服器。 在本教學課程中,我們會使用 Azure 入口網站,將範例資料庫從適用於 PostgreSQL 的 Azure 資料庫單一伺服器移轉至 PostgreSQL 彈性伺服器。

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

您可以使用 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 參數。 此參數會指出在重新啟動伺服器時預先載入的延伸模組程式庫集合。

伺服器參數

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

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

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

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

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

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

設定適用於 PostgreSQL 的 Azure 資料庫彈性伺服器

  • 建立目標彈性伺服器。 如需引導式步驟,請參閱使用入口網站建立 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器快速入門

  • 允許清單延伸模組,其連結庫必須在伺服器啟動時載入。 在起始移轉之前,延伸模組必須位於allowlist上。

  • 檢查資料庫數據表之間的數據分佈是否扭曲,其中大部分的數據都存在於單一(或少數) 數據表中。 如果有所扭曲,移轉速度可能會比預期更慢。 在此情況下,您可以藉由 平行移轉大型數據表來增加移轉速度。

設定移轉工作

移轉服務會在 Azure 入口網站上提供簡單的精靈型體驗。 以下說明如何開始:

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

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

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

    彈性 [概觀] 頁面的螢幕快照。

  4. 選取 [ 建立] 按鈕,以開始從單一伺服器移轉至彈性伺服器。 如果這是您第一次使用移轉服務,則會出現空白方格,並出現提示以開始您的第一次移轉。

    彈性伺服器中移轉索引標籤的螢幕快照。

    如果您已建立移轉至彈性伺服器目標的移轉,方格會包含從單一伺服器嘗試移轉至此目標的移轉相關信息。

  5. 選取 [從單一伺服器移轉] 按鈕。 您會瀏覽一系列以精靈為基礎的索引標籤,以從任何來源單一伺服器建立移轉至此彈性伺服器目標。

或者,您可以從適用於 PostgreSQL 的 Azure 資料庫單一伺服器起始移轉程序。

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

  2. 選取 [單一伺服器] 時,您可以在 [概觀] 索引標籤中觀察與移轉相關的橫幅。選取 [立即移轉] 以開始使用。

    從 [單一伺服器] 索引卷標起始移轉的螢幕快照。

  3. 系統會將您導向具有兩個選項的頁面。 如果您已建立彈性伺服器並想要使用該作為目標,請選擇 [ 選取現有],然後選取對應的 [訂用帳戶]、[資源群組] 和 [伺服器名稱詳細數據]。 選取項目之後,請選取 [移至移轉精靈 ],然後跳至此頁面的 [設定 ] 索引標籤段底下的指示。

    選擇現有彈性伺服器選項的螢幕快照。

  4. 如果您選擇 [建立新的彈性伺服器],請選取 [建立新項目],然後選取 [前往建立精靈]。 此動作會將您導向彈性伺服器建立流程,並部署彈性伺服器。

    選擇新的彈性伺服器選項的螢幕快照。

部署彈性伺服器之後,請遵循設定移轉工作底下 的步驟 3 到 5。

[設定] 索引標籤

第一個索引標籤是 [設定]。 萬一錯過,允許清單必要的擴充功能,如起始移轉之前允許列出這些延伸模組很重要。

屬於離線設定索引標籤的詳細資料螢幕快照。

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

來源伺服器類型表示來源。 在此情況下,適用於 PostgreSQL 的 Azure 資料庫 單一伺服器

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

  • 驗證:檢查您的伺服器和資料庫整備程度,以移轉至目標。
  • 移轉:略過驗證並開始移轉。
  • 驗證並移轉:在觸發移轉之前執行驗證。 僅在沒有驗證失敗時,才會觸發移轉。

在執行移轉之前,選擇 [驗證] 或 [驗證] 和 [移轉] 選項,以執行預先移轉驗證,一律是很好的作法。

如果選取 [ 在線 移轉預覽],則必須在來源單一伺服器中開啟邏輯複寫。 如果未開啟,移轉服務會自動在來源單一伺服器上開啟邏輯複寫。 您也可以在 [單一伺服器端] 窗格中的 [複寫] 索引卷標下手動設定複寫,方法是將 Azure 複寫支援層級設定為 [邏輯]。 任一種方法都會重新啟動來源單一伺服器。

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

來源索引標籤

[來源] 索引標籤會提示您提供與單一伺服器相關的詳細數據,這是資料庫的來源。

選取 [訂用帳戶] 和 [資源群組] 之後,伺服器名稱的下拉式清單會顯示該資源群組跨區域下的單一伺服器。 選取要從中移轉資料庫的來源。 您可以將資料庫從單一伺服器遷移至相同區域中的目標彈性伺服器。 跨區域移轉僅針對印度、中國和阿聯酋伺服器啟用。

選擇單一伺服器來源之後,系統會自動填入 [位置]、[PostgreSQL 版本] 和 [伺服器管理員登入名稱] 方塊。 伺服器管理員登入名稱是用來建立單一伺服器的管理員用戶名稱。 在 [密碼] 方塊中,輸入該管理員使用者的密碼。 移轉服務會將單一伺服器資料庫移轉為系統管理員使用者。

填寫所有欄位之後,請選取來源連結 連線。 這會驗證輸入的來源伺服器詳細數據是否正確,而且來源伺服器可連線。

源資料庫伺服器詳細數據的螢幕快照。

選取 [下一步:選取移轉目標] 按鈕以繼續。

目標索引標籤

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

目標資料庫伺服器詳細數據的螢幕快照。

針對 [伺服器管理員登入名稱],索引標籤會顯示在建立彈性伺服器目標期間所使用的系統管理員用戶名稱。 輸入管理使用者的對應密碼。 填寫密碼之後,請選取目標連結 連線。 這會驗證輸入的目標伺服器詳細資料是否正確,以及是否可連線至目標伺服器。

選取 [ 下一步] 按鈕,以選取要移轉的資料庫。

選取 [資料庫] 以進行移轉索引標籤

在此索引標籤下,單一伺服器內有使用者資料庫的清單。 您可以在單一移轉嘗試中,選取並移轉最多八個資料庫。 如果有八個以上的使用者資料庫,則會對下一組資料庫重複來源和目標伺服器之間的移轉流程。 根據預設,所選資料庫會覆寫目標上具有相同名稱的資料庫。

要移轉的資料庫螢幕快照。

選取 [ 下一步] 按鈕以檢閱詳細數據。

摘要

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

檢閱移轉詳細數據的螢幕快照。

監視移轉入口網站

選取 [開始] 按鈕之後,會在幾秒鐘內顯示通知,指出驗證或移轉建立成功。 系統會將您自動重新導向至 彈性伺服器的 [移 轉] 頁面。 此處有最近所建立驗證或移轉的新項目。

最近建立的移轉詳細數據的螢幕快照。

顯示移轉的方格具有這些資料行:名稱狀態移轉類型移轉模式來源伺服器來源伺服器類型資料庫開始時間持續時間。 項目會以開始時間的遞減順序顯示,最上方為最近的項目。

您可以使用 [重新整理] 按鈕來重新整理驗證或移轉的狀態。 您也可以在方格中選取移轉名稱,以查看相關聯的詳細資料。

建立驗證或移轉時,它會移至 InProgress 狀態和 PerformingPreRequisiteSteps 子狀態。 工作流程需要 2-3 分鐘的時間,才能設定移轉基礎結構和網路連線。

讓我們看看如何監視每個 移轉選項的移轉。

Validate

PerformingPreRequisiteSteps 子狀態完成之後,驗證會移至 Validation in Progress 的子狀態,並將在來源和目標伺服器上完成檢查以評估移轉的整備程度。

如果所有驗證都處於 SucceededWarning 狀態,驗證就會移至 Succeeded 狀態。

驗證方格的螢幕快照。

驗證方格具有

  • 實例 的驗證詳細數據,以及 資料庫 區段的驗證詳細數據,代表用來檢查移轉整備程度的驗證規則。
  • 驗證狀態:代表每個規則的結果,而且會是三個值中的任何一個
    • 成功:如果沒有找到錯誤。
    • 失敗:如果有驗證錯誤。
    • 警告:如果有驗證錯誤。
  • 持續時間:驗證作業所花費的時間。
  • 開始和結束時間:驗證作業的開始和結束時間,以國際標準時間 (UTC) 表示。

如果驗證發生任何錯誤,「驗證狀態」就會移至 Failed 狀態。 選取 [驗證名稱] 或 [資料庫名稱驗證失敗],而展開窗格會提供詳細數據和更正動作,以避免發生此錯誤。

驗證方格的螢幕快照,其狀態為失敗。

移轉

完成 PerformingPreRequisiteSteps 基底之後,當複製/複製資料庫時,移轉會移至移轉數據的基底。 移轉完成的時間取決於您要移轉的資料庫大小和形狀。 如果數據大多平均分散到所有數據表,則移轉會很快速。 扭曲的資料表大小需要相對較長的時間。

當您在移轉中選取任何資料庫時,就會出現展開窗格。 除了資料庫移轉狀態之外,它具有所有數據表計數 - 已複製、排入佇列、複製和錯誤。

包含所有資料庫詳細數據的移轉方格螢幕快照。

當移轉數據狀態成功完成時,移轉會移至 [成功] 狀態。 如果 [移轉資料] 狀態發生問題,則移轉會進入 [已失敗] 狀態。

移轉結果的螢幕快照。

移轉移至 成功 狀態之後,架構和數據會從單一伺服器移轉至彈性伺服器目標完成。 您可以使用頁面上的 [重新整理] 按鈕來確認為相同。

已完成移轉的螢幕快照。

驗證和移轉

在此選項中,移轉開始之前會先執行驗證。 完成 PerformingPreRequisiteSteps 子ate 之後,工作流程會移至 [進行中驗證] 的子州。

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

一旦作業完成,您就可以看到驗證和移轉的結果。

顯示詳細數據頁面中 [驗證] 索引標籤的螢幕快照。

使用入口網站取消移轉

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

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

移轉後

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

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

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

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

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

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

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

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

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