PostgreSQL:即使读取访问也会更改磁盘上的数据文件,从而导致使用PGR进行大型增量备份
我们正在使用PGbackback将数据库备份到AmazonS3。我们每周进行一次完整备份,每隔一天进行一次增量备份。 我们的数据库大小约为1TB,完整备份约为600GB,增量备份也约为400GB 我们发现,即使对数据库进行读取访问(纯select语句),也会导致底层数据文件(in/usr/local/pgsql/data/base/xxxxxx)发生更改。这会在AmazonS3上产生大量的增量备份和非常大的存储(成本) 通常,具有低索引名(例如391089.1)的文件在读访问时会发生更改 在更新时,我们会看到一个或多个文件中的更改—索引可能与表中行的时间相关 还有一些事实:PostgreSQL:即使读取访问也会更改磁盘上的数据文件,从而导致使用PGR进行大型增量备份,postgresql,postgresql-13,pgbackrest,Postgresql,Postgresql 13,Pgbackrest,我们正在使用PGbackback将数据库备份到AmazonS3。我们每周进行一次完整备份,每隔一天进行一次增量备份。 我们的数据库大小约为1TB,完整备份约为600GB,增量备份也约为400GB 我们发现,即使对数据库进行读取访问(纯select语句),也会导致底层数据文件(in/usr/local/pgsql/data/base/xxxxxx)发生更改。这会在AmazonS3上产生大量的增量备份和非常大的存储(成本) 通常,具有低索引名(例如391089.1)的文件在读访问时会发生更改 在更新
- Postgres 13.1版
- 数据库正在docker容器中运行(docker版本20.10.0)
- 操作系统是CentOS 7
我们在纯数据库上测试,没有任何其他资源访问数据库。这是正常的。我能马上想到的一些案例有:
或设置提示位的其他SQL语句 这是访问数据的后续语句的快捷方式,因此它们不再需要查阅提交日志选择
- a
写入行锁选择。。。用于更新
- 自动真空清除死区版本
这些是
或删除
的剩余内容更新
- 自动真空冻结旧的可见行版本 如果事务ID计数器环绕,这对于防止数据损坏是必要的
- 切勿对其执行
、插入
或更新
删除
- 在表上运行
,确保没有并发事务VACUUM(FREEZE)