我正在开发开发系统,并且我一直在恢复用于Dev目的的数据库,例如“ Foo”。当我通过纠结工作时,我刚刚运行了Drop Database FOO。但是,我很快意识到自己在磁盘上吃了所有空间。废话。

从我以前删除的数据库(foo)的数据库中,真空吸尘器是否已完全从其他逻辑数据库中获得了空间?我从不同的逻辑数据库中尝试了此操作,并收回了可用空间,但是我认为这不足以说明我进行的所有创建数据库/DROP数据库调用。它可能只是我从中运行的逻辑数据库。

必须有一种方法可以在不进行总数据库初始化的情况下回收该空间吗?

编辑

因此,我从备份中重新开始数据库,大致关注 这些步骤. 。还原后,我在磁盘上收回了大量空间!这暂时有效,但是关于如何清理丢弃数据库的任何帮助仍然很有用。

编辑2

因此,我设法收集了有关此问题的更多信息...这是我想到的例子:

Initial partition size:
                       Size   Used  Avail Use% Mounted on
                        25G   8.1G    16G  35% /apps1

After creating my new database and populating it:
                        25G    18G   6.4G  73% /apps1

After Dropping the database using "DROP database mydb" from a separate logical DB:
                        25G    13G    11G  56% /apps1

在我看来,新的DB在磁盘上占用了〜9.6 GB。但是,放下它后,回收的磁盘空间只会增长〜4.6克。 因此,大约有5 GB的空间使我想知道发生了什么!

当我重新创建,填充和掉落时,它将继续这一周期。

有谁知道发出“ Drop Database”命令之后徘徊了什么?

没有正确的解决方案

其他提示

尝试 sudo lsof| grep deleted 并检查是否出现任何PostgreSQL进程。此命令查找已删除的文件,但其文件描述符仍然通过任何过程打开。另一个副作用是 df -hdu -sh / 有所不同。这是因为 du 查看文件系统并总结所有文件的大小,以及 df 看物理设备。

我刚刚遇到了一个数据库,该数据库没有在 DROP table 那就是原因。

我知道的唯一解决方案是重新启动数据库。也许您可以尝试发送重新加载(叹气)。

我的理解是,当您将数据库丢弃,然后它的文件就消失了。

除非您使用表空间,否则每个数据库应在$ pgdata/base下的子目录中具有其数据。使用我的一台服务器示例(作为Postgres用户):

-bash-3.2$ cd $PGDATA/base

-bash-3.2$ ls | wc -l
9

-bash-3.2$ du -sh `ls`
6.9M    1
6.7M    12690
6.9M    12698
11M     16391
341M    17339
3.8G    17341
11M     17343
6.8M    19047
8.0K    pgsql_tmp

现在,如果我们创建一个新数据库,那么$ pgdata/base下应该有一个子目录:

-bash-3.2$ createdb foo

-bash-3.2$ ls | wc -l
10

-bash-3.2$ du -sh `ls`
6.9M    1
6.7M    12690
6.9M    12698
11M     16391
341M    17339
3.8G    17341
11M     17343
6.8M    19047
6.9M    83637
8.0K    pgsql_tmp

这就是我们看到的($ pgdata/base/83637是新数据库的子目录)。

删除该数据库还应删除数据文件:

-bash-3.2$ dropdb foo

-bash-3.2$ ls wc -l
9

-bash-3.2$ du -sh `ls`
6.9M    1
6.7M    12690
6.9M    12698
11M     16391
341M    17339
3.8G    17341
11M     17343
6.8M    19047
8.0K    pgsql_tmp

这就是我们所期望的 - $ pgdata/base/83637目录已经消失了,应该没有真空。

您确定没有其他东西在吃您的磁盘空间吗?您的其他数据库之一?日志文件?

您可以尝试的东西是:

-bash-3.2$ cd $PGDATA
-bash-3.2$ du -sh `ls` > ../pre_sizes

做各种数据库的内容,创建,掉落等,然后:

-bash-3.2$ du -sh `ls` > ../post_sizes

要了解磁盘空间的去向。

许可以下: CC-BY-SA归因
不隶属于 dba.stackexchange
scroll top