heroku - 使用 heroku pg:backups:restore 导入 Heroku Postgres
问题描述
我正在尝试根据本文将本地 PostgreSQL 数据库复制到 Heroku 。
这是我所做的:
1.制作转储文件
pg_dump -Fc --no-acl --no-owner -h localhost -U postgres mydb > mydb.dump
2.将转储文件上传到 aws my-bucket-name/db-backup 文件夹。
aws s3 cp mydb.dump s3://my-bucket-name/db-backup/mydb.dump
3. 生成签名 URL:
aws s3 presign s3://my-bucket-name/db-backup/mydb.dump --region us-east-2
4. 验证签名的 URL 是否可访问。
在浏览器的隐身选项卡中导航到预签名 URL。有用。
5. 使用生成的签名 URL 备份到 Heroku
我使用双引号,GENERATED_URL
因为我在 Windows 上:
heroku pg:backups:restore --app my-app-name --confirm my-app-name "GENERATED_URL"
例如:
heroku pg:backups:restore --app my-app-name --confirm my-app-name "https://s3.us-east-2.amazonaws.com/s3.console.aws.amazon.com/s3/buckets/my-bucket-name/db-backup/mydb.dump?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIABCDVKE2GXCY3YXL7V%2F20200934%2Fus-east-2%2Fs3%2Faws4_request&X-Amz-Date=20200924T164718Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=fb2f51c0d7fbe1234e3740cf23c37f003575d968a1e4961684a47ac627fbae2e"
结果
我收到以下错误:
Restoring... !
! An error occurred and the backup did not finish.
!
! Could not initialize transfer
!
! Run heroku pg:backups:info r021 for more details.
'X-Amz-Credential' is not recognized as an internal or external command,
operable program or batch file.
'X-Amz-Date' is not recognized as an internal or external command,
operable program or batch file.
'X-Amz-Expires' is not recognized as an internal or external command,
operable program or batch file.
'X-Amz-SignedHeaders' is not recognized as an internal or external command,
operable program or batch file.
'X-Amz-Signature' is not recognized as an internal or external command,
operable program or batch file.
我发现其他人有类似的问题,但没有解决方案。提前感谢任何可以提供帮助的人。
解决方案
这解决了。有两个问题。
- PowerShell 没有正确转义字符。所以,我切换到 CMD。
- 转储文件无效。
这行代码产生了一个无效的转储文件:
pg_dump -Fc --no-acl --no-owner -h localhost -U postgres mydb > mydb.dump
相反,我需要使用以下语法:
pg_dump -Fc --no-acl --no-owner -h localhost -U postgres -d mydb -f mydb.dump
做出改变后,一切顺利。
推荐阅读
- matlab - 运行简单场景和传感器模型 3D 仿真时遇到一些问题
- amazon-web-services - 从浏览器上下文调用 AssumeRole API 是否被视为 Auth* 反模式,如果是,为什么?
- mysql - MySQL/MariaDB 添加栏目文档
- firebase - 将所有请求定向到一个函数,包括带有参数的请求
- c99 - a[3] = (a[1], a[2]); 是什么意思?意思是?
- firebase - 发送带有外部链接的推送通知(React Native)
- javascript - 悬停在 Div 上
- linux - 从 CPU 将字节写入 PCIe 地址空间的精确细节
- c++ - 可调用对象作为默认模板参数
- python - 需要在堆叠直方图上使用不透明或透明颜色并添加图例