KingbaseES V8R6集群运维案例---数据块故障自动修复(auto_bmr)
案例说明:
在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_bmr插件相关配置
# 查看对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_conninfo
auto_bmr.auto_bmr_max_sess
auto_bmr.auto_bmr_req_timeout
auto_bmr.auto_bmr_sess_threshold
auto_bmr.auto_bmr_sys_threshold
auto_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 | usr2
3 | usr3
4 | usr4
5 | usr5
6 | usr6
7 | usr7
8 | usr8
9 | usr9
10 | usr10
11 | 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)的更多相关文章
- KingbaseES V8R6集群运维案例之---repmgr standby promote应用案例
案例说明: 在容灾环境中,跨区域部署的异地备节点不会自主提升为主节点,在主节点发生故障或者人为需要切换时需要手动执行切换操作.若主节点已经失效,希望将异地备机提升为主节点. $bin/repmgr s ...
- KingbaseES V8R3集群运维案例之---主库系统down failover切换过程分析
案例说明: KingbaseES V8R3集群failover时两个cluster都会触发,但只有一个cluster会调用脚本去执行真正的切换流程,另一个有对应的打印,但不会调用脚本,只是走相关的 ...
- KingbaseES V8R3集群运维案例之---kingbase_monitor.sh启动”two master“案例
案例说明: KingbaseES V8R3集群,执行kingbase_monitor.sh启动集群,出现"two master"节点的故障,启动集群失败:通过手工sys_ctl启动 ...
- KingbaseES V8R3集群运维案例之---cluster.log ERROR: md5 authentication failed
案例说明: 在KingbaseES V8R3集群的cluster.log日志中,经常会出现"ERROR: md5 authentication failed:DETAIL: password ...
- KingbaseES V8R3集群运维案例之---用户自定义表空间管理
案例说明: KingbaseES 数据库支持用户自定义表空间的创建,并建议表空间的文件存储路径配置到数据库的data目录之外.本案例复现了,当用户自定义表空间存储路径配置到data下时,出现的故障问 ...
- KingbaseES V8R6集群外部备份案例
案例说明: 本案例采用sys_backup.sh执行物理备份,备份使用如下逻辑架构:集群采用CentOS 7系统,repo采用kylin V10 Server. 一主一备+外部备份 此场景为主备双机常 ...
- kingbaseES V8R6集群备份恢复案例之---备库作为repo主机执行物理备份
案例说明: 此案例是在KingbaseES V8R6集群环境下,当主库磁盘空间不足时,执行sys_rman备份,将集群的备库节点作为repo主机,执行备份,并将备份存储在备库的磁盘空间. 集群架构 ...
- KingbaseES V8R6集群管理运维案例之---repmgr standby switchover故障
案例说明: 在KingbaseES V8R6集群备库执行"repmgr standby switchover"时,切换失败,并且在执行过程中,伴随着"repmr stan ...
- KingbaseES V8R6集群维护案例之---停用集群node_export进程
案例说明: 在KingbaseES V8R6集群启动时,会启动node_exporter进程,此进程主要用于向kmonitor监控服务输出节点状态信息.在系统安全漏洞扫描中,提示出现以下安全漏洞: 对 ...
- KingbaseES V8R6集群维护之--修改数据库服务端口案例
案例说明: 对于KingbaseES数据库单实例环境,只需要修改kingbase.conf文件的'port'参数即可,但是对于KingbaseES V8R6集群中涉及到多个配置文件的修改,并且在应 ...
随机推荐
- Laravel入坑指南(10)——事件Event
不知不觉,我们已经来到了第10小节.这一小节,我们一起讨论关于"事件"这个话题.众所周知,从二进制到汇编,再到高等级语言,这一路发展下来,代码都是顺序执行的,那么事件是什么?这个事 ...
- C++ 多线程的错误和如何避免(14)
在 C++11 中,不要将 volatile 用于线程,仅限于 MMIO(内存映射) 简单的回答, 在声明变量类型之前添加 "volatile" 关键字不会使对该变量有任何方式的原 ...
- 【Android 逆向】【攻防世界】黑客精神
1. apk 安装到手机,提示输入注册码 2. jadx打开apk MainActivity.java @Override // android.app.Activity public void on ...
- js结合canvas画任意多边形
实现六边形 // html <canvas></canvas> // js const canvas = document.querySelector("canvas ...
- Taurus.MVC WebMVC 入门开发教程1:框架下载环境配置与运行
前言: 之前有网友说 Mvc系列的教程对新手不友好,因此补充新手入门系列教程. 在开始使用 Taurus.Mvc 进行 Web应用开发之前,建议可以观摩一下之前的文章:WebAPI 系列教程 因为两者 ...
- 文心一言 VS 讯飞星火 VS chatgpt (201)-- 算法导论15.2 6题
六.用go语言,证明:对 n 个元素的表达式进行完全括号化,恰好需要 n-1 对括号. 文心一言,代码正常运行: 在Go语言中,证明对n个元素的表达式进行完全括号化恰好需要n-1对括号,可以通过数学归 ...
- django中如果不是第一次迁移的时候就配置AUTH_USER_MODEL(用来告知django认证系统识别我们自定义的模型类),那么该如何解决才能让django的认证系统识别且不会报未知错误?
Django认证系统中提供的用户模型类及方法很方便,我们可以使用这个模型类,但是字段有些无法满足项目需求,如还需要保存用户的手机号,需要给模型类添加额外的字段. Django提供了django.con ...
- Vue3学习(十九) - TreeSelect 树选择
写在前面 我知道自己现在的状态很不好,以为放个假能好好放松下心情,结果昨晚做梦还在工作,调试代码,和领导汇报工作. 天呐,明明是在放假,可大脑还在考虑工作的事,我的天那,这是怎么了? Vue页面参数传 ...
- 用容器部署Nexus 3作为Nuget和Docker的仓库
1.准备docker-compose的配置文件 version: '3' services: nexus: image: 'sonatype/nexus3:3.42.0' container_name ...
- 【Azure 微服务】面对Service Fabric中节点状态不正常(Disabling/Warning/RemoveNode)的几种尝试解决方案
问题描述 发现 Service Fabric 的节点状态异常,如出现 Disabling, Warning,或者 RemoveNode的情况,并且持续很长时间都没有变化(2小时以上).如何来缓解这种问 ...