識別移轉工具選項
從 PostgreSQL 伺服器移轉至適用於 PostgreSQL 的 Azure 資料庫彈性伺服器,有許多選項可用。 有原生 PostgreSQL 工具,例如 pg_dump、pgadmin 和 pg_restore。 有 Microsoft Azure 雲端服務,例如資料庫移轉服務和適用於 PostgresSQL 的 Azure 資料庫之彈性伺服器的移轉選項,可大幅自動化從來源到目標的整體資料傳輸流程。
適用於 PostgreSQL 的 Azure 資料庫彈性伺服器移轉
在適用於 PostgreSQL 的 Azure 資料庫之彈性伺服器服務內,有原生功能可支援將資料庫從其他 PostgreSQL 執行個體移轉至 Azure 服務。 此選項適用於將資料庫從來源離線移轉至目標。 若要使用此選項,我們需要使用先前討論的 pg_dumpall 和 psql 工具,將移轉至彈性伺服器的伺服器層級物件資料庫移轉。
這項功能設計採用外部 PostgreSQL 執行個體為來源,搭配將移轉專案建立為目標之所在的彈性伺服器。 基本上是將資料提取到彈性伺服器。 相較於執行手動傾印和還原程序,使用此服務的優點在於移轉屬於受控的性質。 設定之後,它會監視移轉至彈性伺服器之所有資料表的流程,因此我們可以輕鬆查看何時可以執行應用層級的完全移轉。
移轉專案
排序連線之後,選取要移轉至新伺服器的資料庫即可。 請注意,在下列螢幕擷取畫面中,如果有多個資料庫支援數個構成較大系統一部分的服務,我們可以選取以群組的方式移轉,而不是一次移轉一個。 將資料庫分組不僅有助於加速移轉,還能在移轉活動期間維持邏輯一致性。
開始驗證和移轉流程時,隨後可以使用專案儀表板檢閱整體流程進度。 此儀表板會顯示資料庫經過驗證,然後移轉至新伺服器時的過程。
這項資訊在移轉後會保留下來,讓我們能夠追蹤整體進度。 此資訊也提供變更控制流程所需的任何證據,了解所執行之任何工作已成功及其持續時間。
PostgreSQL 工具
我們在此探索,哪些主要工具可用來將資料從 PostgreSQL 伺服器,移轉至適用於 PostgreSQL 的 Azure 資料庫彈性伺服器。
pgcopydb
Pgcopydb 是開放原始碼專案,可將 PostgreSQL 伺服器之間的資料庫複製流程自動化。 在安裝 PostgreSQL 時提供的原生工具使用 pgcopydb 有幾個優點,其中包括這些優點。
- 不需要使用 pg_backup 和 pg_restore 的中繼檔案。
- 使用 PostgreSQL 內的 synchronize__seqscans 功能建立索引並行,以平行方式在資料表建立索引。
- 多執行緒資料表複製至分割區資料,並以平行方式傳輸較大的資料表。
- 利用異動資料擷取實現同步處理,將長時間停機時段的需求降到最低。
pgcopydb 有兩個主要選項可將資料庫和資料從來源伺服器移轉至目標。 這些選項包括克隆和複製。
pgcopydb 克隆
克隆是將整個資料庫從來源伺服器複製到目標的主要選項。 此命令有數個參數可供我們設定基本克隆作業,透過將異動資料擷取的設定自動化實現同步處理,將移轉停機時間縮到最短。 我們也可以針對資料表、索引和大型物件,指定以資料表、索引和大型物件方式平行處理資料傳輸的選項。
pgcopydb 複製
複製這個選項可讓您在移轉資料庫或部分資料庫時,以更細微的方式控制。 我們可以使用此命令選項,挑選要從來源伺服器資料庫傳輸到目標伺服器和資料庫的架構、資料表、角色等。 在應用程式現代化移轉活動中,將大型資料庫分解成較小的資料庫時,此命令很有用。 或者,彙總移轉活動可讓我們將某個資料庫的內容,移轉至另一個資料庫內的結構描述。
這些選項只是 pgcopydb 可協助我們改善將資料庫移轉至適用於 PostgreSQL 的 Azure 資料庫彈性伺服器的部分方式。 此流程提供的移轉方式可將風險降到最低,並最大化我們成功的機會。
pgAdmin
pgAdmin 這種廣泛使用的管理工具,可用來與 PostgreSQL 資料庫互動。 此工具允許建立和執行 pgsql 指令碼。 此工具包含各種實用的 GUI 工具,可用來設定、備份及還原 PostgreSQL 資料庫。 一般而言,在系統管理工作站安裝 pgAdmin。 此工具可讓您註冊並連線到多個 PostgreSQL 伺服器,因此是移轉工具集的重要部分。
pg_dump、pg_restore 和 psql
pg_dump 是一種命令列工具,與 PostgreSQL 執行個體一起安裝,而且可以視需要在系統管理工作站安裝。 它允許從 PostgreSQL 建立一致的資料庫備份,即使同時有一個工作負載進行中也不例外。 它可與個別資料庫搭配使用,並允許我們備份整個資料庫或部分資料庫。
如果使用 pg_dump 匯出結構描述物件,我們可以使用 psql 在目標資料庫執行產生的 .sql 檔案來建立物件。 在此步驟之後,我們可以了解將資料從來源移至目標系統的方法。 下列範例顯示用來從某個資料庫匯出資料庫結構描述的命令,以及用來在另一個資料庫中建立它的命令。
pg_dump -O --host=MyServerName --port=5432 --username=adminuser --dbname=AdventureWorks --schema-only > adventureWorks.sql
psql --host=MyFlexibleServer --username=demo --dbname=AdventureWorks < adventureWorks.sql
如果要建立來源資料庫的完整傾印,我們會使用 pg_restore 讀取產生的檔案,並將資料庫還原至目標 PostgreSQL 執行個體。 執行備份和還原至傾印時,這些活動所花費的時間取決於數個因素。 顯而易見的因素包括資料庫大小、儲存體子系統的效能,以及處理元件之間的網路頻寬和延遲。
下列範例示範如何以自訂格式建立資料庫傾印,然後將它還原至另一部伺服器。
pg_dump -Fc --host=MyServerName --port=5432 --username=adminuser --dbname=AdventureWorks > db.dump
pg_restore -Fc --host=MyServerName --port=5432 --create --username=adminuser --dbname=AdventureWorks db.dump
pg_dumpall
反之,pg_dump 用於備份單一資料庫,pg_dumpall 則用來將所有資料庫傾印到 psql 讀取至 PostgreSQL 新執行個體的單一指令檔。
此外,pg_dumpall 可用來為全域伺服器層級物件產生指令檔,例如資料庫在伺服器之間移轉時可能相依的角色。