教學課程:透過 Azure 入口網站使用 DMS (傳統版) 線上將 PostgreSQL 移轉至適用於 PostgreSQL 的 Azure 資料庫
重要
建議您在適用於 PostgreSQL 的 Azure 資料庫中使用新的移轉服務,以取得更簡化、更有效率的移轉體驗。 此服務可藉由支援各種來源環境來簡化流程,確保輕鬆轉換至適用於 PostgreSQL 的 Azure 資料庫。
如需 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 = [插槽數目],建議設定為五個插槽
- max_wal_senders =[並行工作數目] - max_wal_senders 參數設定可執行的並行工作數目,建議設定為 10 個工作
使用者在裝載來源資料庫的伺服器上必須具有「複寫」角色。
重要
現有資料庫中的所有資料表都需要主要索引鍵,以確保變更可以同步處理至目標資料庫。
移轉範例結構描述
若要完成所有資料表物件 (例如資料表結構描述、索引和預存程序),我們必須從來源資料庫擷取結構描述,並套用至資料庫。
使用 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 資料庫的新目標執行個體。