本文介紹如何使用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的報警,請忽略。