教學課程:使用移轉服務從 Amazon Aurora PostgreSQL 在線移轉至 適用於 PostgreSQL 的 Azure 資料庫
本文說明如何將 PostgreSQL 資料庫從 Amazon Aurora 遷移至在線 適用於 PostgreSQL 的 Azure 資料庫。
適用於 PostgreSQL 的 Azure 資料庫 中的移轉服務是完全受控的服務,已整合到 Azure 入口網站 和 Azure CLI 中。 其設計目的是簡化移轉 適用於 PostgreSQL 的 Azure 資料庫 旅程。
在本教學課程中,您已:
- 完成必要條件
- 起始移轉
- 監視移轉
- 起始完全移轉
- 確認移轉
必要條件
在 適用於 PostgreSQL 的 Azure 資料庫 中使用移轉服務開始移轉之前,請務必完成下列必要條件。 這些必要條件專為在線移轉案例所設計。
驗證來源版本
來源 PostgreSQL 伺服器版本必須是 9.5 或更新版本。 如果來源 PostgreSQL 版本早於 9.5,請在開始移轉之前,將版本升級至 9.5 或更新版本。
安裝來源設定test_decoding
- test_decoding外掛程式會透過邏輯譯碼機制接收預先寫入記錄 (WAL)。 外掛程式會將 WAL 譯碼為所執行作業的文字表示法。
- 在 Amazon RDS for PostgreSQL 中,test_decoding 外掛程式已預安裝且準備好進行邏輯複寫。 您可以輕鬆地設定邏輯複寫位置和串流 WAL 變更,例如,針對異動數據擷取 (CDC) 或復寫至外部系統。
如需test_decoding外掛程式的詳細資訊,請參閱 PostgreSQL 檔。
設定目標設定
開始移轉之前,您必須在 Azure 中建立 適用於 PostgreSQL 的 Azure 資料庫 實例。 針對 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器布建的 SKU 應該符合來源。
如需詳細資訊,請參閱建立 適用於 PostgreSQL 的 Azure 資料庫 實例。
啟用 CDC 作為來源
test_decoding邏輯譯碼外掛程式會從來源擷取變更的記錄。
若要允許移轉使用者存取複寫許可權,請執行下列命令:
GRANT rds_replication TO <username>;
在來源 PostgreSQL 實例中,藉由建立新的參數群組,修改資料庫叢集參數群組中的下列參數:
- 將
rds.logical_replication
設定為1
。 - 設定
max_replication_slots
為大於1
的值。 此值應該大於您為移轉選取的資料庫數目。 - 設定
max_wal_senders
為大於1
的值。 它應該至少與的值max_replication_slots
相同,加上實例中已使用的寄件人數目。 - 參數會
wal_sender_timeout
結束超過指定毫秒數的非使用中複寫連接。 Amazon Aurora PostgreSQL 實體的預設值為30000 milliseconds (30 seconds)
。 將 值設定為0 (zero)
停用逾時機制,而且是移轉的有效設定。
- 將
在目標彈性伺服器中,若要防止在線移轉用盡記憶體來儲存記錄,請確定您已使用布建的受控磁碟,在數據表空間中有足夠的記憶體。 在移轉期間停用伺服器參數
azure.enable_temp_tablespaces_on_local_ssd
。 在移轉之後,將參數還原至原始狀態。
設定網路設定
網路設定對於讓移轉服務能夠正常運作至關重要。 請確定來源 PostgreSQL 伺服器可以在 適用於 PostgreSQL 的 Azure 資料庫 中與目標伺服器通訊。
如需網路設定的相關信息,請參閱 移轉服務的網路案例。
啟用延伸模組
若要確保使用 適用於 PostgreSQL 的 Azure 資料庫 中的移轉服務成功移轉,您可能需要驗證來源 PostgreSQL 實例的延伸模組。 延伸模組提供應用程式可能需要的功能和功能。 在起始移轉程式之前,請務必確認來源 PostgreSQL 實例上的延伸模組。
在 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的目標實例中,啟用來源 PostgreSQL 實例中所識別的支持擴充功能。
如需詳細資訊,請參閱 適用於 PostgreSQL 的 Azure 資料庫 中的延伸模組。
注意
當您對 參數進行任何變更 shared_preload_libraries
時,需要重新啟動。
檢查伺服器參數
伺服器參數不會自動移轉至目標環境,而且必須手動設定。
比對來源 PostgreSQL 資料庫中的伺服器參數值與 適用於 PostgreSQL 的 Azure 資料庫 的實例。 在 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 資料庫,而不會發生與超級使用者限制相關的問題。
在目標中停用高可用性 (可靠性) 和讀取複本
在起始移轉之前,請務必先停用目標環境中的高可用性(可靠性)和讀取複本。 只有在移轉完成之後,才應該啟用這些功能。
起始移轉
您可以使用 Azure 入口網站或 Azure CLI 來進行移轉。
Azure 入口網站 提供簡單且直覺式的精靈式體驗,以引導您完成移轉。 完成本教學課程中所述的步驟,您就可以順暢地將資料庫傳輸到 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器,並利用其強大的功能和延展性。
若要使用 Azure 入口網站 進行移轉,請先設定移轉工作。 然後,連線到來源和目標,然後起始移轉。
設定移轉工作
若要在 Azure 入口網站 中設定移轉工作:
開啟網頁瀏覽器,然後前往 Azure 入口網站。 輸入您的認證來登入。
移至您的 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器實例。
在服務功能表上,選取 [ 移轉]。
選取 [建立 ] 以從 Amazon Aurora 遷移至彈性伺服器。
第一次使用移轉服務時會出現空白方格,並提示您開始進行第一次移轉。 如果已建立移轉至彈性伺服器目標,方格會包含嘗試移轉的相關信息。
選取 [建立 ] 以逐步執行一系列索引標籤來設定移轉。
設定
輸入或選取下列資訊:
移轉名稱:輸入每個移轉至此彈性伺服器目標的唯一標識符。 您只能在移轉名稱中使用英數位元和連字元 (
-
)。 名稱不能以連字元開頭,而且目標伺服器必須是唯一的。 沒有兩個移轉至相同彈性伺服器目標的相同名稱。來源伺服器類型:選取對應至 PostgreSQL 來源的來源類型,例如雲端式 PostgreSQL 服務、內部部署設定或虛擬機。
移轉選項:針對預先移轉驗證選擇下列其中一個選項:
- 驗證。 檢查您的伺服器和資料庫整備程度,以移轉至目標來源。
- 移轉。 略過驗證並開始移轉。
- 驗證和移轉。 在觸發移轉之前執行驗證。 如果沒有驗證失敗,便會觸發移轉。
最佳做法是選取 [驗證] 或 [驗證] 和 [移轉] 選項以進行預先移轉驗證。
如需詳細資訊,請參閱 預先移轉驗證。
移轉模式:選取移轉的模式。 默認選項為 離線。
選取 [ 下一步:連線到來源]。
選取運行時間伺服器
移轉運行時間伺服器是移轉服務的特製化功能。 運行時間伺服器會在移轉期間做為中繼伺服器。 這是個別的 適用於 PostgreSQL 的 Azure 資料庫 實例 - 彈性伺服器,不是目標伺服器。 運行時間伺服器有助於從只能透過專用網存取的來源環境移轉資料庫。
如需詳細資訊,請參閱 移轉運行時間伺服器。
連線至來源
在 [ 連接到來源] 索引標籤上,輸入或選取資料庫來源的下列資訊:
- 伺服器名稱:輸入來源 PostgreSQL 實例的主機名或 IP 位址。
- 埠:輸入來源伺服器的埠號碼。
- 伺服器管理員登入名稱:輸入來源 PostgreSQL 伺服器的用戶名稱。
- 密碼:輸入來源 PostgreSQL 伺服器的密碼。
- SSL 模式:支援的值為 Prefer 和 Require。 當來源 PostgreSQL 伺服器的安全套接字層 (SSL) 關閉時,請選取 [ 偏好]。 如果來源伺服器上的 SSL 開啟,請選取 [ 需要]。 SSL 值是在 postgresql.conf 檔案中設定。
- 測試連線:起始目標與來源之間的連線測試。 線上成功時,請移至下一個步驟,以識別目標與來源之間的網路問題,並確認來源的使用者名稱和密碼。 建立測試連線需要幾分鐘的時間。
成功測試連線之後,選取 [ 下一步:選取移轉目標]。
選取移轉目標
在 [ 選取移轉目標] 索引標籤上,輸入或選取彈性伺服器目標的下列資訊,以及訂用帳戶、資源群組和伺服器名稱:
- 管理員用戶名稱:目標 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 子ate 之後,工作流程會移至 [進行中的驗證] 子州。
如果驗證發生錯誤,移轉會進入 Failed 狀態。
如果驗證完成且沒有任何錯誤,則移轉會啟動,工作流程會移至移轉數據子集。
您可以在實體層級和資料庫層級檢查驗證詳細資料:
實體層級的驗證:
- 檢查與來源版本連線檢查相關的驗證(
PostgreSQL version >= 9.5
伺服器參數檢查),如果擴充功能是在 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器實例的伺服器參數中啟用。
- 檢查與來源版本連線檢查相關的驗證(
資料庫層級的驗證:
- 檢查 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器中擴充功能和定序支援的個別資料庫驗證。
您可以在 [移轉詳細資料] 窗格上查看移轉和驗證的目前狀態。
下表描述一些可能的移轉狀態和子狀態。
移轉狀態
State | 描述 |
---|---|
InProgress | 正在設定移轉基礎結構,或正在移轉實際的資料。 |
已取消 | 已取消或已刪除移轉。 |
失敗 | 移轉失敗。 |
驗證失敗 | 驗證失敗。 |
已成功 | 移轉成功且已完成。 |
WaitingForUserAction | 僅適用於在線移轉。 等候使用者執行完全移轉。 |
移轉子狀態
子狀態 | 描述 |
---|---|
PerformingPreRequisiteSteps | 正在設定用於資料移轉的基礎結構。 |
驗證進行中 | 驗證正在進行中。 |
MigratingData | 資料移轉正在進行中。 |
CompletingMigration | 移轉處於完成的最終階段。 |
已完成 | 移轉已完成。 |
失敗 | 移轉失敗。 |
驗證子狀態
子狀態 | 描述 |
---|---|
失敗 | 驗證失敗。 |
已成功 | 驗證成功。 |
警告 | 驗證會顯示警告。 |
起始完全移轉
如果 同時出現 [移 轉] 和 [驗證] 和 [移 轉],則完成在線移轉需要起始完全移轉的額外步驟。 完成基底數據的複製和複製之後,移轉會移至 WaitingForUserAction 狀態和 WaitingForCutoverTrigger 子狀態。 在此狀態下,使用者可以選取該移轉,以從入口網站觸發完全移轉。
在起始完全移轉之前,請務必確保:
- 對來源的寫入會停止。
- 值
latency
會減少到 0 或接近 0。
您可以在 [移轉詳細資料] 窗格上取得 latency
值:
latency
值表示目標上次與來源同步的時間。 此時,可以停止寫入來源,並可起始完全移轉。 如果來源伺服器上有大量流量,建議您先停止寫入,以便 latency
接近 0。 然後,起始完全移轉。
完全移轉作業會將來源的所有擱置變更套用至目標,並完成移轉。 如果您觸發完全移轉,即使 有非零值 latency
,複寫也會在該時間點停止。 所有數據都會在來源上,直到完全移轉點套用至目標為止。 例如,如果在完全移轉點延遲為15分鐘,則過去15分鐘內的所有變更數據都會套用至目標。 完成完全移轉的時間取決於這 15 分鐘內發生的變更待處理專案。 因此,建議您在觸發完全移轉之前,延遲會移至零或接近零。
當移轉數據子狀態或完全移轉 (在在線移轉中) 成功完成時,移轉會移至 [成功] 狀態。 如果移轉數據子狀態發生問題,移轉會進入失敗狀態。
確認移轉
當資料庫移轉完成時,請手動驗證來源與目標之間的數據。 確認已成功建立目標資料庫中的所有物件。
移轉之後,您可以完成下列工作:
- 確認彈性伺服器上的數據,並確定它是來源實例的確切複本。
- 驗證之後,請視需要在彈性伺服器上啟用高可用性選項。
- 變更彈性伺服器的 SKU(版本),以符合應用程式的需求。 這項變更需要重新啟動資料庫伺服器。
- 如果您從來源實例中的預設值變更任何伺服器參數,請將這些伺服器參數值複製到彈性伺服器。
- 將其他伺服器設定 (例如標籤、警示和防火牆規則 (如果適用的話)) 從來源執行個體複製到彈性伺服器。
- 對應用程式進行變更,以將連接字串指向彈性伺服器。
- 密切監視資料庫效能,確認資料庫是否需要微調效能。