暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

磐维数据库坏块处理

北子 2024-10-28
265


一、坏块问题描述

磐维数据库存储发生故障,导致数据丢失,在启动过程中提示产生坏块无法启动,如下图:


二、排查处理阶段

1) 强制启动数据库

因系统产生的坏块导致无法启动,尝试通过修改 ignore_checksum_failure和zero_damaged_pages参数进行重启。

ignore_checksum_failure:设置读取数据时是否忽略校验信息检查失败(但仍然会告警),继续执行可能导致崩溃,传播或隐藏损坏数据,无法从远程节点恢复数据及其他严重问题。

取值范围: 布尔型

on表示忽略数据校验错误。

off表示数据校验错误正常报错。

默认值: off

zero_damaged_pages控制检测导致磐维报告错误的损坏的页头,终止当前事务。设置为on时,会导致系统报告一个警告,把损坏的页面填充为零然后继续处理。这种行为会破坏数据,也就是所有在已经损坏页面上的行记录。但是它允许绕开坏页面然后从表中尚存的未损坏页面上继续检索数据行。因此它在因为硬件或者软件错误导致的崩溃中进行恢复是很有用的。通常不应该把它设置为on,除非不需要从崩溃的页面中恢复数据。

默认值: off

编辑postgresql.conf设置ignore_checksum_failurezero_damaged_pageson

通过以下命令启动数据库:

gs_ctl start   -D start  $datadir

2) 排查原因并处理

将告警的坏块id带进pg_class的relfilenode排查,如下图可查出其中一个引起坏块的原因为snap_global_statio_all_indexes这个索引:


通过rebuild index 命令重建snap_global_statio_all_indexes

ALTER INDEX snap_global_statio_all_indexes REBUILD;

其余的原因可参照select relname from pg_class where relfilenode=坏块id来定位。

3) 关闭参数并重启

解决完坏块问题后就可以修改ignore_checksum_failurezero_damaged_pages参数为off,并进行重启。


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论