我想复制一个生产PostgreSQL数据库到一个开发服务器。最快最简单的方法是什么?


当前回答

我努力了很多,最终让我在Rails 4中工作的方法是:

在旧服务器上

sudo su - postgres
pg_dump -c --inserts old_db_name > dump.sql

我必须使用postgres linux用户来创建转储。我还必须使用-c来强制在新服务器上创建数据库。——inserts告诉它使用INSERT()语法,否则对我来说是无效的:(

然后,在新服务器上,simpy:

sudo su - postgres
psql new_database_name < dump.sql

传输转储。我简单地使用“cat”来打印内容,而不是“nano”来重新创建它复制粘贴内容。

此外,我在两个数据库上使用的角色是不同的,所以我必须在转储中找到-替换所有的所有者名称。

其他回答

pg_dump the_db_name > the_backup.sql

然后将备份复制到您的开发服务器,使用以下方法进行恢复:

psql the_new_dev_db < the_backup.sql

先使用pg_dump,然后再使用psql或pg_restore——这取决于您是选择- fp选项还是- fc选项来使用pg_dump。

用法示例:

ssh production
pg_dump -C -Fp -f dump.sql -U postgres some_database_name
scp dump.sql development:
rm dump.sql
ssh development
psql -U postgres -f dump.sql

我努力了很多,最终让我在Rails 4中工作的方法是:

在旧服务器上

sudo su - postgres
pg_dump -c --inserts old_db_name > dump.sql

我必须使用postgres linux用户来创建转储。我还必须使用-c来强制在新服务器上创建数据库。——inserts告诉它使用INSERT()语法,否则对我来说是无效的:(

然后,在新服务器上,simpy:

sudo su - postgres
psql new_database_name < dump.sql

传输转储。我简单地使用“cat”来打印内容,而不是“nano”来重新创建它复制粘贴内容。

此外,我在两个数据库上使用的角色是不同的,所以我必须在转储中找到-替换所有的所有者名称。

如果你想在版本之间迁移(例如你更新了postgres,在localhost:5432上运行9.1,在localhost:5434上运行9.3),你可以运行:

pg_dumpall -p 5432 -U myuser91 | psql -U myuser94 -d postgres -p 5434

查看迁移文档。


转储数据库:pg_dump database_name_name > backup.sql


导入数据库:psql db_name < backup.sql