Radim Marek:PostgreSQL 18 的即时数据库克隆

Radim Marek:PostgreSQL 18 的即时数据库克隆

💡 原文英文,约1700词,阅读约需6分钟。
📝

内容提要

本文介绍了PostgreSQL的数据库克隆技术,重点在于利用模板数据库和文件复制方法实现快速克隆。通过PostgreSQL 15及以上版本的设置,可以在不占用额外空间的情况下快速创建数据库副本。使用现代文件系统(如ZFS、XFS)时,克隆操作几乎瞬时,但需确保源数据库在克隆时没有活动连接。

🎯

关键要点

  • PostgreSQL的数据库克隆技术利用模板数据库和文件复制方法实现快速克隆。
  • 在PostgreSQL 15及以上版本中,可以在不占用额外空间的情况下快速创建数据库副本。
  • 使用CREATE DATABASE命令时,PostgreSQL默认连接到template1,实际上是克隆该模板。
  • PostgreSQL 15引入了CREATE DATABASE ... STRATEGY参数,改变了数据库创建的默认行为。
  • WAL_LOG策略使得I/O操作更顺畅,但在克隆大数据库时可能会变慢。
  • FILE_COPY策略可以恢复到原始的快速克隆方法,并在PostgreSQL 18中引入了新的选项。
  • 现代文件系统(如ZFS、XFS)支持几乎瞬时的克隆操作,不会占用额外空间。
  • 克隆数据库时,PostgreSQL不复制数据,而是创建指向相同物理块的新元数据条目。
  • 更新克隆数据库中的数据时,会触发写入操作,导致物理存储逐渐分离。
  • 克隆操作的一个限制是源数据库在克隆时不能有活动连接。
  • 克隆只能在单一文件系统内进行,跨多个表空间的数据库无法克隆。
  • 在大多数云环境中,用户无法访问底层文件系统,无法配置克隆功能。

延伸问答

PostgreSQL 18的数据库克隆技术是如何实现的?

PostgreSQL 18通过利用模板数据库和文件复制方法,实现了快速的数据库克隆,克隆操作几乎瞬时且不占用额外空间。

在PostgreSQL中,克隆数据库时需要注意哪些限制?

克隆数据库时,源数据库不能有活动连接,并且克隆只能在单一文件系统内进行,跨多个表空间的数据库无法克隆。

如何在PostgreSQL中配置文件复制方法以实现快速克隆?

需要将配置文件中的file_copy_method设置为clone,并重新加载配置,以便利用现代文件系统的克隆功能。

PostgreSQL 15引入了哪些新特性来改善数据库克隆?

PostgreSQL 15引入了CREATE DATABASE ... STRATEGY参数,改变了数据库创建的默认行为,采用WAL_LOG策略以提高I/O操作的顺畅性。

使用现代文件系统进行数据库克隆有什么优势?

现代文件系统(如ZFS、XFS)支持几乎瞬时的克隆操作,不会占用额外空间,提升了克隆效率。

在PostgreSQL中,克隆数据库后如何处理数据更新?

克隆数据库中的数据更新会触发写入操作,导致物理存储逐渐分离,更新的行会在不同的物理地址上存储。

➡️

继续阅读