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

news2024/11/17 5:29:49

案例说明:
在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_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在线自动块修复

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/107743.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高通Ride软件开发包使用指南(12)

高通Ride软件开发包使用指南(12)9 PCIe交换机9.1简介9.2 PCIe交换机管理9.2.1工具9.2.2 COM端口和COM端口设置9.2.3更新固件和配置9.2.3.1工具设置9.2.3.2 Platform setup9.2.3.3交换机更新9 PCIe交换机 9.1简介 在Snapdragon Ride的高级配置中&#x…

四、基于kubeadm安装kubernetes1.25集群第三篇

接上篇&#xff1a;https://blog.csdn.net/u011837804/article/details/128355649 1、安装 kubeadm、kubelet 和 kubectl 1.1、配置yum源 cat > /etc/yum.repos.d/kubernetes.repo << EOF [kubernetes] nameKubernetes baseurlhttps://mirrors.aliyun.com/kubernet…

算法| Java的int类型最大值为什么是21亿多?

开篇 本文主要介绍在Java中&#xff0c;为什么int类型的最大值为2147483647。 理论值 我们都知道在Java中&#xff0c;int 的长度为32位。 理论上&#xff0c;用二进制表示&#xff0c;32位每一位都是1的话&#xff0c;那么这个数是多少呢&#xff1f; 我们来计算一下&…

【QGIS入门实战精品教程】10.1:QGIS基于DEM数据的地形分析案例教程

本文讲解QGIS中基于DEM数据的地形分析方法,包括:坡度分析、坡向分析、山体阴影、地貌分析、强度指数(地形复杂性)。 文章目录 一、加载DEM二、坡度分析三、坡向分析四、山体阴影五、地貌分析六、强度指数(地形复杂性)QGIS提供了地形分析的工具,位于工具箱→Raster terrain a…

录屏怎么录声音?电脑录视频怎么带声音?图文教学来了

电脑录屏功能的应用&#xff0c;给我们的日常生活带来了便利。随着电脑录屏功能的应用&#xff0c;“电脑录屏”随着功能的升级&#xff0c;电脑屏幕录制不仅仅是简单的屏幕录制&#xff0c;还有很多额外的功能&#xff0c;比如录制带声音的视频&#xff01;那么录屏怎么录声音…

[C++]类和对象【下】

&#x1f941;作者&#xff1a; 华丞臧 &#x1f4d5;​​​​专栏&#xff1a;【C】 各位读者老爷如果觉得博主写的不错&#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方&#xff0c;欢迎在评论区指出。 推荐一款刷题网站 &#x1f449;LeetCode 文章目录再谈构造…

结构建模设计——Solidworks软件之装配体操作基本总结一(装配体功能界面简介、插入零件操作、基本配合操作)

【系列专栏】&#xff1a;博主结合工作实践输出的&#xff0c;解决实际问题的专栏&#xff0c;朋友们看过来&#xff01; 《QT开发实战》 《嵌入式通用开发实战》 《从0到1学习嵌入式Linux开发》 《Android开发实战》 《实用硬件方案设计》 长期持续带来更多案例与技术文章分享…

漏洞猎人白夜追凶记

编者按 数字化浪潮蓬勃兴起&#xff0c;企业面临的安全挑战亦日益严峻。 腾讯安全近期将复盘2022年典型的攻击事件&#xff0c;帮助企业深入了解攻击手法和应对措施&#xff0c;完善自身安全防御体系。 本篇是第三期&#xff0c;用一个实际案例讲述了企业在面临攻击时&#xf…

【Java枚举类与注解】——一篇文章读懂枚举类与注解

文章目录2.枚举2.1概述2.2定义格式2.3枚举的特点2.4枚举的方法3.注解3.1概述3.2自定义注解3.3 元注解2.枚举 2.1概述 为了间接的表示一些固定的值&#xff0c;Java就给我们提供了枚举&#xff0c;是指将变量的值一一列出来&#xff0c;变量的值只限于列举出来的值的范围内。 …

C. Arpa’s overnight party and Mehrdad’s silent entering(构造+二分图)

