教學課程:透過 Azure 入口網站 使用 DMS 將 PostgreSQL 移轉至線上適用於 PostgreSQL 的 Azure 資料庫
您可以使用 Azure 資料庫移轉服務,將資料庫從內部部署 PostgreSQL 執行個體移轉至適用於 PostgreSQL 的 Azure 資料庫,且應用程式的停機時間最短。 在此教學課程中,您會在 Azure 資料庫移轉服務中使用線上移轉活動,將 DVD Rental 範例資料庫從內部部署的 PostgreSQL 9.6 執行個體移轉至適用於 PostgreSQL 的 Azure 資料庫。
在本教學課程中,您會了解如何:
- 使用 pg_dump 公用程式移轉範例結構描述。
- 建立 Azure 資料庫移轉服務的執行個體。
- 在 Azure 資料庫移轉服務中建立移轉專案。
- 執行移轉。
- 監視移轉。
- 執行完全移轉。
注意
若要使用「Azure 資料庫移轉服務」來執行線上移轉,必須根據「進階」定價層建立執行個體。 我們會將磁碟加密,以防止在移轉期間使得資料遭竊
重要事項
為了獲得最佳的移轉體驗,Microsoft 建議在目標資料庫所在的同一個 Azure 區域中,建立 Azure 資料庫移轉服務的執行個體。 跨區域或地理位置移動資料可能使移轉程序變慢,並產生錯誤。
Prerequisites
若要完成本教學課程,您需要:
下載並安裝 PostgreSQL 社群版 9.4、9.5、9.6 或 10。 來源 PostgreSQL Server 版本必須是 9.4、9.5、9.6、10、11、12 或 13。 如需詳細資訊,請參閱支援的 PostgreSQL 資料庫版本。
另請注意,目標「適用於 PostgreSQL 的 Azure 資料庫」版本必須等於或晚於內部部署 PostgreSQL 版本。 例如,PostgreSQL 9.6 可以移轉至適用於 PostgreSQL 的 Azure 資料庫 9.6、10 或 11,但無法移轉至適用於 PostgreSQL 的 Azure 資料庫 9.5。
建立適用於 PostgreSQL 的 Azure 資料庫伺服器或建立適用於 PostgreSQL 的 Azure 資料庫 - 超大規模 (Citus) 伺服器。
使用 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
例如,若要建立 dvdrental 資料庫的結構描述傾印檔案:
pg_dump -O -h localhost -U postgres -d dvdrental -s -x > dvdrentalSchema.sql
如需有關使用 pg_dump 公用程式的詳細資訊,請參閱 pg-dump 教學課程中的範例。
在您的目標環境中建立一個空的資料庫,即適用於 PostgreSQL 的 Azure 資料庫。
如需如何連接及建立資料庫的詳細資訊,請參閱在 Azure 入口網站中建立適用於 PostgreSQL 的 Azure 資料庫伺服器或在 Azure 入口網站中建立適用於 PostgreSQL 的 Azure 資料庫 - 超大規模 (Citus) 伺服器文章。
注意
適用於 PostgreSQL 的 Azure 資料庫 - 超大規模 (Citus) 的一個執行個體只有單一資料庫:citus。
透過還原結構描述傾印檔案,將結構描述匯入到您所建立的目標資料庫中。
psql -h hostname -U db_username -d db_name < your_schema.sql
例如:
psql -h mypgserver-20170401.postgres.database.azure.com -U postgres -d dvdrental citus < dvdrentalSchema.sql
注意
移轉服務會在內部處理外鍵和觸發程式的啟用/停用,以確保可靠且健全的資料移轉。 因此,您不需要擔心對目標資料庫架構進行任何修改。
註冊資源提供者
您必須在建立第一個資料庫移轉服務執行個體之前,註冊 Microsoft.DataMigration 資源提供者。
登入 Azure 入口網站。 搜尋並選取 [訂用帳戶]。
選取您要在其中建立 Azure 資料庫移轉服務執行個體的訂用帳戶,然後選取 [資源提供者]。
搜尋移轉,然後針對 [Microsoft.DataMigration] 選取 [註冊]。
建立 DMS 執行個體
在 Azure 入口網站中,選取 [+ 建立資源],搜尋「Azure 資料庫移轉服務」,然後從下拉式清單選取 [Azure 資料庫移轉服務]。
在 [Azure 資料庫移轉服務] 畫面上,選取 [建立]。
在 [建立移轉服務] 畫面上,指定名稱、訂用帳戶、現有的資源群組,以及服務的位置。
選取現有的虛擬網路或建立新的虛擬網路。
虛擬網路會為 Azure 資料庫移轉服務提供來源 PostgreSQL 伺服器和目標適用於 PostgreSQL 的 Azure 資料庫執行個體的存取權。
如需如何在 Azure 入口網站中建立虛擬網路的詳細資訊,請參閱使用 Azure 入口網站建立虛擬網路一文。
選取定價層。
如需成本和定價層的詳細資訊,請參閱定價分頁。
選取 [檢閱 + 建立] 以建立服務。
服務建立大約會在 10 到 15 分鐘內完成。
建立移轉專案
建立服務之後,請在 Azure 入口網站中找出該服務,然後建立新的移轉專案。
在 Azure 入口網站中,選取 [所有服務],搜尋 Azure 資料庫移轉服務,然後選取 [Azure 資料庫移轉服務]。
在 [Azure 資料庫移轉服務] 畫面上,搜尋您建立的 Azure 資料庫移轉服務執行個體名稱,選取該執行個體,然後選取 [新增移轉專案]。
在 [新增移轉專案] 畫面上指定專案名稱,並在 [來源伺服器類型] 文字方塊中中選取 [PostgreSQL],然後在 [目標伺服器類型] 文字方塊中選取 [適用於 PostgreSQL 的 Azure 資料庫]。
在 [選擇活動類型] 區段中,選取 [線上資料移轉]。
注意
或者,您可以選擇 [僅建立專案] 以立即建立移轉專案,並於後續再執行移轉。
選取 [儲存],記下要成功使用 Azure 資料庫移轉服務來移轉資料的需求,然後選取 [建立及執行活動]。
指定來源詳細資料
在 [新增來源詳細資料] 畫面上,指定來源 PostgreSQL 執行個體的連線詳細資料。
選取 [儲存]。
指定目標詳細資料
在 [目標詳細資料] 畫面上,指定目標超大規模 (Citus) 伺服器的連線詳細資料,這是使用 pg_dump 部署的 DVD Rentals 結構描述超大規模 (Citus) 的預先佈建執行個體。
選取 [儲存],然後在 [對應到目標資料庫] 畫面上,對應要進行移轉的來源和目標資料庫。
如果目標資料庫包含與來源資料庫相同的資料庫名稱,Azure 資料庫移轉服務依預設會選取目標資料庫。
選取 [儲存],然後在 [移轉設定] 畫面上接受預設值。
選取 [儲存],在 [移轉摘要] 畫面的 [活動名稱] 文字方塊中,指定移轉活動的名稱,然後檢閱摘要,以確定來源和目標詳細資料都與您先前的指定相符。
執行移轉
選取 [執行移轉]。
移轉活動視窗隨即出現,且活動的 [狀態] 應該會更新,以顯示為 [備份進行中]。
監視移轉
在移轉活動畫面上,選取 [重新整理] 以更新顯示,直到移轉的 [狀態] 顯示為 [完成] 為止。
移轉完成時,於 [資料庫名稱] 下方選取特定資料庫,以取得 [載入完整資料] 和 [累加式資料同步] 作業的移轉狀態。
注意
[載入完整資料] 會顯示初始載入移轉狀態,而 [累加式資料同步] 則會顯示異動資料擷取 (CDC) 狀態。
執行完全移轉
初始完整載入完成後,資料庫會標示為 [已可執行完全移轉]。
當您準備好要完成資料庫移轉後,請選取 [開始完全移轉]。
等到 [暫止的變更] 計數器顯示 0,以確保對來源資料庫的所有傳入交易都已停止,選取 [確認] 核取方塊,然後選取 [套用]。
當資料庫移轉狀態顯示 [已完成] 時,請重新建立序列 (如果適用),然後將應用程式連線至適用於 PostgreSQL 的 Azure 資料庫的新目標執行個體。
後續步驟
- 如需在線上移轉至「適用於 PostgreSQL 的 Azure 資料庫」時的已知問題與限制,請參閱適用於 PostgreSQL 的 Azure 資料庫線上移轉的已知問題與因應措施一文。
- 如需 Azure 資料庫移轉服務的相關資訊,請參閱什麼是 Azure 資料庫移轉服務?一文。
- 如需適用於 PostgreSQL 的 Azure 資料庫的相關資訊,請參閱什麼是 Azure Database for PostgreSQL?一文。