KingbaseES V8R6数据库运维案例之---索引坏块故障处理
案例说明:
在执行表数据查询时,出现下图所示错误,索引故障导致表无法访问,后重建索引问题解决。本案例复现了此类故障解决过程。

适用版本:
KingbaseES V8R3/R6
一、创建测试环境
# 表结构信息
prod=# \d+ test1
Table "public.test1"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
--------+---------+-----------+----------+---------+----------+--------------+-------------
id | integer | | not null | | plain | |
v_name | varchar | | | | extended | |
Indexes:
"test1_pkey" PRIMARY KEY, btree (id)
"test1_name_ind" btree (v_name)
Access method: heap
# 插入测试数据
prod=# insert into test1 values (generate_series(1,10000),'usr'||generate_series(1,10000));
INSERT 0 10000
prod=# select count(*) from test1;
count
-------
10000
(1 row)
# 查看索引应用
prod=# explain analyze select * from test1 where v_name='usr2';
QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------
Index Scan using test1_name_ind on test1 (cost=0.29..8.30 rows=1 width=11) (actual time=0.023..0.024 rows=1 loops=1)
Index Cond: ((v_name)::text = 'usr2'::text)
Planning Time: 0.055 ms
Execution Time: 0.038 ms
(4 rows)
二、模拟数据文件故障
1、查看索引文件存储路径
prod=# select pg_relation_filepath('test1_name_ind');
pg_relation_filepath
----------------------
base/16385/26800
(1 row)
2、模拟数据文件被破坏
[kingbase@node102 data]$ ls -lh base/16385/26800
-rw------- 1 kingbase kingbase 240K Nov 17 15:01 base/16385/26800
[kingbase@node102 data]$ dd if=/dev/zero of=/data/kingbase/v8r6_c6/data/base/16385/26800 bs=8k count=2
2+0 records in
2+0 records out
16384 bytes (16 kB) copied, 0.000147959 s, 111 MB/s
[kingbase@node102 data]$ ls -lh base/16385/26800
-rw------- 1 kingbase kingbase 16K Nov 17 15:04 base/16385/26800
# 如下所示索引故障导致表访问错误
prod=# select * from test1;
ERROR: index "test1_name_ind" contains unexpected zero page at block 0
HINT: Please REINDEX it.
三、重建索引解决故障
1、查看表索引信息
prod=# \d+ test1;
Table "public.test1"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
--------+---------+-----------+----------+---------+----------+--------------+-------------
id | integer | | not null | | plain | |
v_name | varchar | | | | extended | |
Indexes:
"test1_pkey" PRIMARY KEY, btree (id)
"test1_name_ind" btree (v_name)
Access method: heap
2、重建索引
# 索引重建
prod=# reindex index test1_name_ind;
REINDEX
#如下所示,重建索引后表数据访问正常
prod=# select * from test1 limit 3;
id | v_name
----+--------
1 | usr1
2 | usr2
3 | usr3
(3 rows)
prod=# select * from test1 where v_name='usr2';
id | v_name
----+--------
2 | usr2
(1 row)
prod=# explain analyze select * from test1 where v_name='usr2';
QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------
Index Scan using test1_name_ind on test1 (cost=0.29..8.30 rows=1 width=11) (actual time=0.023..0.024 rows=1 loops=1)
Index Cond: ((v_name)::text = 'usr2'::text)
Planning Time: 0.055 ms
Execution Time: 0.038 ms
(4 rows)
四、总结
对于KingbaseES数据库,索引块的损坏会影响到表数据的正常访问,对于索引块故障处理比较简单,直接重建索引一般都可以解决此类问题。
KingbaseES V8R6数据库运维案例之---索引坏块故障处理的更多相关文章
- 数据库运维之路——关于tempdb暴增实战案例
转眼间,2021年的第一个季度已经到了最后一个月了,由于疫情原因,最近一段时间一直在北京,基本上没有出差,每天上班下班的日子感觉时间过的好快,新的一年继续努力奋斗啊. 仔细回想一下,自己踏入到sql ...
- Oracle数据库运维优化六脉神剑口诀
我们知道数据库性能是数据库运维中至关重要的一个部分,据传在Oracle数据库的江湖中也有威力无比的六脉神剑技能,下面与大家免费分享Oracle大师们广为流传的六脉神剑口诀,一般人我不告诉他哦:) 少商 ...
- MySQL数据库运维课程
MySQL数据库运维课程 http://www.dataguru.cn/article-4834-1.html?union_site=comm100 课程大纲 第一课:机器选型.系统规划 第二课:安装 ...
- 一个兼职DBA的数据库运维经验 小米科技 xx@xiaomi.com 2011
一个兼职DBA的数据库运维经验 小米科技 xx@xiaomi.com 2011 内存扩容 16G->64G ,调大bp后,凌晨说监控物理内存有余量情况下,开吃swap,内存泄露措施1 定时 ...
- 数栈运维实例:Oracle数据库运维场景下,智能运维如何落地生根?
从马车到汽车是为了提升运输效率,而随着时代的发展,如今我们又希望用自动驾驶把驾驶员从开车这项体力劳动中解放出来,增加运行效率,同时也可减少交通事故发生率,这也是企业对于智能运维的诉求. 从人工运维到自 ...
- MySQL数据库运维的五大指标
如何评价一个公司数据库运维水平的高低?用什么来进行横向与纵向对比?自动化平台建设的目标是什么?必须有相应的指标体系来指导,此指标体系必须满足以下条件: • 可以用数字来测算和衡量 • 最终指标,而不是 ...
- PG数据库运维工具要覆盖哪些能力
目前的国产数据库中,很多产品都是以PG社区版代码作为研发起点的,还有一些产品是基于openGauss开源项目的.这些数据库的基础特性都和社区版的PG数据库类似,不过也做了一定的拓展.不过从使用与运维上 ...
- KingbaseES V8R6集群管理运维案例之---repmgr standby switchover故障
案例说明: 在KingbaseES V8R6集群备库执行"repmgr standby switchover"时,切换失败,并且在执行过程中,伴随着"repmr stan ...
- KingbaseES V8R6集群运维案例之---repmgr standby promote应用案例
案例说明: 在容灾环境中,跨区域部署的异地备节点不会自主提升为主节点,在主节点发生故障或者人为需要切换时需要手动执行切换操作.若主节点已经失效,希望将异地备机提升为主节点. $bin/repmgr s ...
- 运维案例 | Exchange2010数据库损坏的紧急修复思路
关注嘉为科技,获取运维新知 Exchange后端数据库故障,一般都会是比较严重的紧急故障,因为这会直接影响到大面积用户的正常使用,而且涉及到用户数据.一旦遇到这种级别的故障,管理员往往都是在非常紧 ...
随机推荐
- Java I/O 教程(十 一) BufferedWriter和BufferedReader
Java BufferedWriter 类 Java BufferedWriter class 继承了Writer类,为Writer实例提供缓冲. 提升了写字符和字符串性能. 类定义: public ...
- 【LeetCode贪心#01】分饼干,贪心算法入门(入了但是还没完全入)
分饼干 力扣题目链接(opens new window) 假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干. 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子 ...
- 【Azure App Service】Web Job 报错 UNC paths are not supported. Defaulting to Windows directory.
问题描述 PHP的Web Job,通过artisan来配置路径启动PHP任务,相关启动脚本如下: artisan_path = "d:\\home\\site\\wwwroot"; ...
- 【Azure 存储服务】.NET7.0 示例代码之上传大文件到Azure Storage Blob (二)
问题描述 在上一篇博文([Azure 存储服务].NET7.0 示例代码之上传大文件到Azure Storage Blob (一):https://www.cnblogs.com/lulight/p/ ...
- 【Azure 应用服务】如何关掉App Service/Function App的FTP部署, 使之变成FTPS
问题描述 如何关掉App Service/Function App的FTP部署, 使之变成FTPS方式呢? 问题解答 在应用服务/函数应用的配置下选择右边的常规设置,然后修改FTP状态为"仅 ...
- 【Azure 事件中心】在Windows系统中使用 kafka-consumer-groups.bat 查看Event Hub中kafka的consumer groups信息
问题描述 使用 Apache Flink 连接支持 Apache Kafka的Azure Event Hub后,由于消费端的Consumer Group是动态创建,在门户页面和Service Bus ...
- [C++逆向] 7 变量在内存中的位置和访问方式
目录 全局变量和局部变量的区别 局部静态变量 有意思的 堆变量 变量类型 作用域 可访问 全局变量 进程作用域 整个进程可访问 静态变量 文件作用域 当前代码文件可访问 局部变量 函数作用域 函数内可 ...
- Java 创建类,对象+调用方法
1 //测试类 2 public class PersonTest 3 { 4 public static void main(String[] args) 5 { 6 //创建Person类的对象 ...
- Java与sql中的字符串表示
在 Java 中,双引号 "" 用于表示字符串字面量,而单引号 '' 用于表示字符字面量.这意味着在 Java 中,您可以使用双引号来包围包含任意数量字符的字符串,包括零个字符(空 ...
- jenkins配置从git指定分支下载代码,打包部署jar包
1.如何构造一个jenkins部署? 1.1 目标 从git上指定分支下载代码,打包并发布到指定机器上,启动. 1.2 实现 如果已有项目,直接copy一份配置即可,修改一下即可使用 如果没有配置好的 ...