Problem - 741C - Codeforces 请注意&#xff0c;阿尔帕的土地上的女孩真的很有吸引力。 阿尔帕喜欢过夜的聚会。在一次聚会中&#xff0c;迈尔达德突然出现。他看到n对朋友围坐在一张桌子旁。第i对包括一个男孩&#xff0c;坐在第i把椅子上&#xff0c;和他的女朋友&#xff…

【LeetCode每日一题】——264.丑数 II

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【时间频度】九【代码实现】十【提交结果】一【题目类别】 动态规划 二【题目难度】 中等 三【题目编号】 264.丑数 II 四【题目描述】 给你一个整数 n …

React DAY06

复习&#xff1a; 1.React是一个用于构建用户界面的JS库——不涉及HTML/CSS。可用于创建PC网站、H5、WebApp、NativeApp。2013年中Facebook开源&#xff0c;目前最新版V18.2。 主要知识点&#xff1a; ①使用React的两种方法&#xff1a;脚本引入式、脚手架方式(create-react-…

VUE部署至Nginx

VUE部署至Nginx安装Nginx解压Nginx配置VUE文件配置Nginx启动Nginx快速停止或关闭nginx正常停止或关闭nginx配置文件nginx.conf修改重装载命令安装Nginx 网址&#xff1a;https://nginx.org/en/download.html 选择图中红框下载安装 解压Nginx 只需要解压到目录&#xff0c;无…

GitHub典藏版,腾讯T14级高级程序员亲码的分布式数据库实践,再次爆火

数据库就是要做好五件事&#xff0c;存储、事务、查询、复制和其他。而对分布式数据库来说&#xff0c;不仅要继续做这五件事&#xff0c;还要多出一件事&#xff0c;分片。在这六件事中&#xff0c;存储和其他这两件事与单体数据库差不多&#xff0c;难点就在事务、查询、复制…

论文复现丨基于ModelArts进行图像风格化绘画

摘要&#xff1a;这个 notebook 基于论文「Stylized Neural Painting, arXiv:2011.08114.」提供了最基本的「图片生成绘画」变换的可复现例子。本文分享自华为云社区《基于ModelArts进行图像风格化绘画》&#xff0c;作者&#xff1a; HWCloudAI 。 项目首页 | GitHub | 论文 …

敏捷、分散式的数据治理,该如何实现?

01 数据资产的生产和消费现状 —— 孤岛就在那里&#xff01; 在大数据时代&#xff0c;企业数据资产的生产和消费&#xff0c;实际现状大概是这样的。 一方面&#xff0c;每个业务部门都产生并存储了大量的数据。这些数据存储在不同的系统中。每个业务部门都是数据的生产者…

安卓逆向-某音乐软件

初学安卓逆向&#xff0c;如有错误请指教 某我音乐9.3.4.4版本&#xff0c;需要资源的请流言&#xff08;也可以自行去下载&#xff09; 直接将apk拖入到AndroidKiller里面(该工具自行下载) 首先去除广告 直接全局搜索KEY_EXTRA_AUTH&#xff0c;可以只在.smali文件里面搜索…

【gitlab wiki】git首次上传本地文档操作步骤

1.在gitLab中创建一个项目 2.进入本地电脑中的你要上传文件的文件目录&#xff0c;右击鼠标选择“ Git Bash Here” git命令窗口(本机电脑要安装好git) 3.在远程git项目中&#xff0c;复制出项目http地址。 4.在“ Git Bash Here” git命令窗口输入命令&#xff1a;git clone h…

Java+MYSQL基于ssm的网上出差审批与费用报销管理系统

全新的时代,新的技术推动着公司管理制度的改革,在管理层面加入了先进的科学技术做到了与时俱进,所以企业创建自己的网上出差审批与费用报销系统是迫切需要的。在新时代的背景下,传统管理方式的缺点被暴露出来,传统管理方式的不足的地方有管理及时性不够,下达一个指令以后需要层…

AuthLab权限在线靶场通关记录

AuthLab通关记录 一个在线的权限靶场&#xff1a;https://authlab.digi.ninja/ 靶场内容比较简单&#xff0c;包括了JWT以及一些基本情况的权限Bypass IP Based Auth Bypass 该关卡根据提示有一个ip在192.168.0.100-200范围里可以直接bypass 拦截请求包修改X-Forwarded-For爆…