3

我正在寻找一种将数据库从一台 postgresql 服务器快速“克隆”到另一台服务器的方法。

假设...

  • 我有一个在 HostA 上运行的 postgresql 服务器,服务于 2 个数据库
  • 我在 HostA 上安装了 2 个设备,每个设备都存储其中一个数据库的数据(即 1 个数据库 => 1 个表空间 => 1 个设备)
  • 我能够通过一些谨慎的方法获得“安全”的时间点快照
  • 我能够始终如一地安全地生成所使用的 2 个设备中的任何一个的克隆(我什至可以假设两个数据库都只接收读取)
  • 涉及的主机是 CentOS 5.4

是否可以在 HostB 上托管第二个 postgresql 服务器,安装其中一个克隆设备并使相应的数据库“弹出”存在?(有点像在 MySQL 中复制 MyISAM 表文件)。

如果这是可能的,那么机制是什么(即我应该研究什么 DDL 或 pg 命令)?

对我来说,能够相互隔离地移动各个数据库很重要。但是,如果这不可能,类似的方法是否可以在服务器级别工作(尝试通过将 datadir 复制到具有相同 postgresql 安装的主机来克隆和重新生成服务器)?

4

1 回答 1

2

不容易,因为数据库之间共享许多文件,这意味着同一安装中的每个数据库都依赖于此。

您可以在服务器级别或集群级别执行此操作,但不能在单个数据库级别执行此操作。只要确保复制/克隆整个数据目录和所有外部表空间。只要您可以原子地进行克隆(在同一文件系统上或使用可以跨文件系统进行原子克隆的系统),您甚至不需要停止 hostA 上的数据库来执行此操作。

于 2010-01-22T18:10:52.950 回答