共用方式為


使用移轉服務,從適用於 PostgreSQL 的 Google Cloud SQL 伺服器線上移轉至 Azure Database for PostgreSQL

本文會引導您以線上模式將 PostgreSQL 執行個體從內部部署或 Azure 虛擬機器 (VM) 移轉至適用於 PostgreSQL 的 Azure 資料庫。

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

  • 必要條件
  • 執行移轉。
  • 監控移轉
  • 啟動切換
  • 完成時檢查移轉

必要條件

若要開始移轉,您需要下列先決條件:

使用 適用於 PostgreSQL 的 Azure 資料庫 移轉服務開始移轉之前,請務必滿足下列必要條件,專為在線移轉案例所設計。

驗證來源版本

來源 PostgreSQL 伺服器版本必須是 9.5 或更新版本。

如果來源 PostgreSQL 版本小於 9.5,請在開始移轉之前將其升級至 9.5 或更高版本。

附註

Azure 資料庫中的適用於 PostgreSQL 的移轉服務支援使用 IP 位址來連線至來源 Google Cloud SQL for PostgreSQL。 不支援格式 myproject:myregion:myinstance

安裝 test_decoding - 來源設定

  • test_decoding 會透過邏輯解碼機制接收 WAL,並將其解碼為所執行作業的文字表示法。
  • 在適用於 PostgreSQL 的 Google Cloud SQL 中,test_decoding 外掛程式已預安裝且準備好進行邏輯複寫。 這可讓您輕鬆地設定邏輯複製槽並串流 WAL 變更,以協助使用案例,例如變更資料擷取 (CDC) 或複製至外部系統。
  • 如需測試解碼外掛程式的詳細資訊,請參閱 PostgreSQL 文件

進行目標設定

  • 移轉之前,必須先建立適用於 PostgreSQL 的 Azure 資料庫 – 彈性伺服器。
  • 針對適用於 PostgreSQL 的 Azure 資料庫 – 彈性伺服器佈建的 SKU 應與來源相符。
  • 若要建立新的適用於 PostgreSQL 的 Azure 資料庫,請造訪 建立適用於 PostgreSQL 的 Azure 資料庫彈性伺服器

啟用 CDC 作為來源

  • test_decoding 邏輯解碼外掛程式會從來源擷取變更的記錄。
  • 若要確保移轉使用者具有必要的複寫權限,請執行下列 SQL 命令:
ALTER USER <user> WITH REPLICATION;
  • 移至 Google Cloud Console 中的 Google Cloud SQL PostgreSQL 實例,選取實例名稱以開啟其詳細數據頁面、選取 [編輯] 按鈕,然後在 [旗標] 區段中修改下列旗標:

    • 設定旗標 cloudsql.logical_decoding = on
    • 將旗標 max_replication_slots 設定為大於一的值;此值應大於針對移轉選取的資料庫數目。
    • 將旗標 max_wal_senders 設定為大於一的值。 它應該至少與 max_replication_slots 相同,加上執行個體上已使用的寄件人數目。
    • 旗標 wal_sender_timeout 會中斷超過指定毫秒數的非活動複寫連線。 將值設定為 0 (零) 將停用逾時機制且是移轉的有效設定。
  • 在目標彈性伺服器中,若要防止在線移轉用盡儲存體來儲存記錄,請確定您有足夠的資料表空間使用佈建的受控磁碟。 若要達成此目的,請在移轉期間停用伺服器參數 azure.enable_temp_tablespaces_on_local_ssd,並在移轉後還原至原始狀態。

進行網路設定

網路設定對於移轉服務正常運作至關重要。 請確定來源 PostgreSQL 伺服器可以與目標適用於 PostgreSQL 的 Azure 資料庫伺服器通訊。 下列網路設定對於成功移轉而言非常重要。

如需網路設定的相關資訊,請參閱移轉服務的網路指南

啟用延伸模組

若要確保 適用於 PostgreSQL 的 Azure 資料庫 中使用移轉服務成功移轉,您可能需要驗證來源 PostgreSQL 實例的延伸模組。 延伸模組提供應用程式可能需要的功能和功能。 在起始移轉程式之前,請務必確認來源 PostgreSQL 實例上的延伸模組。

在適用於 PostgreSQL 的 Azure 資料庫彈性伺服器的目標實例中,啟用來源 PostgreSQL 實例中所識別的支持擴充功能。

如需詳細資訊,請參閱 擴充功能和模組

檢查伺服器參數

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

  • 藉由存取 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 資料庫從適用於 PostgreSQL 的 Google Cloud SQL 伺服器移轉至適用於 PostgreSQL 的 Azure 資料庫。 Azure 入口網站可讓您執行各種工作,包括資料庫移轉。 按照本教學課程中概述的步驟,您可以將資料庫無縫傳輸到 Azure,並利用其強大的功能和可擴展性。

