我们正在使用 pgbackrest 将我们的数据库备份到 Amazon S3。我们每周进行一次完整备份,每隔一天进行一次增量备份。我们的数据库大小约为 1TB,完整备份约为 600GB,增量备份也约为 400GB!
我们发现即使是对数据库的读访问(纯选择语句)也会影响底层数据文件(在 /usr/local/pgsql/data/base/xxxxxx 中)的变化。这会导致大量增量备份以及 Amazon S3 上的非常大的存储(成本)。
通常具有低索引名称的文件(例如 391089.1)在读取访问时会发生变化。
在更新时,我们会看到一个或多个文件的变化——索引可能与表中行的年龄相关。
更多事实:
- Postgres 版本 13.1
- 数据库在 docker 容器中运行(docker 版本 20.10.0)
- 操作系统是 CentOS 7
我们在多台服务器上看到了这种现象。
有人可以解释一下,为什么 postgresql 会更改纯读访问的数据文件?我们在没有任何其他资源访问数据库的情况下在纯数据库上进行了测试。