本文介紹如何使用pg_restore命令將邏輯備份檔案(.dump檔案)中的資料恢複到RDS PostgreSQL執行個體或本地PostgreSQL資料庫中。
前提條件
注意事項
恢複資料時串連的資料庫建議不要用預設資料庫postgres。
恢複指定表資料時不會嘗試還原指定表可能依賴的資料庫物件,因此無法保證將指定表還原到乾淨的資料庫時一定會成功。
恢複資料庫
登入已備份資料的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
命令列提示
Password:
時,輸入PostgreSQL執行個體高許可權帳號對應的密碼,然後按斷行符號鍵確認。說明若出現內嵌外掛程式plpgsql的警示,請忽略。
恢複指定表資料
登入已備份資料的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
命令列提示
Password:
時,輸入PostgreSQL執行個體高許可權帳號對應的密碼,然後按斷行符號鍵確認。
恢複資料庫模式(不恢複資料)
登入已備份資料的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
命令列提示
Password:
時,輸入PostgreSQL執行個體高許可權帳號對應的密碼,然後按斷行符號鍵確認。說明若出現內嵌外掛程式plpgsql的警示,請忽略。