我正在运行一个无法安全终止的进程: autovacuum:VACUUM public.mytable(以防止回绕)
该表已被清除(除了一些条目,由于硬件问题导致表损坏,这些条目无法删除),并且不能删除,因为真空阻止了该条目。我必须运行kill -9才能停止此过程并重新启动数据库,但是您不能禁用此自动清理(以防止[事务]环绕),因此自动清理会重新出现并立即被此损坏的表所卡住。
对此有何见识?
答案 0 :(得分:0)
首先,关闭数据库服务器,并将数据目录的物理副本复制到安全的地方。 然后,您可以截断损坏表的数据文件。例如:
--Get datafile path
db=# SELECT pg_relation_filepath('corrupted_table');
pg_relation_filepath
----------------------
base/1234/56789
(1 row)
touch 56789
TRUNCATE TABLE corrupted_table;
希望这会有所帮助。