pg_restore无法配合Amazon RDS实例恢复PostgreSQL备份的问题及解决
问题:Docker PostgreSQL备份导入Amazon RDS失败的解决方法
问题背景
在Docker中运行PostgreSQL实例,使用以下命令备份数据库:
docker exec 7c1abbe82ff2 pg_dump -U ash -Fc pokeapi > backup.dump
尝试将该备份导入Amazon RDS PostgreSQL数据库,多次尝试均未成功。
尝试过的方法及问题
- 使用
pg_restore恢复
执行命令:
pg_restore -v -h RDS_host_name.rds.amazonaws.com --port=5432 -U username -d RDS_database_name -j 2 backup.dump
仅输出pg_restore: connecting to database for restore后无任何进展。已确认连接信息正确(输入错误用户名时RDS控制台会报错,信息正确则无日志),且RDS安全组已设置允许所有来源流量。
- 使用psql执行备份文件
通过psql成功连接RDS实例后,执行\i backup.dump,报错:
The input is a PostgreSQL custom-format dump. Use the pg_restore command-line client to restore this dump to a database.
解决方案
重新生成纯文本格式的备份文件,命令如下:
docker exec 7c1abbe82ff2 pg_dump -U username --format=plain --no-owner databaseName > newBackup.dump
将备份格式从-Fc(自定义格式)改为--format=plain(纯文本SQL格式)后,通过psql登录RDS实例,执行\i newBackup.dump即可完成数据导入。
内容的提问来源于stack exchange,提问作者Noah Walcher
相关产品推荐
相关产品推荐

