首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgresql自动真空以防止在损坏的表上出现环绕

Postgresql自动真空以防止在损坏的表上出现环绕
EN

Stack Overflow用户
提问于 2018-09-06 17:11:34
回答 1查看 1.1K关注 0票数 0

我有一个无法安全终止的进程:自动真空:真空public.mytable (以防止绕线)

此表已被清除(除了一些由于该表在硬件问题期间损坏而无法删除的条目外),并且无法删除,因为真空正在阻止此操作。我不得不运行杀死-9来停止这个进程并重新启动数据库,但是您不能禁用这个自动真空(以防止事务包装),因此自动真空会重新出现,并立即被这个损坏的表卡住。

对此有什么见解吗?

EN

回答 1

Stack Overflow用户

发布于 2018-09-06 18:59:40

首先,关闭数据库服务器,并将数据目录的物理副本放到一个安全的位置。然后,您可以截断损坏表的数据文件。例如:

代码语言:javascript
复制
--Get datafile path
db=# SELECT pg_relation_filepath('corrupted_table');
 pg_relation_filepath 
----------------------
 base/1234/56789
(1 row)
  1. 输入数据库目录(例如: data/base/1234)
  2. 将文件重命名为56789_bkp
  3. 创建一个名为56789:touch 56789的空文件
  4. 启动数据库服务器
  5. 发出截断表强制PostgreSQL覆盖数据文件:TRUNCATE TABLE corrupted_table;
  6. 你可能需要吸尘,然后再做备份。

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52209140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档