本文會引導您以線上模式將 PostgreSQL 執行個體從內部部署或 Azure 虛擬機器 (VM) 移轉至適用於 PostgreSQL 的 Azure 資料庫。
適用於 PostgreSQL 的 Azure 資料庫中的移轉服務是已整合到 Azure 入口網站和 Azure CLI 中的完全受控服務。 它可簡化您移轉至適用於 PostgreSQL 的 Azure 資料庫彈性伺服器。
- 先決條件
- 執行移轉。
- 監控遷移
- 啟動切換
- 完成後檢查移轉
先決條件
若要開始移轉,您需要下列先決條件:
使用 適用於 PostgreSQL 的 Azure 資料庫 移轉服務開始移轉之前,請務必滿足下列必要條件,專為在線移轉案例所設計。
驗證來源版本
來源 PostgreSQL 伺服器版本必須是 9.5 或更新版本。
如果來源 PostgreSQL 版本小於 9.5,請在開始移轉之前將其升級至 9.5 或更高版本。
備註
適用於 PostgreSQL 的 Azure 資料庫中的移轉服務支援使用來源 Google AlloyDB for PostgreSQL 的 IP 位址進行連線。 不支援格式 myproject:myregion:myinstance 。
安裝 test_decoding - 來源設定
- test_decoding 會透過邏輯解碼機制接收 WAL,並將其解碼為所執行作業的文字表示法。
- 在 Google AlloyDB for PostgreSQL 中,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 AlloyDB PostgreSQL 執行個體,選取執行個體名稱以開啟其詳細資訊頁面,選取 編輯 按鈕,然後在 旗標 區段中,修改下列旗標:
- 設定旗標
alloydb.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 AlloyDB 伺服器移轉至適用於 PostgreSQL 的 Azure 資料庫。 Azure 入口網站可讓您執行各種工作,包括資料庫移轉。 透過遵循本教學課程中概述的步驟,您可以將資料庫無縫傳輸到 Azure,並利用其強大的功能和可擴展性。
設定移轉工作
移轉服務在 Azure 入口網站上提供簡單的精靈導向使用體驗。
使用 Azure 入口網站:
選取適用於 PostgreSQL 的 Azure 彈性伺服器資料庫。
在資源功能表中,選取 [移轉]。
選取 [建立] 以瀏覽精靈型索引標籤系列,執行從內部部署或 Azure VM 移轉至彈性伺服器。
備註
第一次使用移轉服務時、會出現空白網格、並提示您開始第一次移轉。
如果已建立目標為彈性伺服器的移轉,方格中現在會包含所嘗試之移轉的相關資訊。
設定
您必須提供與移轉相關的多個詳細資料,例如移轉名稱、來源伺服器類型、選項和模式。
移轉名稱 是唯一識別碼,用於辨識每個移轉到此彈性伺服器目標的操作。 此欄位僅接受英數字元,且不接受連字號 (-) 以外的任何特殊字元。 名稱不能以連字號開頭,而且對於目標伺服器來說應該是唯一的。 至相同彈性伺服器目標的兩個移轉不能具有相同的名稱。
來源伺服器類型 - 根據您的 PostgreSQL 來源,您可以選取 [Azure 虛擬機器 ] 或 [內部部署伺服器]。
移轉選項 - 可讓您在觸發移轉之前執行驗證。 您可以選擇下列任一選項:
- 驗證 - 檢查您的伺服器和資料庫是否準備好移轉至目標。
- 驗證和移轉 — 在觸發移轉之前執行驗證。 如果沒有驗證失敗,則會啟動移轉。
選擇 驗證 或 驗證並移轉 選項,始終是在執行移轉之前進行移轉前驗證的良好做法。
若想深入瞭解移轉前驗證,請訪問 premigration。
- 移轉模式可讓您挑選移轉的模式。 預設選項為 [離線]。 在此情況下,我們會將其變更為 [線上]。
選取 [下一步:執行階段伺服器]。
執行階段伺服器
移轉執行階段伺服器是適用於 PostgreSQL 的 Azure 資料庫中移轉服務內的特殊功能,旨在在移轉期間充當中繼伺服器。 這是個別的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體,不是目標伺服器,但可用來協助從只能透過私人網路存取的來源環境移轉資料庫。
如需執行階段伺服器的詳細資訊,請造訪 移轉執行階段伺服器。
來源伺服器
「來源伺服器」標籤會提示您提供與「設定」標籤中選取的來源相關的詳細資料,該來源是資料庫的來源。
- 伺服器名稱 - 提供主機名稱或來源 PostgreSQL 伺服器的 IP 位址。
- Port - 來源伺服器的連接埠號碼。
- 管理員登入 - 來源 PostgreSQL 伺服器的管理員使用者名稱。
- 密碼 - 用於連線至來源 PostgreSQL 伺服器的管理員登入密碼。
-
SSL 模式 - 支援的值為
preferred和required。 當來源 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.com、198.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 分鐘來設定移轉基礎結構並檢查網路連線。
顯示移轉的方格具有下列欄: 名稱、 狀態、 移轉模式、 移轉類型、 來源伺服器、 來源伺服器類型、 資料庫、 持續時間和 開始時間。 項目按 開始時間 降序排列,最新的項目位於頂部。 您可以使用工具列中的 [重新整理 ] 按鈕來重新整理驗證或移轉執行的狀態。
移轉詳細資料
請選取方格中的移轉名稱,以查看相關聯的詳細資料。
請記住,在先前的步驟中,當您建立此移轉時,已將移轉選項設定為 驗證並移轉。 在此案例中,會先執行驗證,然後再開始移轉。 完成 執行必要條件步驟 子狀態後,工作流程會進入 驗證進行中 的子狀態。
如果驗證有錯誤,移轉會進入 失敗 狀態。
如果驗證完成且沒有錯誤,則移轉會開始,且工作流程會移至 移轉資料的子狀態。
驗證詳細資料可在執行個體和資料庫層級取得。
-
例如驗證詳細資料
- 包含與連線檢查、來源版本 (即 PostgreSQL 版本 >= 9.5) 和伺服器參數檢查相關的驗證,是否在適用於 PostgreSQL 的 Azure 資料庫彈性伺服器的伺服器參數中啟用延伸模組。
-
資料庫的驗證和移轉詳細資料
- 其包含與適用於 PostgreSQL 的 Azure 資料庫彈性伺服器中延伸模組和定序支援相關的個別資料庫驗證。
您可以在移轉詳細資料頁面下看到驗證 狀態 和 移轉狀態 。
一些可能的遷移狀態:
移轉狀態
| 地位 | Description |
|---|---|
| 進行中 | 移轉基礎結構設定正在進行中,或實際資料移轉正在進行中。 |
| 已取消 | 移轉已取消或刪除。 |
| 失敗 | 移轉失敗。 |
| 驗證失敗 | 驗證失敗。 |
| 成功 | 移轉成功且已完成。 |
| 等待使用者動作 | 等候使用者動作以執行割接。 |
移轉詳細資料
| 子狀態 | Description |
|---|---|
| 執行必要步驟 | 資料移轉的基礎結構設定正在進行中。 |
| 驗證進行中 | 驗證正在進行中。 |
| 刪除目標上的資料庫 | 刪除目標伺服器上已存在的資料庫。 |
| 移轉資料 | 資料移轉正在進行中。 |
| 完成移轉 | 遷移正處於完成的最後階段。 |
| 已完成 | 遷移已完成。 |
| 失敗 | 移轉失敗。 |
驗證子狀態
| 子狀態 | Description |
|---|---|
| 失敗 | 驗證失敗。 |
| 成功 | 驗證成功。 |
| 警告 | 驗證處於警告狀態。 |
啟動切換
您可以使用 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 分鐘內的累積變更情況。 因此,建議在觸發切換之前將延遲降至零或接近零。
- 當
Succeeded子狀態或切換(在線上移轉中)成功完成時,移轉會移至Migrating data狀態。 如果子狀態發生Migrating data問題,移轉會移至狀態Failed。
完成後檢查移轉
完成資料庫之後,您需要手動驗證來源與目標之間的資料,並驗證目標資料庫中的所有物件是否已成功建立。
移轉之後,您可以執行下列工作:
驗證彈性伺服器上的資料,並確保它是來源執行個體的精確副本。
驗證後,視需要在彈性伺服器上啟用高可用性選項。
變更彈性伺服器的 SKU 以符合應用程式需求。 此變更需要重新啟動資料庫伺服器。
如果您將任何伺服器參數從來源執行個體中的預設值變更,請在彈性伺服器中複製這些伺服器參數值。
將其他伺服器設定 (例如標籤、警示和防火牆規則 (如果適用的話)) 從來源執行個體複製到彈性伺服器。
對應用程式進行變更,以將連接字串指向彈性伺服器。
密切監視資料庫效能,以查看是否需要效能調整。