gpt4 book ai didi

postgresql - Azure 托管 PostgreSQL 服务上的 VACUUM FULL 中断消耗了大量空间。我该如何恢复它?

转载 作者:行者123 更新时间:2023-12-04 14:56:34 29 4
gpt4 key购买 nike

如果您托管自己的服务器,我遇到了一个已知解决方案的问题,但我不知道如何在 Azure 托管 PostgreSQL 数据库实例上解决。

我在 Azure 托管 PostgreSQL 数据库实例上执行 VACUUM FULL。数据库中的绝大多数数据都在一张大表中。

数据库实例分配有 250GB。在清理期间,我跟踪了 Azure 上的服务器指标,可以看到空间使用量从可用空间的约 30% 增长到可用空间的约 60%。然而,那时服务器似乎挂起了。指标停止报告数据(就好像服务器完全空闲一样),我无法联系它。

我在 Azure 上重新启动了数据库实例并再次执行了 VACUUM FULL。这次 VACUUM 期间,空间使用率从 60% 增长到几乎 90%,但 VACUUM 顺利完成,总体使用率下降到略低于 60%。

服务器的性能现在很好,但即使自从我开始第一次清理以来没有向服务器添加任何数据,消耗的空间量也大约增加了一倍。由于最初的真空失败,我损失了大约 80GB 的空间。

通过搜索网络,我发现这种情况可能是由于真空创建的临时文件由于真空中断而没有正确删除造成的。如果我运行自己的服务器,那么很容易,但我不知道如何在托管服务器上恢复空间。

是否有已知的程序可以解决此问题(除了导出数据并重新创建实例之外?)

最佳答案

看起来您在 VACUUM (FULL) 过程中使数据库服务器崩溃了。这会在数据目录中产生一些您无法删除的“孤立”文件。

如果您无权访问文件系统,则无法回收该空间,即使有访问权限也是困难且危险的(手动修改数据目录存在风险且不受支持)。

我能想到的唯一补救措施是创建一个新数据库并使用 pg_dump/pg_restore 复制数据库。

下次,取消VACUUM而不是让服务器崩溃。那会清理掉垃圾。

关于postgresql - Azure 托管 PostgreSQL 服务上的 VACUUM FULL 中断消耗了大量空间。我该如何恢复它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67861296/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com