Rails 4: 你如何 运行 从 Heroku 下载一个 Postgres 数据库到我的本地机器上?
Rails 4: How do you run a Postgres database downloaded from Heroku on my local machine?
我从 Heroku 下载了一个 pg 备份(它以 TextEdit 文档的形式出现),我想 运行 从我的开发环境中对其进行测试。我如何转换 it/save 它以便我可以更改我的 database.yml 文件来访问它?
你应该看看来自 Heroku 的 Importing and Exporting Heroku Postgres Databases with PG Backups 文章。
下载PG备份:
$ heroku pg:backups capture
$ curl -o latest.dump `heroku pg:backups public-url`
并恢复到本地数据库:
$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
$ heroku pg:backups capture -a app_name
这将在您的屏幕上回显
curl -oUse Ctrl-C at any time to stop monitoring progress; the backup
will continue running. Use heroku pg:backups info to check progress.
Stop a running backup with heroku pg:backups cancel.
DATABASE ---backup---> b001
Backup completed
然后您需要使用 curl
下载转储
$ curl -o latest.dump `heroku pg:backups public-url -a app_name`
然后在 PG
中创建一个数据库并将转储导入该数据库
$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U [username] -d [database name] latest.dump
例子
$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U john -d new_dump_database_name latest.dump
$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U john -d production-dump prod
现在配置 Rails 的 Database.yml
development:
<<: *default
# database: rails-app_development
database: new_dump_database_name
见面heroku pg:pull
.
没有拉动 username/password
您可以通过 运行:
在本地拉取 Heroku PostgreSQL 数据库
heroku pg:pull $HEROKU_DATABASE $LOCAL_DATABASE [--app $APP]
其中 $HEROKU_DATABASE
是 Heroku 数据库的名称,$LOCAL_DATABASE
是您本地数据库的名称(它将由 pg:pull
创建;如果它已经存在,以保护您免受意外覆盖),$APP
是您的应用程序名称。
用username/password
拉动
如果您需要为本地 PostgreSQL 连接提供 username/password,那么您可以像这样通过 PGUSER
和 PGPASSWORD
传递它:
PGUSER=$YOUR_USER PGPASSWORD=$YOUR_PASSWORD heroku pg:pull $HEROKU_DATABASE $LOCAL_DATABASE [--app $APP]
为什么不备份?
捕获单独的备份只是为了获取最近的生产数据可能不是最好的主意,因为 Heroku 会轮换备份,所以您会丢失一个较旧的备份。这是否是一个问题取决于您的情况。
我从 Heroku 下载了一个 pg 备份(它以 TextEdit 文档的形式出现),我想 运行 从我的开发环境中对其进行测试。我如何转换 it/save 它以便我可以更改我的 database.yml 文件来访问它?
你应该看看来自 Heroku 的 Importing and Exporting Heroku Postgres Databases with PG Backups 文章。
下载PG备份:
$ heroku pg:backups capture
$ curl -o latest.dump `heroku pg:backups public-url`
并恢复到本地数据库:
$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
$ heroku pg:backups capture -a app_name
这将在您的屏幕上回显
curl -oUse Ctrl-C at any time to stop monitoring progress; the backup
will continue running. Use heroku pg:backups info to check progress.
Stop a running backup with heroku pg:backups cancel.
DATABASE ---backup---> b001
Backup completed
然后您需要使用 curl
$ curl -o latest.dump `heroku pg:backups public-url -a app_name`
然后在 PG
中创建一个数据库并将转储导入该数据库
$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U [username] -d [database name] latest.dump
例子
$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U john -d new_dump_database_name latest.dump
$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U john -d production-dump prod
现在配置 Rails 的 Database.yml
development:
<<: *default
# database: rails-app_development
database: new_dump_database_name
见面heroku pg:pull
.
没有拉动 username/password
您可以通过 运行:
在本地拉取 Heroku PostgreSQL 数据库heroku pg:pull $HEROKU_DATABASE $LOCAL_DATABASE [--app $APP]
其中 $HEROKU_DATABASE
是 Heroku 数据库的名称,$LOCAL_DATABASE
是您本地数据库的名称(它将由 pg:pull
创建;如果它已经存在,以保护您免受意外覆盖),$APP
是您的应用程序名称。
用username/password
拉动如果您需要为本地 PostgreSQL 连接提供 username/password,那么您可以像这样通过 PGUSER
和 PGPASSWORD
传递它:
PGUSER=$YOUR_USER PGPASSWORD=$YOUR_PASSWORD heroku pg:pull $HEROKU_DATABASE $LOCAL_DATABASE [--app $APP]
为什么不备份?
捕获单独的备份只是为了获取最近的生产数据可能不是最好的主意,因为 Heroku 会轮换备份,所以您会丢失一个较旧的备份。这是否是一个问题取决于您的情况。