将表空间从一个postgresql实例复制到另一个

时间:2010-01-22 01:32:55

标签: database postgresql tablespace

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

...假设

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

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

如果可能的话,机制是什么(即我应该查看什么DDL或pg命令)?

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

1 个答案:

答案 0 :(得分:2)

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

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