設定移轉工作

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

使用 Azure 入口網站

  1. 選取適用於 PostgreSQL 的 Azure 彈性伺服器資料庫。

  2. 在資源功能表中,選取 [移轉]。

    移轉頁面的螢幕擷取畫面。

  3. 選取 [建立] 以瀏覽精靈型索引標籤系列,執行從內部部署或 Azure VM 移轉至彈性伺服器。

    附註

    第一次使用移轉服務時、會出現空白網格、並提示您開始第一次移轉。

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

    在移轉頁面中選取建立後出現的 [設定] 索引標籤的螢幕擷取畫面。

設定

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

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

  • 來源伺服器類型 - 根據您的 PostgreSQL 來源,您可以選取 [Azure 虛擬機器 ] 或 [內部部署伺服器]。

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

    • 驗證:檢查您的伺服器和資料庫整備程度,以移轉至目標。
    • 驗證和移轉 — 在觸發移轉之前執行驗證。 如果沒有驗證失敗,則會啟動移轉。

選擇 驗證驗證並移轉 選項,始終是在執行移轉之前進行移轉前驗證的良好做法。

若想深入瞭解移轉前驗證,請訪問 premigration

  • 移轉模式可讓您挑選移轉的模式。 預設選項為 [離線]。 在此情況下,我們會將其變更為 [線上]。

選取 [下一步:執行階段伺服器]。

提供必要詳細資訊後的「設定」標籤的螢幕截圖。

執行階段伺服器

移轉執行階段伺服器是適用於 PostgreSQL 的 Azure 資料庫中移轉服務內的特殊功能,旨在在移轉期間充當中繼伺服器。 這是個別的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體,不是目標伺服器,但可用來協助從只能透過私人網路存取的來源環境移轉資料庫。

執行階段伺服器標籤頁的螢幕截圖。

如需執行階段伺服器的詳細資訊,請造訪 移轉執行階段伺服器

來源伺服器

「來源伺服器」標籤會提示您提供與「設定」標籤中選取的來源相關的詳細資料,該來源是資料庫的來源。

  • 伺服器名稱 - 提供主機名稱或來源 PostgreSQL 伺服器的 IP 位址。
  • Port - 來源伺服器的連接埠號碼。
  • 管理員登入 - 來源 PostgreSQL 伺服器的管理員使用者名稱。
  • 密碼 - 用於連線至來源 PostgreSQL 伺服器的管理員登入密碼。
  • SSL 模式 - 支援的值為 preferredrequired。 當來源 PostgreSQL 伺服器的 SSL 為 OFF時,請使用 prefer。 如果來源伺服器的 SSL 是 ON,請使用 require。 SSL 值可以在來源伺服器的 postgresql.conf 檔案中確定。
  • 測試連線 — 執行目標與來源之間的連線測試。 連線成功後,您可以繼續至下一個分頁。此測試旨在識別可能存在於來源伺服器和目標伺服器之間的任何連線問題,包括使用所提供的認證資訊進行驗證。 建立測試連線需要幾秒鐘的時間。

測試連線成功之後,請選取 [下一步:目標伺服器]。

來源伺服器遷移標籤的螢幕擷取畫面。

目標伺服器

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

  • 管理員登入 - 目標 PostgreSQL 伺服器的管理員使用者名稱。
  • 密碼 - 用於連線至目標 PostgreSQL 伺服器的管理員登入密碼。
  • 自訂 FQDN 或 IP 位址:自訂 FQDN 或 IP 位址欄位是選擇性的,當目標位於自訂 DNS 伺服器後方或具有自訂 DNS 命名空間時,可以使用,使其只能透過特定的 FQDN 或 IP 位址存取。 例如,這可能包括像production-flexible-server.example.com198.1.0.2或 PostgreSQL FQDN 之類的條目,例如production-flexible-server.postgres.database.azure.com,如果自定義 DNS 伺服器包含 DNS 區域postgres.database.azure.com,或者將此區域的查詢轉送至168.63.129.16,那麼 FQDN 將在 Azure 公用或私人 DNS 區域中解析。
  • 測試連線 — 執行來源與目標之間的連線測試。 連線成功後,您可以繼續到下一個選項卡。這項測試旨在識別來源伺服器和目標伺服器之間可能存在的任何連接問題,包括使用提供的憑證進行身份驗證。 建立測試連線需要幾秒鐘的時間。

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

目標伺服器遷移索引標籤的截圖。

要驗證或移轉的資料庫

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

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

要驗證或移轉移轉索引標籤的資料庫螢幕擷取畫面。

摘要

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

摘要移動頁籤的螢幕擷取畫面。

取消驗證或移轉

您可以取消任何進行中的驗證或移轉。 工作流程必須處於 進行 狀態才能取消。 您無法取消處於 [成功][失敗 ] 狀態的驗證或移轉。

