案例说明:
在Oracle11.2版本之后,DataGuard 若搭建实时应用日志的物理备库,那么在主库数据文件少 量坏块的情况下,可以利用ABCR技术快速修复坏块。
Starting in Oracle Database 11g Release 2 (11.2), the primary database automatically attempts to repair the corrupted block in real time by fetching a good version of the same block from a physical standby database. This capability is referred to as automatic block repair, and it allows corrupt data blocks to be automatically repaired as soon as the corruption is detected. Automatic block repair reduces the amount of time that data is inaccessible due to block corruption. It also reduces block recovery time by using up-to-date good blocks in real-time, as opposed to retrieving blocks from disk or tape backups, or from Flashback logs.

对于KingbaseES V8R6集群,在线自动块修复功能,可以实现:集群中,主数据库访问持久化用户表数据、索引时,从磁盘读取数据块至共享缓冲区,如果检测到坏块,自动从备节点获取坏块的副本,并修复坏块,以下案例演示了auto_bmr功能。

适用版本:KingbaseES V8R6

集群架构:

一、查看集群环境配置

1、集群节点状态

2、auto_bmr插件支持Tips:
默认在KingbaseES V8R6版本已经支持auto_bmr功能。

3、查看auto_mbr插件相关配置

# 查看对auto_bmr的支持
test=# select name from pg_available_extensions where name like '%bmr%';name
----------auto_bmr
(1 row)# 创建auto_bmr extension
test=# create extension auto_bmr;
CREATE EXTENSION# 查看auto_bmr的配置
test=# select name from pg_settings where name like '%bmr%';name
----------------------------------auto_bmr.auto_bmr_conninfoauto_bmr.auto_bmr_max_sessauto_bmr.auto_bmr_req_timeoutauto_bmr.auto_bmr_sess_thresholdauto_bmr.auto_bmr_sys_thresholdauto_bmr.enable_auto_bmr
(6 rows)test=# show  auto_bmr.enable_auto_bmr ;auto_bmr.enable_auto_bmr
--------------------------on
(1 row)test=# show auto_bmr.auto_bmr_sess_threshold;auto_bmr.auto_bmr_sess_threshold
----------------------------------100
(1 row)test=# show  auto_bmr.auto_bmr_sys_threshold;auto_bmr.auto_bmr_sys_threshold
---------------------------------1024

auto_bmr处理流程:

二、模拟主库数据文件故障

1、查看表存储信息

prod=# select oid, datname from pg_database where datname='prod';oid  | datname
-------+---------32955 | prod
(1 row)prod=# select relname,oid from pg_class where relname='t1';relname |  oid
---------+--------t1      | 189163
(1 row)prod=# select pg_relation_filepath('t1');pg_relation_filepath
----------------------base/32955/189163
(1 row)prod=# select count(*) from t1;count
-------99999
(1 row)

2、模拟表数据文件故障

[kingbase@node101 data]$ ls -lh base/32955/189163
-rw------- 1 kingbase kingbase 4.3M Nov 10 11:59 base/32955/189163# dd破坏数据文件
[kingbase@node101 data]$ dd if=/dev/zero of=/data/kingbase/r6ha/data/base/32955/189163  bs=8192 seek=300 count=2 conv=notrunc
2+0 records in
2+0 records out
16384 bytes (16 kB) copied, 0.000143321 s, 114 MB/s[kingbase@node101 data]$ ls -lh base/32955/189163
-rw------- 1 kingbase kingbase 4.3M Nov 15 15:11 base/32955/189163

三、auto_bmr自动修复主库数据块故障

1、清理缓存(重启数据库服务)[kingbase@node101 bin]$ ./sys_monitor.sh restart

2、访问表数据执行自动修复
如下图所示,在执行表数据查询时,出现故障,并且在执行自动修复时,无法识别funcation。

查看主备库sys_log:

#主库sys_log:
2022-11-15 15:13:27.909 CST,"system","prod",32388,"[local]",63733c0f.7e84,1,"SELECT",2022-11-15 15:13:19 CST,10/11,0,WARNING,01000,"page is invalid: base/32955/189163, blockNum: 75",,,,,,,,,"kingbase_*&+_"
2022-11-15 15:13:27.949 CST,"system","prod",32388,"[local]",63733c0f.7e84,2,"SELECT",2022-11-15 15:13:19 CST,10/11,0,WARNING,01000,"Exec get buffer page failed,errMsg:ERROR:  function public.get_lsn_reached_page(integer, integer, integer, integer, integer, bigint) does not exist
LINE 1: select public.get_lsn_reached_page(1663, 32955, 189163, 0, 7...^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
",,,,,,,,,"kingbase_*&+_"
2022-11-15 15:13:27.950 CST,"system","prod",32388,"[local]",63733c0f.7e84,3,"SELECT",2022-11-15 15:13:19 CST,10/11,0,WARNING,XX001,"repair invalid page: base/32955/189163, block: 75 failed.",,,,,,,,,"kingbase_*&+_"
2022-11-15 15:13:27.950 CST,"system","prod",32388,"[local]",63733c0f.7e84,4,"SELECT",2022-11-15 15:13:19 CST,10/11,0,ERROR,XX001,"invalid page in block 75 of relation base/32955/189163",,,,,,"select count(*) from  t1;",,,"kingbase_*&+_"备库sys_log:
2022-11-15 15:13:26.567 CST,"system","prod",6062,"192.168.1.101:34149",63733c16.17ae,1,"PARSE",2022-11-15 15:13:26 CST,5/34,0,ERROR,42883,"function public.get_lsn_reached_page(integer, integer, integer, integer, integer, bigint) does not exist",,"No function matches the given name and argument types. You might need to add explicit type casts.",,,,"select public.get_lsn_reached_page(1663, 32955, 189163, 0, 75, 19797117576);",8,,""

Tips: 以上错误是因为未创建auto_bmr的extension。

主库sys_log:

2022-11-15 15:16:50.855 CST,"system","prod",32388,"[local]",63733c0f.7e84,10,"SELECT",2022-11-15 15:13:19 CST,10/15,0,WARNING,01000,"page is invalid: base/32955/189163, blockNum: 75",,,,,,,,,"kingbase_*&+_"
2022-11-15 15:16:50.863 CST,"system","prod",32388,"[local]",63733c0f.7e84,11,"SELECT",2022-11-15 15:13:19 CST,10/15,0,WARNING,01000,"repair invalid page:base/32955/189163, blockNum: 75 successfully.",,,,,,,,,"kingbase_*&+_"

读取表数据:

#主库:
prod=# select * from t1 limit 10;id | name
----+-------2 | usr23 | usr34 | usr45 | usr56 | usr67 | usr78 | usr89 | usr910 | usr1011 | usr11
(10 rows)# 备库:
prod=# select count(*) from t1;count
-------99999
(1 row)

---如上所示,备库在表文件故障的情况下,通过auto_bmr功能读取备库数据实现了块修复。

三、总结
详细内容可访问KingbaseES官方文档:https://help.kingbase.com.cn/v8/highly/availability/cluster-use/cluster-use-2.html#id21在线自动块修复

KingbaseES V8R6集群运维案例---数据块故障自动修复(auto_bmr)相关推荐

  1. KingbaseES V8R6集群运维案例之---sys_rewind应用分析

    ​案例说明: sys_rewind是用于在数据库cluster的时间线分叉以后,同步一个 KingbaseES 数据库cluster 和同一数据库cluster另一份拷贝的工具.一种典型的场景是在失效 ...

  2. KingbaseES V8R6 集群运维案例 -- 磁盘空间问题导致集群故障

    某商业银行生产系统KingbaseES读写分离集群主库出现故障,导致集群主备发生切换.客户要求说明具体的原因. KingbaseES读写分离集群基本信息: KingbaseES集群信息   操作系统 ...

  3. KingbaseES V8R6集群外部备份案例

    案例说明: 本案例采用sys_backup.sh执行物理备份,备份使用如下逻辑架构:集群采用CentOS 7系统,repo采用kylin V10 Server. 一主一备+外部备份 此场景为主备双机常 ...

  4. KingbaseES V8R6 集群运维系列 -- 命令行部署repmgr管理集群+switchover测试

    本次部署未使用securecmd/kbha工具,无需普通用户到root用户的互信. 一.环境准备 1.创建OS用户 建立系统数据库安装用户组及用户,在所有的节点执行. root用户登陆服务器,创建用户 ...

  5. KingbaseES V8R6集群管理运维案例之---repmgr standby switchover故障

    案例说明: 在KingbaseES V8R6集群备库执行"repmgr standby switchover"时,切换失败,并且在执行过程中,伴随着"repmr stan ...

  6. Kafka的灵魂伴侣Logi-KafkaManger(4)之运维管控–集群运维(数据迁移和集群在线升级)

    推荐一款非常好用的kafka管理平台,kafka的灵魂伴侣 滴滴开源Logi-KafkaManager 一站式Kafka监控与管控平台 技术交流 有想进滴滴LogI开源用户群的加我个人微信: jjdl ...

  7. 集群运维:All datanodes DatanodeInfoWithStorage[10.21.131.179:50010,DS-6fca3fba-7b13-4855-b483-342df8432e

    规划出一个集群日常维护系列,分享各种奇葩案例,集群运维事故,欢迎大家交流投稿.集群的运维故障排查是一个任重而道远的事情. 1.集群故障现象 Error: java.lang.RuntimeExcept ...

  8. etcd 集群运维实践

    [编者的话]etcd 是 Kubernetes 集群的数据核心,最严重的情况是,当 etcd 出问题彻底无法恢复的时候,解决问题的办法可能只有重新搭建一个环境.因此围绕 etcd 相关的运维知识就比较 ...

  9. 阿里巴巴大规模神龙裸金属 Kubernetes 集群运维实践

    戳蓝字"CSDN云计算"关注我们哦! 导读:值得阿里巴巴技术人骄傲的是 2019 年阿里巴巴 双11 核心系统 100% 以云原生的方式上云,完美支撑了 54.4w 峰值流量以及 ...

最新文章

  1. 华为mate x2什么时候更新鸿蒙系统,华为Mate X2真机发布,今年四月可升级鸿蒙系统...
  2. 贪心: Array Splitting(数列分段)(洛谷CF1175D)
  3. Jquery.Validation表单验证
  4. 利用组策略管理器映射网络驱动器的方法
  5. SAP License:SAP系统上线时的相关检查清单
  6. BZOJ 2440 【中山市选2011】 完全平方数
  7. .NET应用程序调试—原理、工具、方法
  8. 通达OA 指纹考勤机接口 源代码
  9. 突破百度知道瓶颈,问淘宝引流
  10. 【实战项目惜时App项目总结分析】Vue-cli3+Vant UI+Vue-element-admin+Egg.js+Mysql
  11. IE8开发者工具 有打开却看不见
  12. Linux Kernel Patched
  13. mvp关联activity生命周期_极简SaaS创业手册一文读懂SaaS全生命周期阶段
  14. 非华为电脑使用EMUI10多屏协同教程
  15. C语言的指针符号到底靠近变量类型还是变量名?
  16. 初学者写网站(零基础)
  17. Windows10,21H1 官方正式ESD版下载地址
  18. AML(Automation Markup Language)简单介绍
  19. 第六章 DirectX 2D游戏和帧动画(上)
  20. Django项目实战——8—(判断用户是否登录并返回JSON、Django发送邮件的配置、生成邮箱验证链接、验证邮箱后端逻辑)

热门文章

  1. 《UNIX网络编程》配置unp.h头文件
  2. 【操作教程】EasyNVR视频边缘计算网关硬件如何关闭匿名登录?
  3. Synchronized解析——如果你愿意一层一层剥开我的心
  4. xzfnz.fsj.kzxf.xkjf你的反馈没看到房间内了覆盖面,发
  5. 软考中级——软件设计师备考资料
  6. 微商引流用什么礼品?从而形成裂变传播
  7. 百度地图 测距功能 DistanceTool 在不同浏览器下标注不一致的解决办法,打开新地图测距不生效的解决办法
  8. git常用命令-zqh
  9. 膨胀珍珠岩板(EPB) 保温材料英国UKCA 认证-EN 13169
  10. QT开发的视频监管平台分享