ngo*_*oue 3 postgresql replication postgresql-9.2
我需要一些帮助来了解如何使用存档的 WAL 文件以及何时可以清理它们。
目前我们有一个主数据库复制到从属数据库,但我们的主数据库服务器经常会因为使用archive_commandbuild up归档的文件而耗尽磁盘空间,我们必须手动删除它们。如果我们必须手动删除旧的存档 WAL 文件,我觉得我们错过了一些东西,因为文件系统磁盘空间不足...
话虽如此,我不确定我对复制过程的了解足以开始删除文件并确信我没有搞砸任何事情。我们的从站是使用由创建的归档文件archive_command还是仅依赖$PG_DATA/pg_xlog目录中的文件来与主站保持一致的状态?
如果是这种情况,并且我们从文档:pg_dump每六个小时做一次我们的主,我是否可以更新我们的备份脚本以清除开始时存在的所有存档文件pg_dump(pg_dump当然一旦完成)?
注意:pg_dump 和 pg_dumpall 不生成文件系统级备份,不能用作连续归档解决方案的一部分。此类转储是合乎逻辑的,并且不包含 WAL 重放所需的足够信息。
我只想确保无论我们如何清理存档文件,我们仍然拥有继续复制所需的内容,并且能够自上次基本备份以来执行 PITR。
我们的存档命令是cp %p /var/lib/postgresql/9.2/archive/%f,这里是我们recovery.conf从奴隶的文件:
standby_mode = 'on'
primary_conninfo = 'host=<ip-address> port=<port> user=rep password=<password> sslmode=require'
trigger_file = '/tmp/postgresql.trigger.5432'
Run Code Online (Sandbox Code Playgroud)
WAL 文件是所有已发生交易的记录......但仅此而已 - 本质上是之前状态和之后状态之间的增量。这意味着在应用任何 WAL 文件之前,您必须有一个 BASE 才能开始。
如果您在没有创建新 BASE 的情况下清除 WAL 档案,那么当您尝试从它们恢复您的数据库(通过 PITR)时,您将遇到麻烦。
如果您要删除 WAL 文件,那么您需要确保您有一个有效的基础,以便之后再次构建。
阅读有关 WAL 归档的文档以获取更多信息。
在流式复制方面,我认为只使用位于 pg_xlog 中的文件...(文件在发送之前没有存档,IIRC)
如果是这种情况,并且我们每六个小时执行一次主服务器的 pg_dump,我是否可以更新我们的备份脚本以清除 pg_dump 开始时存在的所有存档文件(当然一旦 pg_dump 完成)?
不完全... pg_dump 创建了一个文件,其中包含可以提供给 pg_restore 的整个数据库的信息...对于 PITR,您实际上需要通过复制数据库文件和 WAL 文件来创建文件级“备份”(发出 pg_start_backup 后)
| 归档时间: |
|
| 查看次数: |
12160 次 |
| 最近记录: |