教學課程:使用 DMS (傳統) 透過 Azure 入口網站 將 PostgreSQL 移轉至線上適用於 PostgreSQL 的 Azure 資料庫
您可以使用 Azure 資料庫移轉服務,將資料庫從內部部署 PostgreSQL 執行個體移轉至適用於 PostgreSQL 的 Azure 資料庫,且應用程式的停機時間最短。 在本教學課程中,您會使用 Azure 資料移轉服務 中的線上移轉活動,將listdb範例資料庫從 PostgreSQL 13.10 的內部部署實例移轉至 適用於 PostgreSQL 的 Azure 資料庫。
在本教學課程中,您會了解如何:
- 使用 pg_dump 公用程式移轉範例結構描述。
- 建立 Azure 資料庫移轉服務的執行個體。
- 在 Azure 資料庫移轉服務中建立移轉專案。
- 執行移轉。
- 監視移轉。
- 執行完全移轉。
注意
若要使用「Azure 資料庫移轉服務」來執行線上移轉,必須根據「進階」定價層建立執行個體。 我們會將磁碟加密,以防止在移轉期間使得資料遭竊
重要
為了獲得最佳的移轉體驗,Microsoft 建議在目標資料庫所在的同一個 Azure 區域中,建立 Azure 資料庫移轉服務的執行個體。 跨區域或地理位置移動資料可能使移轉程序變慢,並產生錯誤。
Prerequisites
若要完成本教學課程,您需要:
下載並安裝 PostgreSQL 社群版本。 來源 PostgreSQL 伺服器版本必須是 > = 9.4。 如需詳細資訊,請參閱支援的 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 Server (依預設會使用 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 執行個體的連線詳細資料。
指定目標詳細資料
在 [目標詳細資料] 畫面上,指定目標適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的連線詳細資料,這是使用 pg_dump 部署架構的預先布建實例。
按一下 [下一步:選取資料庫],然後在 [ 選取資料庫 ] 畫面上,對應來源和目標資料庫以進行移轉。
如果目標資料庫包含與來源資料庫相同的資料庫名稱,Azure 資料庫移轉服務依預設會選取目標資料庫。
按一下 [下一步:選取資料表],然後在 [ 選取資料表 ] 畫面上,選取需要移轉的必要資料表。
按一下 [下一步:設定移轉設定],然後在 [ 設定移轉設定 ] 畫面上,接受預設值。
在 [ 移轉摘要] 畫面的 [ 活動名稱 ] 文字方塊中,指定移轉活動的名稱,然後檢閱摘要,以確保來源和目標詳細資料符合您先前指定的專案。
執行移轉
選取 [開始移轉]。
移轉活動視窗隨即出現,且活動的 [狀態] 應該會更新,以顯示為 [備份進行中]。
監視移轉
在移轉活動畫面上,選取 [重新整理] 以更新顯示,直到移轉的 [狀態] 顯示為 [完成] 為止。
移轉完成時,於 [資料庫名稱] 下方選取特定資料庫,以取得 [載入完整資料] 和 [累加式資料同步] 作業的移轉狀態。
注意
[載入完整資料] 會顯示初始載入移轉狀態,而 [累加式資料同步] 則會顯示異動資料擷取 (CDC) 狀態。
執行完全移轉
初始完整載入完成後,資料庫會標示為 [已可執行完全移轉]。
當您準備好要完成資料庫移轉後,請選取 [開始完全移轉]。
等到 [暫止的變更] 計數器顯示 0,以確保對來源資料庫的所有傳入交易都已停止,選取 [確認] 核取方塊,然後選取 [套用]。
當資料庫移轉狀態顯示 [已完成] 時,請重新建立序列 (如果適用),然後將應用程式連線至適用於 PostgreSQL 的 Azure 資料庫的新目標執行個體。
後續步驟
- 如需在線上移轉至「適用於 PostgreSQL 的 Azure 資料庫」時的已知問題與限制,請參閱適用於 PostgreSQL 的 Azure 資料庫線上移轉的已知問題與因應措施一文。
- 如需 Azure 資料庫移轉服務的相關資訊,請參閱什麼是 Azure 資料庫移轉服務?一文。
- 如需適用於 PostgreSQL 的 Azure 資料庫的相關資訊,請參閱什麼是 Azure Database for PostgreSQL?一文。