背景:我运行依赖于PostgreSQL数据库的端到端测试。我需要这些测试快速,可并行化,确定性和隔离。
因此,我想尽快重复创建数据库 - 包括模式,数据和索引。我创建了一个基本图像:
VACCUM FULL
/var/lib/postgresql/data
中的文件对于每个测试,我然后快速解压该图像并运行PostgreSQL实例。
问题:这一切都有效,但磁盘文件似乎比必要的大。一个相当小的数据库仍然是64MB大小。
如何为文件级还原实现较小的文件集?缩小现有文件的大小?从备份中排除一些文件?
感谢您说明您的用例:
我运行依赖于PostgreSQL数据库的端到端测试。我需要这些测试快速,可并行化,确定性和隔离。
因此,我想尽快重复创建数据库 - 包括模式,数据和索引。
最初的想法 - 通过路径定位特定的文件集并恢复它们 - 是脆弱的,因为路径可以并且确实随着不同的PostgreSQL版本而改变。
正如评论中所讨论的,更加确定的方法是使用更通用的容器技术;一个很好的被践踏和suitable for the use case是Docker。还有various other container options。
Docker的文档有一个how to set up a container running PostgreSQL的例子。