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

use*_*025 11 postgresql

我在家里创建了一个(空间)数据库,它有几个 GB,我想从我工作的一台计算机上移动整个数据库。

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

是否可以?我应该注意什么?我怎样才能做到无痛?

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

小智 13

您可以运行数据库的转储:

pg_dump yourdatabase | gzip -9 > outfile.sql.gz
Run Code Online (Sandbox Code Playgroud)

然后在您的工作计算机上导入回 PostgreSQL。这将需要相当长的时间,并且生成的文件,即使被压缩,也可能在千兆字节范围内,但应该足够小以包含在 USB 密钥中。

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

zcat outfile.sql.gz | psql yournewdatabase
Run Code Online (Sandbox Code Playgroud)

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

  • 使用 pg_dumpall 转储数据库角色。 (3认同)
  • 它不应该。当然,您必须在应用程序中设置正确的用户。由于它是您的家用 PC,因此在转储之前尝试将 user1 重命名为 user2 并验证它是否一切正常。那么转移应该是没有问题的。 (2认同)

Chr*_*ers 5

pg_dumpall 是最安全的方法。无论如何,我建议在迁移之前带上一个垃圾袋。但它的一个大问题是,如果它很大,可能需要一段时间才能恢复。

您还可以复制数据目录,最好是在停止服务器之后(您可以使用 pg_start_backup() 代替停止,但在执行该路线之前请参阅有关时间点恢复的所有文档。该路线将允许近乎零的停机时间但是请注意,只有两个系统上的操作系统和 CPU 架构相同时,您才能执行此操作。您不能以这种方式从 Windows 移动到 Linux 或从 i686 移动到 x86-64。还要按顺序检查操作系统内核版本以确保系统兼容。