有人有在实时系统上备份 /var 的好的解决方案吗?
到目前为止,我看到的所有建议都没有考虑到 /var 拥有居住数据,并且恢复在捕获时正在同时写入的文件可能会带来灾难性的后果。我绝对不会直接用副本备份 /var/lib/pgsql。
答案1
一般情况下我不备份 /var —— 应该根据各自手册中的备份程序备份 Postgres 之类的东西,并以类似的方式恢复(例如,只有白痴才会在正在运行的实例上进行恢复)。
如果您需要备份 /var 的特定子集(例如 postgres 的数据目录、openldap 的 BDB 目录等),您应该遵循软件供应商概述的适当程序,或运用良好的常识(确保文件处于静止状态等)
答案2
我使用与rsync
执行其他所有操作相同的方式备份 /var,但随后我使用数据库工具对数据库运行第二组备份,以进行数据转储(或在某些情况下进行热复制)。令人惊讶的是,事实证明文件系统备份比数据库数据备份更有用。
此外,我的数据库所在的驱动器都运行文件系统(或硬件),允许在某个时刻对整个文件系统进行快照。定期执行此操作是另一种确保数据安全无虞的好方法。
答案3
但如果出于某种原因您仍然希望对整个 /var 进行一致备份,您可以考虑将其挂载为 lvm 分区并拍摄 lvm 快照: http://tldp.org/HOWTO/LVM-HOWTO/snapshotintro.html http://tldp.org/HOWTO/LVM-HOWTO/snapshots_backup.html
您提到了 postgres 备份 - 为了使 postgres 拥有一致的备份,您可以使用 pg_dump 或二进制日志与 postgres 数据目录的快照组合(所谓的 PITR)http://www.postgresql.org/docs/9.0/static/continuous-archiving.html#BACKUP-BASE-BACKUP
没有什么灵丹妙药可以一次性备份所有内容并确保所有服务数据在逻辑上一致。