最少的PostgreSQL数据文件集

时间:2019-02-24 16:23:04

标签: postgresql automated-tests snapshot

背景:我运行依赖于PostgreSQL数据库的端到端测试。我需要这些测试要快速,可并行化,确定性和孤立。

因此,我想尽快地重新创建数据库-包括模式,数据和索引。我创建一个基本图像:

  1. 启动PostgreSQL实例
  2. 运行SQL语句
  3. 运行VACCUM FULL
  4. 停止实例
  5. tar /var/lib/postgresql/data中的文件

然后对于每个测试,我迅速解压缩该图像并运行PostgreSQL实例。


问题:,所有方法都可以,但是磁盘文件似乎超出了必要。一个相当小的数据库仍然是64MB。

如何为文件级还原实现较小的文件集?缩小现有文件的大小?从备份中排除一些文件?

1 个答案:

答案 0 :(得分:0)

感谢您阐明用例:

  

我运行依赖于PostgreSQL数据库的端到端测试。我需要这些测试要快速,可并行化,确定性和孤立。

     

因此,我想尽快地重新创建数据库-包括模式,数据和索引。

最初的想法-通过路径定位一组特定的文件并还原这些文件-很脆弱,因为路径可以并且确实随着不同的PostgreSQL版本而改变。

正如评论中所讨论的,更确定性的方法是使用更通用的容器技术。 suitable for the use case是一种很常见的Docker。也有various other container options

Docker的文档中有一个how to set up a container running PostgreSQL的示例。