教學課程:使用移轉服務從適用於 PostgreSQL 的 Google Cloud SQL 離線移轉至適用於 PostgreSQL 的 Azure 資料庫
本文探討如何將 PostgreSQL 資料庫從適用於 PostgreSQL 的 Google Cloud SQL 離線移轉至適用於 PostgreSQL 的 Azure 資料庫。
適用於 PostgreSQL 的 Azure 資料庫中的移轉服務是已整合到 Azure 入口網站和 Azure CLI 中的完全受控服務。 其設計目的是要簡化適用於 PostgreSQL 的 Azure 資料庫伺服器的移轉旅程圖。
- 必要條件
- 執行移轉。
- 監視移轉
- 完成時檢查移轉
必要條件
若要完成移轉,您需要下列必要條件:
使用適用於 PostgreSQL 的 Azure 資料庫移轉服務開始移轉之前,請務必滿足下列必要條件,特別針對離線移轉案例所設計。
驗證來源版本
來源 PostgreSQL 伺服器版本必須是 9.5 或更新版本。
如果來源 PostgreSQL 版本小於 9.5,請在開始移轉之前將其升級至 9.5 或更高版本。
注意
適用於 PostgreSQL 的 Azure 資料庫中的移轉服務支援使用來源適用於 PostgreSQL 的 Google Cloud SQL 的 IP 位址的連線。 不支援格式 myproject:myregion:myinstance
。
進行目標設定
開始移轉之前,您必須在 Azure 中設定適用於 PostgreSQL 的 Azure 資料庫。
為適用於 PostgreSQL 的 Azure 資料庫選擇的 SKU 應與來源資料庫的規格對應,以確保相容性和適當的效能。
進行網路設定
網路設定對於移轉服務正常運作至關重要。 請確定來源 PostgreSQL 伺服器可以與目標適用於 PostgreSQL 的 Azure 資料庫伺服器通訊。 下列網路設定對於成功移轉而言非常重要。
如需網路設定的相關資訊,請參閱移轉服務的網路指南。
啟用延伸模組
若要確保使用 適用於 PostgreSQL 的 Azure 資料庫 中的移轉服務成功移轉,您可能需要驗證來源 PostgreSQL 實例的延伸模組。 延伸模組提供應用程式可能需要的功能和功能。 在起始移轉程式之前,請務必確認來源 PostgreSQL 實例上的延伸模組。
在 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的目標實例中,啟用來源 PostgreSQL 實例中所識別的支持擴充功能。
如需詳細資訊,請參閱 適用於 PostgreSQL 的 Azure 資料庫 中的延伸模組。
注意
當您對 參數進行任何變更 shared_preload_libraries
時,需要重新啟動。
檢查伺服器參數
這些參數不會自動移轉至目標環境,必須手動設定。
藉由存取 Azure 入口網站中的 [伺服器參數] 區段,並據以手動更新參數值,讓來源 PostgreSQL 資料庫與適用於 PostgreSQL 的 Azure 資料庫有相符的伺服器參數值。
儲存參數變更,並視需要重新啟動適用於 PostgreSQL 的 Azure 資料庫以套用新的設定。
檢查使用者和角色
在移轉至適用於 PostgreSQL 的 Azure 資料庫時,務必要分開解決使用者和角色的移轉,因為這些項目的移轉需要您手動介入:
手動移轉使用者和角色:使用者及其相關聯的角色必須以手動方式移轉至適用於 PostgreSQL 的 Azure 資料庫。 為了能夠進行此程序,您可以使用
pg_dumpall
公用程式搭配--globals-only
旗標來匯出全域物件,例如角色和使用者帳戶。 請執行下列命令,並將<<username>>
取代為實際的使用者名稱,並將<<filename>>
取代為所需的輸出檔案名稱:pg_dumpall --globals-only -U <<username>> -f <<filename>>.sql
超級使用者角色的限制:適用於 PostgreSQL 的 Azure 資料庫不支援超級使用者角色。 因此,具有超級使用者權限的使用者必須先移除這些權限,才能進行移轉。 請務必據此調整權限和角色。
藉由遵循這些步驟,您可以確保使用者帳戶和角色正確移轉至適用於 PostgreSQL 的 Azure 資料庫,而不會遇到與超級使用者限制相關的問題。
在目標中停用高可用性 (可靠性) 和讀取複本
請務必要在目標環境中停用高可用性 (可靠性)和讀取複本。 請在移轉完成後,才啟用這些功能。
藉由遵循這些指導方針,可協助確保移轉程序順暢進行,而不會因為 HA 和讀取複本而增添變數。 移轉完成且資料庫穩定之後,便可以繼續啟用這些功能,以增強 Azure 中資料庫環境的可用性和可擴縮性。
執行移轉。
您可以使用 Azure 入口網站或 Azure CLI 來進行移轉。
Azure 入口網站提供簡單且直覺式的精靈體驗,可引導您進行移轉。 遵循本教學課程中所述的步驟,您可以將資料庫順暢地傳輸到適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器,並利用其強大的功能和可擴縮性。
若要使用 Azure 入口網站進行移轉,請先設定移轉工作、連線到來源和目標,然後執行移轉。
設定移轉工作
移轉服務會在 Azure 入口網站上提供簡單的精靈型體驗。
開啟 Web 瀏覽器,然後移至入口網站。 輸入您的認證來登入。 預設檢視是您的服務儀表板。
移至適用於 PostgreSQL 的 Azure 資料庫彈性伺服器。
在彈性伺服器 [概觀] 索引標籤的左側功能表上,向下捲動至 [移轉] 並加以選取。
選取 [建立] 按鈕,從適用於 PostgreSQL 的 Google Cloud SQL 移轉至彈性伺服器。
注意
第一次使用移轉服務時會出現空白方格,並提示您開始進行第一次移轉。
如果已建立目標為彈性伺服器的移轉,方格中現在會包含所嘗試之移轉的相關資訊。
選取 [建立] 按鈕,以瀏覽一系列用來執行移轉的精靈型索引標籤。
設定
使用者必須提供與移轉相關的多個詳細資料,例如移轉名稱、來源伺服器類型、選項和模式。
移轉名稱是至此彈性伺服器目標的每個移轉的唯一識別碼。 此欄位只接受英數字元,不接受任何特殊字元,但連字號 (-) 除外。 名稱的開頭不能是連字號,而且對於目標伺服器而言應該是唯一的。 對相同彈性伺服器目標的任兩個移轉不能有相同的名稱。
來源伺服器類型 - 根據您的 PostgreSQL 來源,您可以選取適用於 PostgreSQL 的 Google Cloud SQL。
移轉選項 - 可讓您在觸發移轉前執行驗證。 您可以挑選下列任何選項:
- 驗證:檢查您的伺服器和資料庫整備程度,以移轉至目標。
- 移轉:略過驗證並開始移轉。
- 驗證並移轉 - 在觸發移轉之前執行驗證。 如果沒有驗證失敗,便會觸發移轉。
若要在執行移轉前先執行預先移轉驗證,選擇 [驗證] 或 [驗證並移轉] 選項是很好的做法。
若要深入了解預先移轉驗證,請瀏覽預先移轉。
- 移轉模式可讓您挑選移轉的模式。 預設選項為 [離線]。
選取 [下一步:連線至來源] 按鈕。
選取執行階段伺服器
移轉執行階段伺服器是移轉服務內的特製化功能,其設計目的是在移轉期間作為中繼伺服器。 它是個別的適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器執行個體,不是目標伺服器,但用來協助從只能透過私人網路存取的來源環境移轉資料庫。
如需執行階段伺服器的詳細資訊,請造訪移轉執行階段伺服器。
連線至來源
[連線至來源] 索引標籤會提示您提供與 [設定] 索引標籤中的所選來源相關的詳細資料,這是資料庫的來源。
- 伺服器名稱 - 提供來源 PostgreSQL 執行個體的主機名稱或 IP 位址
- 連接埠 - 來源伺服器的連接埠號碼
- 伺服器管理員登入名稱 - 來源 PostgreSQL 伺服器的使用者名稱
- 密碼 - 來源 PostgreSQL 伺服器的密碼
- SSL 模式 - 支援的值有偏好和必要。 當來源 PostgreSQL 伺服器上的 SSL 為 OFF 時,使用 SSLMODE=prefer。 如果來源伺服器上的 SSL 是 ON,則使用 SSLMODE=require。 您可以在 postgresql.conf 檔案中確定 SSL 值。
- 測試連線—執行目標與來源之間的連線能力測試。 連線成功後,使用者可以繼續進行下一個步驟;其必須識別目標與來源之間的網路問題,並驗證來源的使用者名稱/密碼。 建立測試連線需要幾分鐘的時間。
測試連線成功後,請選取 [下一步:選取移轉目標] 按鈕。
選取移轉目標
[選取移轉目標] 索引標籤會顯示彈性伺服器目標的中繼資料,例如訂用帳戶名稱、資源群組、伺服器名稱、位置和 PostgreSQL 版本。
- 管理使用者名稱 - 目標 PostgreSQL 伺服器的管理使用者名稱
- 密碼 - 目標 PostgreSQL 伺服器的密碼
- 自定義 FQDN/IP (選擇性):自定義 FQDN/IP 欄位是選擇性的,而且當目標位於自訂 DNS 伺服器後方或具有自定義 DNS 命名空間時,可以使用它,使其只能透過特定的 FQDN 或 IP 位址存取。 例如,如果自定義 DNS 伺服器包含 DNS 區域
postgres.database.azure.com
或將此區域的查詢轉送至168.63.129.16
,則這可能包含 、198.1.0.2
或 PostgreSQL FQDN 之類的flexibleserver.postgres.database.azure.com
專案flexibleserver.example.com
,其中 FQDN 會在 Azure 公用或私人 DNS 區域中解析。 - 測試連線 - 執行目標與來源之間的連線能力測試。 連線成功後,使用者可以繼續進行下一個步驟。 否則,我們必須識別目標與來源之間的網路問題,並確認目標的使用者名稱/密碼。 測試連線會花幾分鐘的時間在目標與來源之間建立連線
測試連線成功後,請選取 [下一步:選取要移轉的資料庫]
選取要移轉的資料庫
在 [選取要移轉的資料庫] 索引標籤下,您可以選擇要從來源 PostgreSQL 伺服器移轉的使用者資料庫清單。
選取資料庫之後,請選取 [下一步:摘要]
摘要
[摘要] 索引標籤會摘要說明用於建立驗證或移轉的所有來源和目標詳細資料。 檢閱詳細資料,然後選取 [開始驗證和移轉] 按鈕。
監視移轉
選取 [開始驗證和移轉] 按鈕後,系統會在幾秒鐘內顯示通知,指出驗證或移轉建立已成功。 系統會將您重新導向至彈性伺服器的 [移轉] 頁面執行個體。 該項目會處於 InProgress 狀態,以及 PerformingPreRequisiteSteps 子狀態。 此工作流程會花 2 到 3 分鐘的時間來設定移轉基礎結構和檢查網路連線。
顯示移轉的方格具有以下資料行:名稱、狀態、移轉模式、移轉類型、來源伺服器、來源伺服器類型、資料庫、持續時間和開始時間。 這些項目會以開始時間的遞減順序顯示,最上方為最近的項目。 您可以使用 [重新整理] 按鈕來重新整理驗證或移轉的執行狀態。
移轉詳細資料
請選取方格中的移轉名稱,以查看相關聯的詳細資料。
在 [設定] 索引標籤中,我們選取了 [驗證並移轉] 移轉選項。 在此案例中,會先執行驗證再開始移轉。 PerformingPreRequisiteSteps 子狀態完成之後,工作流程會移至 Validation in Progress 的子狀態。
如果驗證發生錯誤,移轉會進入 Failed 狀態。
如果驗證完成且沒有任何錯誤,則會開始移轉,且工作流程會移至 Migrating Data 的子狀態。
執行個體層級和資料庫層級有提供驗證詳細資料。
執行個體層級的驗證
- 包含與連線能力檢查、來源版本 (亦即,PostgreSQL 版本 >= 9.5)、伺服器參數檢查 (是否已在適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的伺服器參數中啟用延伸模組) 相關的驗證。
資料庫層級的驗證
- 其包含與適用於 PostgreSQL 的 Azure 資料庫彈性伺服器中延伸模組和定序支援相關的個別資料庫驗證。
您可以在 [移轉詳細資料] 頁面底下看到驗證和移轉狀態。
某些可能的移轉狀態:
移轉狀態
State | 描述 |
---|---|
InProgress | 正在設定移轉基礎結構,或正在移轉實際的資料。 |
已取消 | 已取消或已刪除移轉。 |
失敗 | 移轉失敗。 |
驗證失敗 | 驗證失敗。 |
已成功 | 移轉成功且已完成。 |
WaitingForUserAction | 僅適用於線上移轉。 等候使用者動作以執行完全移轉。 |
移轉子狀態
子狀態 | 描述 |
---|---|
PerformingPreRequisiteSteps | 正在設定用於資料移轉的基礎結構。 |
驗證進行中 | 驗證正在進行中。 |
MigratingData | 資料移轉正在進行中。 |
CompletingMigration | 移轉處於完成的最終階段。 |
已完成 | 已完成移轉。 |
失敗 | 移轉失敗。 |
驗證子狀態
子狀態 | 描述 |
---|---|
失敗 | 驗證失敗。 |
已成功 | 驗證成功。 |
警告 | 驗證處於警告狀態。 |
取消移轉
您可以取消任何進行中的驗證或移轉。 工作流程必須處於 InProgress 狀態,才能取消。 您無法取消處於 Succeeded 或 Failed 狀態的移轉。
- 取消移轉會停止目標伺服器上的進一步移轉活動,並移至 Canceled 狀態。 取消動作會回復移轉服務在目標伺服器上所做的所有變更。
完成時檢查移轉
資料庫完成後,必須手動驗證來源與目標之間的資料,並確認目標資料庫中的所有物件都已成功建立。
移轉之後,便可以執行下列工作:
- 確認彈性伺服器上的資料,並確定其是與來源執行個體完全相同的複本。
- 驗證後,視需要在彈性伺服器上啟用高可用性選項。
- 變更彈性伺服器的 SKU,以符合應用程式需求。 這項變更需要重新啟動資料庫伺服器。
- 如果您有在來源執行個體中變更任何伺服器參數的預設值,請在彈性伺服器中複製這些伺服器參數值。
- 將其他伺服器設定 (例如標籤、警示和防火牆規則 (如果適用的話)) 從來源執行個體複製到彈性伺服器。
- 對應用程式進行變更,以將連接字串指向彈性伺服器。
- 密切監視資料庫效能,確認資料庫是否需要微調效能。