全部產品
Search
文件中心

ApsaraDB RDS:遷移RDS PostgreSQL資料到本地PostgreSQL

更新時間:Feb 28, 2024

阿里雲資料庫PostgreSQL版支援通過邏輯備份檔案將雲上資料移轉到本機資料庫。

前提條件

  • 本地已安裝PostgreSQL,且資料庫大版本與RDS PostgreSQL相同。

    說明

    本文所使用的備份工具pg_dump是PostgreSQL的內建工具,在本地安裝PostgreSQL的同時會自動安裝。

  • 本機資料庫中已建立資料庫且資料庫中無資料,用於恢複資料。

  • 本機資料庫已建立superuser使用者。

操作步驟

  1. 在本地命令列視窗執行如下命令,備份資料。

    pg_dump -U <username> -h <hostname> -p <port> <databasename> -f <filename> --exclude-table=public.ha_health_check

    參數說明如下:

    參數

    說明

    username

    雲資料庫高許可權帳號名。如何建立高許可權帳號,請參見建立帳號

    hostname

    雲資料庫主機名稱。

    port

    雲資料庫連接埠號碼。

    databasename

    要備份的資料庫名。

    filename

    要產生的備份檔案名稱。

    --exclude-table=public.ha_health_check

    用於跳過高可用檢查表。

    樣本

    pg_dump -U testuser -h xxxx.pg.rds.aliyuncs.com -p 5432 testdb -f bkfile.sql --exclude-table=public.ha_health_check
  2. 執行如下命令將資料恢複到本機資料庫。

    psql -U <username> -h <hostname> -d <databasename> -p <port> -f <filename.sql>

    參數說明如下:

    參數

    說明

    username

    本機資料庫superuser使用者名稱。

    hostname

    本機資料庫地址,配置為localhost。

    port

    本機資料庫連接埠號碼。

    databasename

    目的資料庫名。

    filename

    備份檔案名稱。

    樣本

    psql -U testuser -h localhost -d testdb -p 5432 -f bkfile.sql

由於 RDS 資料庫的使用權限設定和本機資料庫不一致,在資料匯入處理程序當中可能會出現一些與許可權相關的 WARNING 或 ERROR,可以忽略,例如:

WARNING:  no privileges could be revoked for "xxxxx"
ERROR:  role "xxxxx" does not exist

常見問題

  • Q:恢複時報錯ERROR: role "pg_rds_superuser" does not existWARNING: no privileges could be revoked for "xxxxx"如何處理?

    A:由於 RDS 資料庫的使用權限設定和本機資料庫不一致,在資料匯入處理程序當中可能會出現一些與許可權相關的 WARNING 或 ERROR,可以忽略。