我昨晚运行 pg_dump 来备份一些 111Gb 数据库:
time pg_dump -j 5 -Fd -Z 1 db_profans -f /backup-nfs/
但是,今天早上突然,数据库宕机了。我检查系统目录。根已满。PS:我没有任何访问服务器的权限,我们有不同的人来管理它。
到底是怎么回事 ?为什么所有备份文件都移动到 root ?或者其他导致根目录填满的东西,比如备份期间创建的 WAL 文件或日志文件堆积?我确实有这个数据库的复制,但它真的很小,每天只同步 300 条记录。而且我也没有打开任何日志记录..
如何手动删除所有备份文件?
更新:
我发现问题的原因实际上是归档过程没有写入外部磁盘。该文件夹“/Archive”,据说是保存归档的 WAL,实际上是在“根”内创建的!我不知道,因为它不像我前几天要求的那样。现在,当我删除存档的 WAL 时,服务器重新启动并运行。所以原因不是来自 pg_dump 进程。
看起来“其他人”没有很好地设置数据库。您在根文件系统中没有数据库文件。理想情况下,您创建三个文件系统:一个用于数据文件,一个用于日志文件,
pg_wal
一个用于日志文件。这样,数据库数据就无法填满您的根文件系统。由于您
pg_dump
在数据库机器上执行(为什么??),您的备份最终在同一个(并且唯一的)文件系统中,并且您碰巧填满了磁盘。不要那样做!