全部產品
Search
文件中心

ApsaraDB RDS:使用pg_restore恢複邏輯備份檔案資料

更新時間:Jun 19, 2024

本文介紹如何使用pg_restore命令將邏輯備份檔案(.dump檔案)中的資料恢複到RDS PostgreSQL執行個體或本地PostgreSQL資料庫中。

說明
  • 對於少量的資料,您可參考本文使用邏輯備份進行快速恢複,例如恢複某個表的資料。對於大量的資料,建議您使用全量物理備份來恢複資料到新的執行個體中,然後通過Data Transmission Service將資料遷移回原有執行個體

  • 更多資料恢複方案,請參見恢複方案概覽

前提條件

邏輯備份PostgreSQL資料

注意事項

  • 恢複資料時串連的資料庫建議不要用預設資料庫postgres。

  • 恢複指定表資料時不會嘗試還原指定表可能依賴的資料庫物件,因此無法保證將指定表還原到乾淨的資料庫時一定會成功。

恢複資料庫

  1. 登入已備份資料的ECS執行個體或本地主機,使用如下命令恢複資料。

    pg_restore -h '<hostname>' -U <username> -p <port> -d <dbname> -c <dumpdir>

    參數

    說明

    hostname

    RDS PostgreSQL執行個體串連地址。

    說明

    username

    RDS PostgreSQL執行個體高許可權帳號名稱。

    port

    RDS PostgreSQL執行個體連接埠。

    dbname

    待恢複資料的資料庫名稱。

    -c(選擇性參數)

    -c表示在恢複資料之前先清空目標資料庫中的資料。更多選項的詳細說明,請參見pg_restore

    dumpdir

    備份檔案路徑及名稱。

    樣本如下:

    pg_restore -h 'pgm-bpxxxxxx.pg.rds.aliyuncs.com' -U zht -p 5432 -d zht02 -c /tmp/testdb.dump
  2. 命令列提示Password:時,輸入PostgreSQL執行個體高許可權帳號對應的密碼,然後按斷行符號鍵確認。

    image.png

    說明

    若出現內嵌外掛程式plpgsql的警示,請忽略。

恢複指定表資料

  1. 登入已備份資料的ECS執行個體或本地主機,使用如下命令恢複指定表的資料。

    pg_restore -h '<hostname>' -U <username> -p <port> -d <dbname> -t <table> -c <dumpdir>

    參數

    說明

    hostname

    RDS PostgreSQL執行個體串連地址。

    說明

    username

    RDS PostgreSQL執行個體高許可權帳號名稱。

    port

    RDS PostgreSQL執行個體連接埠。

    dbname

    待恢複資料的資料庫名稱。

    table

    待恢複的表名。

    -c(可選)

    -c表示在恢複資料之前先清空目標資料庫中的資料。更多選項的詳細說明,請參見pg_restore

    dumpdir

    備份檔案路徑及名稱。

    樣本如下:

    pg_restore -h 'pgm-bpxxxxxx.pg.rds.aliyuncs.com' -U zht -p 5432 -d zht01 -t zhttest0808 -c /tmp/testdb2.dump
  2. 命令列提示Password:時,輸入PostgreSQL執行個體高許可權帳號對應的密碼,然後按斷行符號鍵確認。

    image.png

恢複資料庫模式(不恢複資料)

  1. 登入已備份資料的ECS執行個體或本地主機,使用如下命令恢複資料庫模式。

    pg_restore -h '<hostname>' -U <username> -p <port> -d <dbname> -s <dumpdir>

    參數

    說明

    hostname

    RDS PostgreSQL執行個體串連地址。

    說明

    username

    RDS PostgreSQL執行個體高許可權帳號名稱。

    port

    RDS PostgreSQL執行個體連接埠。

    dbname

    待復原模式的資料庫名稱。

    -s

    -s表示僅復原模式,不恢複資料。更多選項的詳細說明,請參見pg_restore

    dumpdir

    備份檔案路徑及名稱。

    樣本如下:

    pg_restore -h 'pgm-bpxxxxxx.pg.rds.aliyuncs.com' -U zht -p 5432 -d zht03 -s /tmp/testdb2.dump
  2. 命令列提示Password:時,輸入PostgreSQL執行個體高許可權帳號對應的密碼,然後按斷行符號鍵確認。

    image.png

    說明

    若出現內嵌外掛程式plpgsql的警示,請忽略。