取消驗證會停止任何進一步的驗證活動,且驗證會移至 「已取消」 狀態。

取消移轉會停止目標伺服器上的進一步移轉活動,並移至 「已取消」 狀態。 它不會丟棄或撤消目標伺服器上的任何變更。 請務必卸除目標伺服器上涉及已取消移轉的資料庫。

監控移轉

選取 [ 開始驗證和移轉 ] 按鈕之後,幾秒鐘後會出現通知,指出驗證或移轉建立成功。 系統會自動將您重新導向至彈性伺服器的 [移轉 ] 頁面。 條目顯示的狀態進行中。 工作流程需要 2 到 3 分鐘來設定移轉基礎結構並檢查網路連線。

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

顯示移轉的方格具有下列欄: 名稱狀態移轉模式移轉類型來源伺服器來源伺服器類型資料庫持續時間開始時間。 項目按 開始時間 降序排列,最新的項目位於頂部。 您可以使用工具列中的 [重新整理 ] 按鈕來重新整理驗證或移轉執行的狀態。

移轉詳細資料

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

請記住,在先前的步驟中,當您建立此移轉時,已將移轉選項設定為 驗證並移轉。 在此案例中,會先執行驗證,然後再開始移轉。 完成 執行必要條件步驟 子狀態後,工作流程會進入 驗證進行中 的子狀態。

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

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

驗證詳細資料可在執行個體和資料庫層級取得。

  • 例如驗證詳細資料
    • 包含與連線檢查、來源版本 (即 PostgreSQL 版本 >= 9.5) 和伺服器參數檢查相關的驗證,是否在適用於 PostgreSQL 的 Azure 資料庫彈性伺服器的伺服器參數中啟用延伸模組。
  • 資料庫的驗證和移轉詳細資料
    • 其包含與適用於 PostgreSQL 的 Azure 資料庫彈性伺服器中延伸模組和定序支援相關的個別資料庫驗證。

您可以在移轉詳細資料頁面下看到驗證 狀態移轉狀態

顯示驗證和移轉的詳細資料螢幕擷取畫面。

一些可能的遷移狀態:

移轉狀態

地位 描述
處理中 正在設置遷移基礎設施,或者正在進行實際的資料移轉。
已取消 已取消或已刪除移轉。
失敗 移轉失敗。
驗證失敗 驗證失敗。
已成功 移轉成功且已完成。
等待使用者動作 等候使用者動作以執行割接。

移轉詳細資料

子狀態 描述
執行必要步驟 正在設定用於資料移轉的基礎結構。
驗證進行中 驗證正在進行中。
刪除目標上的資料庫 刪除目標伺服器上已存在的資料庫。
移轉資料 資料移轉正在進行中。
完成移轉 移轉處於完成的最終階段。
已完成 已完成移轉。
失敗 移轉失敗。

驗證子狀態

子狀態 描述
失敗 驗證失敗。
已成功 驗證成功。
警告 驗證處於警告狀態。

啟動切換

您可以使用 Azure 入口或 Azure CLI 來切換。

對於 [驗證和移轉] 選項,完成線上移轉需要使用者完成額外的步驟,即觸發切換動作。 複製或克隆基本資料完成後,遷移將進入 Waiting for user action 狀態和 Waiting for cutover trigger 子狀態。 在此狀態下,使用者可以選取該移轉,以從入口網站觸發完全移轉。

在起始完全移轉之前,請務必確保:

  • 對來源的寫入已停止 - latency 值為 0 或接近 0。 可以從如下所示的移轉詳細資料畫面取得 latency 資訊:
  • latency 值減少至 0 或接近 0
  • latency 值指出目標上次與來源同步的時間。 此時可以停止來源的寫入,並可以起始完全移轉。 如果來源有大量流量,建議先停止寫入,讓 latency 接近 0,然後啟動割接。

切換作業會將所有待處理的變更從來源伺服器套用至目標伺服器,並完成移轉。 如果您觸發完全移轉,即使 latency 不是零,複寫仍會停止,直到該時間點為止。 來源上的所有資料,直到切換點為止,都會套用至目標。 如果您在切換點遇到 15 分鐘的延遲,則過去 15 分鐘內對資料所做的所有變更都會套用至目標。

變更所需的時間取決於過去 15 分鐘內的累積變更情況。 因此,建議在觸發切換之前將延遲降至零或接近零。

  • Migrating data子狀態或切換(在線上移轉中)成功完成時,移轉會移至Succeeded狀態。 如果子狀態發生 Migrating data 問題,移轉會移至狀態 Failed

完成時檢查移轉

完成資料庫之後,您需要手動驗證來源與目標之間的資料,並驗證目標資料庫中的所有物件是否已成功建立。

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

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

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

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

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

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

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

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