識別移轉工具選項

已完成

有許多選項可用來執行從 PostgreSQL 伺服器移轉至適用於 PostgreSQL 的 Azure 資料庫彈性伺服器。 有原生 PostgreSQL 工具,例如 pg_dump、pgadmin 和 pg_restore。 Microsoft Azure 的雲端服務,例如資料庫移轉服務和適用於 PostgresSQL 的 Azure Database - 彈性伺服器中的移轉選項,基本上可以自動化從來源到目標的整體數據傳輸過程。

適用於 PostgreSQL 的 Azure 彈性伺服器資料庫 - 移轉

在適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器服務內,有原生功能可支援將資料庫從其他 PostgreSQL 實例移轉至 Azure 服務。 此選項適用於將資料庫從來源離線移轉至目標。 若要使用此選項,我們需要使用先前討論的 pg_dumpall 和 psql 工具,將移轉至彈性伺服器的伺服器層級物件資料庫移轉。

這項功能是以外部 PostgreSQL 實例做為來源,以及移轉專案建立為目標的彈性伺服器所設計。 主要用於將數據提取到彈性伺服器。 相較於執行手動傾印和還原程序,使用此服務的優點在於移轉屬於受控的性質。 設定之後,它會監視移轉至彈性伺服器之所有數據表的流程,因此我們可以輕鬆地查看何時可以執行應用層級的切換。

移轉專案

排序連線之後,我們需要做的就是選取要移轉至新伺服器的資料庫或資料庫。 在下列螢幕快照中,請注意,如果有多個資料庫支援數個構成較大系統一部分的服務,我們可以選取將它們移轉為群組,而不是一次移轉一個。 此資料庫群組不僅有助於加速移轉,還能在移轉活動期間維護邏輯一致性。

Azure 入口網站的螢幕快照,顯示用於移轉專案的資料庫選取。

當我們開始驗證和移轉程式時,我們可以使用專案儀錶板來檢閱程式的整體進度。 此儀錶板會顯示資料庫驗證和移轉至新伺服器的過程。

Azure 入口網站的螢幕快照,其中顯示移轉專案資料庫驗證和移轉狀態。

這項資訊會在移轉後保留,讓我們能夠追蹤整體進度。 此資訊也提供變更控制程式所需的任何證據,以瞭解所執行之任何工作的成功和持續時間。

PostgreSQL 工具

在這裡,我們將探索可用來將數據從 PostgreSQL 伺服器遷移至適用於 PostgreSQL 的 Azure 資料庫彈性伺服器的主要工具。

pgcopydb

Pgcopydb 是開放原始碼專案,可以自動化在 PostgreSQL 伺服器之間複製資料庫的程式。 使用 pgcopydb 比安裝 PostgreSQL 時提供的原生工具有幾個優點,這些優點包括:

  • 使用 pg_backup和 pg_restore 移除中繼檔案的需求。
  • 使用 PostgreSQL 的 synchronize__seqscans 功能來啟用索引並行,以在資料表上平行建立索引。
  • 多執行緒表格複製,用於對數據進行分割並以平行方式傳輸較大的表格。
  • 利用異動資料擷取實現同步處理,將長時間停機時段的需求降到最低。

pgcopydb 中有兩個主要選項可用於資料庫和數據從來源伺服器移轉至目標。 這些選項是克隆和複製。

pgcopydb 克隆

Clone 是將整個資料庫從來源伺服器複製到目標的主要選項。 此命令包含數個開關,提供我們從設定基本克隆作業到自動化異動資料擷取設定,同步資料以將移轉停機時間降到最低的功能。 我們也可以針對資料表、索引和大型物件,指定以資料表、索引和大型物件方式平行處理資料傳輸的選項。

pgcopydb 複製

"複製選項可讓您在移轉資料庫或部分資料庫時,更細緻地控制。" 我們可以使用此命令選項來挑選哪些架構、數據表、角色等,以從源伺服器資料庫傳輸到目標伺服器和資料庫。 此命令在應用程式現代化移轉活動的一部分時,會將一個大型資料庫分解成較小的資料庫時很有用。 或者,匯總移轉活動可讓我們將某個資料庫的內容移轉至另一個資料庫內的架構。

這些選項只是 pgcopydb 可協助我們改善將資料庫移轉至適用於 PostgreSQL 的 Azure 資料庫彈性伺服器的一些方式。 此程式提供一種移轉方式,可將風險降到最低,並最大化我們成功的機會。

pgAdmin

pgAdmin 是廣泛使用的管理工具,可用來與 PostgreSQL 資料庫互動。 此工具允許建立和執行 pgsql 腳本。 此工具包含實用的 GUI 工具陣列,可用來設定、備份及還原 PostgreSQL 資料庫。 一般而言,在系統管理工作站上安裝 pgAdmin。 此工具可讓您註冊並連線到多個 PostgreSQL 伺服器,使其成為移轉工具集的重要部分。

pgAdmin 的螢幕快照,其中顯示各種系統管理員選項的功能表。

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可用來為全域伺服器層級對象產生腳本檔案,例如資料庫在伺服器之間移轉時可能相依的角色。