那么,让我给你一些背景。
我几周前才开始为这家公司工作,我是jr系统管理员,不是数据库管理员。实际上,我的老板也是同一时间开始的。前任老板不知道他在做什么,所以公司雇了我们来修理很多事情。
我们有一个合作伙伴开发了我们在这里使用的主要系统,数据库(Postgres)备份例程那时已经自动化(老老板不知道怎么做)。我的老板问这位合伙人备份/恢复程序是否正常,但反应并不自信,所以他问我是否可以通过测试。
我以前在数据库中做过备份/恢复,所以没有问题,但当我得到备份文件时,让我感到惊讶的是,它不是一个pg_dump文件,而是一堆名为“base”、“pg_clog”、“pg_logical”等的文件夹。因此,它们的备份只是一个shell脚本,可以复制所有数据库文件夹。仅该基本文件夹就超过32 is。
我的问题是:这是一种标准的或可接受的数据库备份方式吗?我问这个问题是因为我想知道,如果服务器发生了致命的硬件故障,我如何从这个文件夹中恢复另一个服务器中的数据库?
发布于 2017-08-10 18:28:43
它可能是一个“冷备份”,有人关闭数据库并复制PGDATA目录文件。如果是这样的话,它应该是一个有效的备份。您可以通过将整个目录复制到与数据库服务器具有相同架构的测试机器上进行测试,将该测试机器从网络中删除(以防它在启动时试图接触到某人),然后启动它。您还可以针对这个目录运行程序pg_controldata
。如果数据库在备份时被关闭,您将得到如下一行:
Database cluster state: shut down
这表明它是一个冷备份,应该是有效的,但它不是决定性的证据。
这可能是一个正确的热备份。如果是这样的话,目录应该有一个名为backup_label
的文件。但是,这并不能确定备份是否已经完成并正确地被接受。你需要测试备份。热备份可以完全独立,所有所需的WAL都位于pg_xlog中。或者,它只能与外部WAL存档一起使用。
最后,当数据库处于服务状态时,可能有人在没有经过适当步骤的情况下对数据库运行cp -r
或类似的操作,并创建了一个无用的备份。
您应该能够查看备份脚本,至少可以看到它试图做什么,这应该比从头开始对备份目录进行法医检查更容易。
https://dba.stackexchange.com/questions/183013
复制相似问题