将一个PostgreSQL实例的表空间复制到另一个实例

3
我正在寻找一种快速“克隆”一个数据库从一个postgresql服务器到另一个的方法。
假设...
- 我有一个运行在HostA上的postgresql服务器,为2个数据库提供服务 - 我在HostA上挂载了两个设备,每个设备存储一个数据库的数据(即1个数据库=>1个表空间=>1个设备) - 我能够通过一些谨慎的方法获得“安全”的时间点快照 - 我能够一贯而安全地产生任何使用的2个设备的克隆(我甚至可以假设两个数据库只接收读取) - 所涉及的主机是CentOS 5.4
在HostB上托管第二个postgresql服务器,挂载其中一个克隆设备并让相应的数据库“弹出”到存在,是否可能?(有点像在MySQL中复制MyISAM表文件时)
如果这样可能,机制是什么(即我应该查看哪个DDL或pg命令)?
对我来说,能够以各自孤立的方式移动单个数据库非常重要。但如果这不可能,那么类似的方法是否适用于服务器级别(尝试通过将datadir复制到具有相同postgresql安装的主机来克隆和重新生成服务器)?

一般来说,在Debian Linux上是可能的。但我不知道所有平台的解决方案是否相同。你在哪个平台上? - Wayne Conrad
平台将是CentOS 5.4(已添加到问题中) - Sebastian
1个回答

2
不容易,因为有许多文件在数据库之间共享,这意味着同一安装中的每个数据库都依赖于此。
您可以在服务器级别或集群级别执行此操作,但不能在单个数据库级别执行。只需确保复制/克隆整个数据目录和所有外部表空间即可。只要您可以原子地进行克隆(无论是在同一文件系统上还是使用可以在文件系统间进行原子克隆的系统),甚至无需停止主机A上的数据库即可执行此操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接