重要事項
建議您在適用於 PostgreSQL 的 Azure 資料庫中使用新的移轉服務,以取得更簡化、更有效率的移轉體驗。 此服務透過支援多個來源環境來簡化流程,確保輕鬆過渡到 Azure Database for PostgreSQL。
如需 Azure 資料庫移轉服務的詳細資訊,請參閱什麼是 Azure Database Migration Service? 一文。
您可以使用 Azure 資料庫移轉服務,將資料庫從內部部署 PostgreSQL 執行個體移轉至適用於 PostgreSQL 的 Azure 資料庫,且應用程式的停機時間最短。 在此教學課程中,您會在 Azure 資料庫移轉服務中使用線上移轉活動,將 listdb 範例資料庫從內部部署的 PostgreSQL 13.10 執行個體移轉至適用於 PostgreSQL 的 Azure 資料庫。
在本教學課程中,您會了解如何:
- 使用 pg_dump 公用程式移轉範例結構描述。
- 建立 Azure 資料庫移轉服務的執行個體。
- 在 Azure 資料庫移轉服務中建立移轉專案。
- 執行移轉。
- 監視移轉。
- 執行完全移轉。
若要使用「Azure 資料庫移轉服務」來執行線上移轉,必須根據「進階」定價層建立執行個體。 我們會將磁碟加密,以防止在移轉期間使得資料遭竊
重要事項
為了獲得最佳的移轉體驗,Microsoft 建議在目標資料庫所在的同一個 Azure 區域中,建立 Azure 資料庫移轉服務的執行個體。 跨區域或地理位置移動資料可能使移轉程序變慢,並產生錯誤。
先決條件
若要完成本教學課程,您需要:
下載並安裝 PostgreSQL 社群版。 來源 PostgreSQL 伺服器版本必須是 >= 9.4。 如需詳細資訊,請參閱 適用於 PostgreSQL 的 Azure 資料庫中支援的 PostgreSQL 版本。
另請注意,目標「適用於 PostgreSQL 的 Azure 資料庫」版本必須等於或晚於內部部署 PostgreSQL 版本。 例如,PostgreSQL 12 可以移轉至適用於 PostgreSQL 的 Azure 資料庫 >= 12 版,但無法移轉至適用於 PostgreSQL 的 Azure 資料庫 11。
使用 Azure Resource Manager 部署模型建立 Azure 資料庫移轉服務的 Microsoft Azure 虛擬網路,以使用 ExpressRoute 或 VPN 為您的內部部署來源伺服器提供站對站連線能力。 如需建立虛擬網路的詳細資訊,請參閱虛擬網路文件,特別是快速入門文章,裡面會提供逐步操作詳細資料。
在虛擬網路設定期間,如果您使用 ExpressRoute 搭配與 Microsoft 對等互連的網路,請將下列服務端點新增至將佈建服務的子網路:
- 目標資料庫端點 (例如,SQL 端點、Azure Cosmos DB 端點等)
- 儲存體端點
- 服務匯流排端點
此為必要設定,因為 Azure 資料庫移轉服務沒有網際網路連線。
請確定虛擬網路的網路安全性群組 (NSG) 規則不會封鎖 ServiceBus、儲存體和 AzureMonitor 的 ServiceTag 輸出埠 443。 如需虛擬網路 NSG 流量篩選的詳細資訊,請參閱使用網路安全性群組來篩選網路流量。
開啟 Windows 防火牆,以允許 Azure 資料庫移轉服務存取來源 PostgreSQL 伺服器,預設為 TCP 埠 5432。
在來源資料庫前面使用防火牆設備時,您可能需要新增防火牆規則,以允許 Azure 資料庫移轉服務存取來源資料庫以進行移轉。
為適用於 PostgreSQL 的 Azure 資料庫建立伺服器層級的防火牆規則,以允許 Azure 資料庫移轉服務存取目標資料庫。 提供用於 Azure 資料庫移轉服務之虛擬網路的子網路範圍。
在檔案中
postgresql.config啟用邏輯複寫,並設定下列參數:-
wal_level=logical. -
max_replication_slots= [插槽數],建議設定為5插槽。 -
max_wal_senders= [並行任務數]。 參數設定max_wal_senders可執行的並發任務數,建議設定為10任務。
-
使用者必須在裝載來源資料庫的伺服器上具有
REPLICATION角色。
重要事項
現有資料庫中的所有資料表都需要主要索引鍵,以確保變更可以同步處理至目標資料庫。
移轉範例結構描述
要完成所有資料庫對象,如表模式、索引和預存程序,我們需要從來源資料庫中提取模式並應用於資料庫。
使用
pg_dump -s指令來建立資料庫的結構傾印檔案。pg_dump -O -h hostname -U db_username -d db_name -s > your_schema.sql例如,若要建立 listdb 資料庫的結構描述傾印檔案:
pg_dump -O -h localhost -U postgres -d listdb -s -x > listdbSchema.sql如需有關使用 pg_dump 公用程式的詳細資訊,請參閱 pg-dump 教學課程中的範例。
在您的目標環境中建立一個空的資料庫,即適用於 PostgreSQL 的 Azure 資料庫。
如需有關如何連線及建立資料庫的詳細資訊,請參閱在 Azure 入口網站中建立適用於 PostgreSQL 的 Azure 資料庫伺服器一文。
透過還原結構描述傾印檔案,將結構描述匯入到您所建立的目標資料庫中。
psql -h hostname -U db_username -d db_name < your_schema.sql例如:
psql -h mypgserver-20170401.postgres.database.azure.com -U postgres -d migratedb < listdbSchema.sql附註
移轉服務在內部自動管理外鍵和觸發器的啟用與停用,以確保資料移轉的穩定性和健壯性。 因此,您不必擔心對目標資料庫結構描述進行任何修改。
註冊資源提供者
您必須在建立第一個資料庫移轉服務執行個體之前,註冊 Microsoft.DataMigration 資源提供者。
登入 Azure 入口網站。 搜尋並選取 [訂用帳戶]。
選取您要在其中建立 Azure 資料庫移轉服務執行個體的訂用帳戶,然後選取 [資源提供者]。
搜尋移轉,然後針對 [Microsoft.DataMigration] 選取 [註冊]。
建立 Azure 資料庫移轉服務執行個體
從 Azure 入口網站功能表或 [首頁] 頁面上,選取 [建立資源]。 搜尋並選取 [Azure 資料庫移轉服務]。
在 [Azure 資料庫移轉服務] 畫面上,選取 [建立]。
選取適當的 [來源伺服器類型] 和 [目標伺服器類型],然後選擇 [資料庫移轉服務 (傳統)] 選項。
在 [建立移轉服務] 的基本資料畫面上:
- 選取訂用帳戶。
- 建立新的資源群組,或選擇現有的群組。
- 指定 Azure 資料庫移轉服務執行個體的名稱。
- 選取您要在其中建立 Azure 資料庫移轉服務執行個體的位置。
- 選擇 Azure 作為服務模式。
- 選取定價層。 如需成本和定價層的詳細資訊,請參閱定價分頁。
- 選取 [下一步:網路功能]。
在 [建立移轉服務] 的網路設定畫面上:
- 選取現有的虛擬網路或建立新的虛擬網路。 虛擬網路提供 Azure 資料庫移轉服務存取來源伺服器和目標執行個體。 如需如何在 Azure 入口網站中建立虛擬網路的詳細資訊,請參閱使用 Azure 入口網站建立虛擬網路一文。
選取 [檢閱 + 建立] 以檢閱詳細資料,然後選取 [建立] 以建立服務。
在幾分鐘之後,您的 Azure 資料庫移轉服務執行個體就會建立且可供使用:
建立移轉專案
建立服務之後,請在 Azure 入口網站中找出該服務,然後建立新的移轉專案。
在 Azure 入口網站中,選取 [所有服務],搜尋 Azure 資料庫移轉服務,然後選取 [Azure 資料庫移轉服務]。
在 [Azure 資料庫移轉服務] 畫面上,搜尋您建立的 Azure 資料庫移轉服務執行個體名稱,選取該執行個體,然後選取 [新增移轉專案]。
在 [新增移轉專案] 畫面上指定專案名稱,並在 [來源伺服器類型] 文字方塊中中選取 [PostgreSQL],然後在 [目標伺服器類型] 文字方塊中選取 [適用於 PostgreSQL 的 Azure 資料庫]。
在 [移轉活動類型] 區段中,選取 [線上資料移轉]。
或者,您可以選擇 [僅建立專案] 以立即建立移轉專案,並於後續再執行移轉。
選取 [建立並執行活動],以成功使用 Azure 資料庫移轉服務來遷移資料。
指定來源詳細資料
指定目標詳細資料
在 [目標詳細資料] 畫面上,指定目標適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的連線詳細資料,這是使用 pg_dump 部署結構描述的預先配置的執行個體。
選取 [下一步:選取資料庫],然後在 [選取資料庫] 畫面上,對應來源和目標資料庫以進行移轉。
如果目標資料庫包含與來源資料庫相同的資料庫名稱,Azure 資料庫移轉服務依預設會選取目標資料庫。
選取 [下一步:選取資料表],然後在 [選取資料表] 畫面上,選取需要移轉的必要資料表。
選取 [下一步:設定移轉設定],然後在 [設定移轉設定] 畫面上,接受預設值。
在 [移轉摘要] 畫面的 [活動名稱] 文字方塊中,指定移轉活動的名稱,然後檢閱摘要,以確定來源和目標詳細資料都與您先前的指定相符。
執行移轉
選取 [開始移轉]。
移轉活動視窗隨即出現,且活動的 [狀態] 應該會更新,以顯示為 [備份進行中]。
監視移轉
在移轉活動畫面上,選取 [重新整理] 以更新顯示,直到移轉的 [狀態] 顯示為 [完成] 為止。
移轉完成時,於 [資料庫名稱] 下方選取特定資料庫,以取得 [載入完整資料] 和 [累加式資料同步] 作業的移轉狀態。
附註
[載入完整資料] 會顯示初始載入移轉狀態,而 [累加式資料同步] 則會顯示異動資料擷取 (CDC) 狀態。
執行完全移轉
初始完整載入完成後,資料庫會標示為 [已可執行完全移轉]。
當您準備好要完成資料庫移轉後,請選取 [開始完全移轉]。
等到 [擱置的變更] 計數器顯示
0,以確保對來源資料庫的所有傳入交易都已停止,選取 [確認] 核取方塊,然後選取 [套用]。當資料庫移轉狀態顯示 [已完成] 時,請重新建立序列 (如果適用),然後將應用程式連線至適用於 PostgreSQL 的 Azure 資料庫的新目標執行個體。