如何将Heroku上的psql数据库备份至本地并恢复到其他服务器?
Heroku PostgreSQL数据库迁移相关问题解答
先明确:Heroku支持将数据库备份到本地电脑
完全支持,你可以通过PostgreSQL原生工具或Heroku CLI两种方式将数据库备份到本地。
1. 直接将Heroku上的psql数据库恢复到其他服务器
这种方式无需本地中转,适合网络条件较好的场景:
- 前提:本地或目标服务器已安装
heroku-cli和PostgreSQL客户端工具(pg_dump、pg_restore) - 步骤:
- 获取Heroku数据库的连接信息:运行
heroku pg:credentials:url DATABASE(DATABASE为你的数据库别名,默认使用该值),复制输出的连接字符串 - 直接通过管道完成导出+恢复:
pg_dump -Fc $(heroku pg:credentials:url DATABASE -a) | pg_restore -d <目标服务器数据库连接字符串> - 注:
<目标服务器数据库连接字符串>格式通常为postgresql://用户名:密码@主机地址:端口/数据库名,需提前在目标服务器创建好空数据库
- 获取Heroku数据库的连接信息:运行
2. 先备份到本地,再迁移至其他服务器
第一步:备份Heroku数据库到本地
有两种常用方式:
- 方式一:用PostgreSQL原生工具导出
运行命令导出为SQL文件(通用格式):
或导出为自定义格式(压缩率更高,恢复更快):pg_dump $(heroku pg:credentials:url DATABASE -a) -f heroku_db_backup.sqlpg_dump -Fc $(heroku pg:credentials:url DATABASE -a) -f heroku_db_backup.dump - 方式二:用Heroku CLI创建并下载备份
- 创建即时备份:
heroku pg:backups:capture - 下载备份文件到本地:
heroku pg:backups:download,默认生成.dump格式文件
- 创建即时备份:
第二步:将本地备份迁移到其他服务器
- 如果是
.sql格式备份:psql -d <目标数据库连接字符串> -f heroku_db_backup.sql - 如果是
.dump格式备份:pg_restore -d <目标数据库连接字符串> heroku_db_backup.dump - 注:迁移前需确保目标服务器已创建对应空数据库,且安装了PostgreSQL客户端工具
内容的提问来源于stack exchange,提问作者xxran
相关产品推荐
相关产品推荐

