IBM Cloud Docs
遷移到Databases for PostgreSQL

遷移到Databases for PostgreSQL

有多種選項可將資料從現有PostgreSQL資料庫遷移到IBM Cloud® Databases for PostgreSQL。 我們專注於最簡單、最有效的。 首先,您需要在本機安裝PostgreSQL,以便擁有 psqlpg_dump 工具。 雖然不是嚴格要求,但Cloud Databases CLI 可以更輕鬆地連接和還原到新的Databases for PostgreSQL部署。

pg_dump

在來源資料庫上執行 pg_dump 建立一個 SQL 文件,該文件可用於重新建立資料庫。 pg_dump 至少需要主機名稱 ( -h 標誌)、連接埠號碼 ( -p 標誌)、資料庫名稱 ( -d 標誌)、使用者名稱 ( -U 標誌) 和要將轉儲寫入的檔案(或目錄名稱) ( -f 標誌)。

例如,以下命令使用 admin 使用者轉儲sl-eu-lon-2-portal.4.dblayer.com連接埠 17980 上託管的PostgreSQL“compose”資料庫,並將結果保存在 dump.sql 中。

pg_dump -h sl-eu-lon-2-portal.4.dblayer.com -p 17980 -d compose -U admin -f dump.sql

pg_dump 命令有很多選項,建議您 查閱官方文件命令參考以更全面地了解其功能。

恢復 pg_dump 的輸出

然後,pg_dump 的結果輸出可以上傳到新的Databases for PostgreSQL部署。 由於輸出是SQL,因此可以簡單地透過 psql 命令將其發送到資料庫。 我們建議使用管理員使用者執行導入。

有關如何使用 psql 以管理員身份進行連接的詳細信息,請參閱 連接 psql。 要使用 psql 命令連接,您需要管理員使用者的連接字串和 TLS 憑證。 憑證需要從base64解碼並儲存為任意本機檔案。 若要將先前建立的 dump.sql 匯入到名為 example-psql 資料庫部署中,可以使用 -f dump.sql 作為參數來呼叫 psql 命令。 此參數告訴 psql 讀取並執行檔案中的SQL語句。 該命令看起來像:

PGPASSWORD=yourpasswordhere PGSSLROOTCERT=cert.crt psql 'host=c7798cf6-e5d2-4513-b17f-3d3fa67d8291.8f7bfd8f3faa4218aec56e069eb46187.databases.appdomain.cloud port=32484 dbname=ibmclouddb user=admin sslmode=verify-full' -f dump.sql

使用 psql 連接 文件中所述,Cloud Databases CLI 外掛程式簡化了連線。 之前的 psql 導入可以執行為:

ibmcloud cdb deployment-connections example-psql -s -- -f dump.sql

如果未指定用戶,指令會自動使用 admin 用戶。 它還以互動方式提示輸入密碼。 自動檢索並使用 TLS 憑證。 一旦從 API 建立了詳細信息,-s 就會啟動 psql (或任何已配置的命令)。 -- 之後的任何內容都會傳遞給命令。

當復原過程運行時,它會發出許多有關對資料庫部署所做的變更的訊息。

使用 pg_restore 的附加遷移選項

對於擁有單獨包含 sql 和資料的 TAR 檔案的用戶,除了前面提到的 psql 命令之外,還可以使用命令 pg_restore 來遷移資料。 pg_restore 命令的範例是:

 PGPASSWORD=yourpasswordhere PGSSLROOTCERT=cert.crt pg_restore -h c7798cf6-e5d2-4513-b17f-3d3fa67d8291.8f7bfd8f3faa4218aec56e069eb46187.databases.appdomain.cloud -p 32484 -U admin -F t -d ibmclouddb tarfile.tar