【问题标题】:Copying a tablespace from one postgresql instance to another将表空间从一个 postgresql 实例复制到另一个
【发布时间】:2010-01-22 01:32:54
【问题描述】:

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

假设...

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

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

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

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

【问题讨论】:

  • 一般来说,这是可能的——我在 Debian Linux 上这样做。但我不知道所有平台的解决方案都是一样的。你在哪个平台上?
  • 平台是 CentOS 5.4(添加到问题中)

标签: database postgresql tablespace


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-27
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多