我收到了错误
ERROR: invalid page header in block 411 of relation "t_value_time"
Run Code Online (Sandbox Code Playgroud)
在我的PostgreSQL数据库中.这种情况在不同的机器上发生.有没有办法防止它发生,或者至少告诉PSQL忽略无效块上的数据并继续前进?
我宁愿丢失块中的数据,让他跳过它,读取剩下的数据.有没有办法告诉PSQL跳过这个块?
Vla*_*lad 27
警告:您将丢失一些数据!
我们设法通过发出以下命令来克服它(崩溃的DEV VM):
database=# SET zero_damaged_pages = on;
SET
database=# VACUUM FULL damaged_table;
WARNING: invalid page header in block xxx of relation base/yyy/zzz; zeroing out page
[..]
REINDEX TABLE damaged_table;
Run Code Online (Sandbox Code Playgroud)
通过pwkg.ork修复.
每次都是同一个块吗?
据我所知,无效块的最常见原因是硬件。Red Hat 有一个实用程序pg_filedump,可以将“PostgreSQL 堆、索引和控制文件格式化为人类可读的形式”。我认为他们不支持任何高于 8.4.0 的 PostgreSQL 版本,但我可能是错的。
您希望通过使用可靠、彻底的磁盘、RAM 和 NIC 诊断来证明您的硬件良好。
归档时间: |
|
查看次数: |
23113 次 |
最近记录: |