将Postgresql数据库从一台服务器移动到另一台服务器


9

我已经在家里创建了一个数千兆字节的(空间)数据库,我想将整个数据库从我的工作计算机中的一台计算机上移走。

没什么,我将在工作计算机上创建一个新的postgresql / postgis数据库实例。db用户在两台计算机上的名称可能相同也可能不同。

可能吗?我应该注意些什么?我该如何缓解疼痛?

我正在使用带有postgis扩展名的postgresql v9.1.5。Ubuntu12.04(内核3.2.0-31)


请参见StackOverflow上的类似线程,将PostgreSQL数据库复制到另一台服务器
罗勒·布尔克

Answers:


11

您可以运行数据库转储:

pg_dump yourdatabase | gzip -9 > outfile.sql.gz

然后再导入到工作计算机上的PostgreSQL中。这将花费相当长的时间,并且即使压缩后,生成的文件也可能在GB范围内,但应足够小以包含在USB密钥中。

在工作计算机上,创建新数据库并加载转储:

zcat outfile.sql.gz | psql yournewdatabase

如果连接速度很快(或花费时间),您甚至可以通过加密的SSH连接或rsync之类的工具通过Internet传输数据库。


1
用户/组特权如何?在我家,我有例如user1,但在工作中有user2。有关系吗?

2
不应该这样 当然,您必须在应用程序中设置正确的用户。由于这是您的家用PC,因此在转储之前,请尝试将user1重命名为user2并验证其全部正常。然后,传输应该没有问题。

3
使用pg_dumpall来转储数据库角色。
Frank Heikens 2012年

1
为了能够转储数据库,您需要安装与旧服务器上相同的postgresql版本,请参阅wiki.postgresql.org/wiki/Apt
rubo77

2

pg_dumpall是最安全的方法。无论如何,我建议在迁移之前先准备好所有东西。不过,最大的问题是,如果很大,它可能需要一段时间才能恢复。

您还可以复制数据目录,最好是在停止服务器后(可以使用pg_start_backup()代替停止,但是在执行该路由之前,请先查看所有有关时间点恢复的文档。该路由将使停机时间几乎为零)但是请注意,仅两个系统的OS和CPU架构相同时,您才能执行此操作。您不能以这种方式从Windows迁移到Linux或从i686迁移到x86-64。确保系统兼容。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.