我有一个无法安全杀死的进程:autovacuum:VACUUM public.mytable(防止环绕)
此表已被清除(除了由于硬件问题期间表损坏而无法删除的某些条目)并且无法删除,因为真空阻止了这一点。我不得不运行kill -9来停止这个过程并重新启动数据库,但是你无法禁用这个autovacuum(以防止[transaction]环绕),所以autovacuum会重新启动并立即被这个损坏的表卡住。
对此有何见解?
首先,关闭数据库服务器并将数据目录的物理副本放到安全的地方。然后你可以截断损坏的表的数据文件。例如。:
--Get datafile path
db=# SELECT pg_relation_filepath('corrupted_table');
pg_relation_filepath
----------------------
base/1234/56789
(1 row)
touch 56789
TRUNCATE TABLE corrupted_table;
希望这可以帮助。