前言

walminer工具可以帮助dba挖掘wal日志中的内容,看到某时间对应数据库中的具体操作。例如挖掘日志后可以看到数据库某时间有哪些dml语句。

walminer的限制与约束

  • WalMiner工具的使用必须以数据库超级用户执行。
  • 数据库能正常运行。
  • full_page_writes必须为开启状态。
  • 拥有完整连续的WAL日志。
  • 能导出正常使用的数据字典。
  • 解析过程中,日志所需数据字典没有发生改变。
  • 不支持DDL的解析。

解析wal日志

测试环境为KESV8R6C007

1.解析本库WAL日志无需添加日志和数据字典

创建扩展
TEST=# create extension walminer;
CREATE EXTENSION 按时间范围解析
TEST=# select walminer_by_time('2023-04-09 11:27:00', '2023-04-10 11:37:00');
NOTICE: Add wal from current pg_wal directory, do not suggest use this way in produce
NOTICE: Switch wal to 000000010000000100000078 on time 2023-04-10 15:54:17.088751+08
walminer_by_time
---------------------
pg_minerwal success
(1 row) 普通解析
TEST=# select walminer_all(); LSN范围解析
select walminer_by_lsn('0/010000A0', '0/016E6578'); 单表解析
select walminer_by_time('2023-09-08 11:27:00', '2023-09-08 11:37:00', 'false', 16452); 查看分析结果:
TEST=# select * from walminer_contents;
sqlno | xid | topxid | sqlkind | minerd | timestamp | op_text | undo_text |
complete | schema | relation | start_lsn | commit_lsn
-------+------+--------+---------+--------+-------------------------------+-------------------------------------------------------------------------------+--------------------------------------------------+
----------+--------+----------+------------+------------
1 | 1516 | 0 | 1 | t | 2023-03-31 15:22:05.701811+08 | INSERT INTO public.u1(id ,info) VALUES(1 ,'ec79d8fc388c6aadb81c04890efcb587') | DELETE FROM public.u1 WHERE id=1 |
t | public | u1 | 1/7898B1F8 | 1/78991750 结束分析:
select walminer_stop(); 结束分析后还可以查到walminer_contents视图中相关记录,如果以后不需要查看可以truncate该视图。

异地解析wal日志的限制

1.执行了删除表、truncate表、更改表的表空间、更改表字段的类型、vacuum full,这样的DDL语句后,发生DDL语句之前的此表相关的DML语句不会再被解析。

应对措施:建议在执行表结构变更之前,先保存一份数据字典,用来保证可以解析历史wal日志。

2.解析结果依赖于数据字典。(举例:创建表t1,所有者为user1,但是中间将所有者改为user2。那解析结果中,所有t1相关操作所有者都将标示为user2)

应对措施:建议在执行表结构变更之前,先保存一份数据字典,用来保证可以准确解析历史wal日志。

3.只能解析与数据字典时间线一致的wal文件

4.不建议使用walminer解析大量copy语句(在同一个事务中插入大量数据行)产生的wal日志,

这会导致解析过程中的效率低下。

2.解析其他数据库的WAL日志
解析其他库的日志暂不支持解析自定义数据类型,如果其他库的WAL日志中存在自定义数据类型,而本库没有对应的数据类型则会解析失败。 从其他数据库导出数据字典
select walminer_build_dictionary('/home/kingbase/dict');
导出的数据字典名称为:dict
将生成的数据字典和需要解析的wal日志放到其他库可以获取的路径。
导入其他数据库的数据字典
-- 导入数据字典
select walminer_load_dictionary('/home/kingbase/dict/dict');
添加日志文件
select walminer_wal_add('/home/kingbase/sys_wal/000000010000000000000001');
日志解析,同本地wal解析方式相同,包括普通解析,时间范围解析, LSN范围解析,单表解析
-- 查看分析结果
select * from walminer_contents;
-- 结束分析,结束分析会删除分析过程中生成的中间文件、导入的数据字典、WAL日志文件以及分析结果
select walminer_stop();
3.本地wal加密方式使用walminer
wal加密后使用walminer解析时,不需要打开透明存储加密的钱夹功能,不需要加密密钥。 TEST=# CLOSEUP WALLET WITH PASSWORD "654321";
CLOSE WALLET alter system set wal_encryption to true;
select sys_reload_conf(); TEST=# show wal_encryption ;
wal_encryption
----------------
on
(1 row) TEST=# create extension walminer ;
CREATE EXTENSION
TEST=#
TEST=# select walminer_all();
NOTICE: Add wal from current pg_wal directory, do not suggest use this way in produce
NOTICE: Switch wal to 000000010000000100000078 on time 2023-04-10 16:38:12.105553+08
walminer_all
---------------------
pg_minerwal success
(1 row) TEST=#
TEST=# select * from walminer_contents;
sqlno | xid | topxid | sqlkind | minerd | timestamp | op_text | undo_text |
complete | schema | relation | start_lsn | commit_lsn
-------+------+--------+---------+--------+-------------------------------+-------------------------------------------------------------------------------+--------------------------------------------------+
----------+--------+----------+------------+------------
1 | 1516 | 0 | 1 | t | 2023-03-31 15:22:05.701811+08 | INSERT INTO public.u1(id ,info) VALUES(1 ,'ec79d8fc388c6aadb81c04890efcb587') | DELETE FROM public.u1 WHERE id=1 |
t | public | u1 | 1/7898B1F8 | 1/78991750

总结

在KingbaseESV8R6C7中支持walminer日志挖掘,此功能插件有些功能限制需要注意,例如支持DDL语句的挖掘。

在本地测试加密wal日志不需要对应解密密钥就可以使用walminer挖掘日志。

KingbaseES V8R6 中walminer的使用的更多相关文章

  1. KingbaseES V8R6集群维护案例之---停用集群node_export进程

    案例说明: 在KingbaseES V8R6集群启动时,会启动node_exporter进程,此进程主要用于向kmonitor监控服务输出节点状态信息.在系统安全漏洞扫描中,提示出现以下安全漏洞: 对 ...

  2. KingbaseES V8R6集群维护案例之---将securecmdd通讯改为ssh案例

    案例说明: 在KingbaseES V8R6的后期版本中,为了解决有的主机之间不允许root用户ssh登录的问题,使用了securecmdd作为集群部署分发和通讯的服务,有生产环境通过漏洞扫描,在88 ...

  3. KingbaseES V8R6兼容Oracle的exp-imp导出导入工具使用

    说明: KingbaseES V8R6版本中的兼容Oracle的exp-imp导入导出工具,支持完全模式.用户模式和表模式的导出功能. 本次案例数据库版本: test=# select version ...

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

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

  5. KingbaseES V8R6备份恢复案例之---同一数据库创建不同stanza备份

    案例说明: 在生产环境,有的应用需要调用数据库的sys_rman做备份,为了区分数据库自身的sys_rman备份和应用的备份,可以使用不同的stanza name创建备份.本案例介绍了,如何在King ...

  6. KingbaseES V8R6备份恢复案例之--删除test数据库后sys_backup.sh备份

    案例说明: KingbaseES V8R6通过sys_backup.sh执行物理备份,默认sys_backup.sh执行备份初始化时,需要连接test数据库进行身份的认证:在一些生产环境为了安全需求, ...

  7. KingbaseES V8R6集群维护案例之--单实例数据迁移到集群案例

    案例说明: 生产环境是单实例,测试环境是集群,现需要将生产环境的数据迁移到集群中运行,本文档详细介绍了从单实例环境恢复数据到集群环境的操作步骤,可以作为生产环境迁移数据的参考. 适用版本: Kingb ...

  8. KingbaseES V8R6集群维护案例之--修改securecmdd工具服务端口

    案例说明: 在一些生产环境,为了系统安全,不支持ssh互信,或限制root用户使用ssh登录,KingbaseES V8R6可以使用securecmdd工具支持主机之间的通讯.securecmdd工具 ...

  9. KingbaseES V8R6集群维护之--修改数据库服务端口案例

    ​ 案例说明: 对于KingbaseES数据库单实例环境,只需要修改kingbase.conf文件的'port'参数即可,但是对于KingbaseES V8R6集群中涉及到多个配置文件的修改,并且在应 ...

  10. KingbaseES V8R6单实例外部备份案例

    案例说明: 本案例采用sys_backup.sh执行物理备份,备份使用如下逻辑架构:数据库主机采用CentOS 7系统,repo采用kylin V10 Server. 单实例+外部备份服务器 备份逻辑 ...

随机推荐

  1. 【Android】使用MediaExtractor、MediaMuxer去掉视频文件中的音频数据

    1 简介 ​ 本文以 mp4 文件为例,讲解去音频操作.mp4 是一种视频封装的容器,里面包含音频(audio)和视频(video)数据,对应的数据编码格式分别为 aac 和 h264.在去音频过程中 ...

  2. [攻防世界][Web]PHP2

    打开靶机对应的url 就一行字 Can you anthenticate to this website? 第一感觉就需要做目录文件扫描 使用御剑和dirsearch进行扫描,发现一个文件 index ...

  3. EXE程序缺DLL怎么办

    起因 工程师发给用户一个VS编译的windows应用程序,客户反应打不开,报缺少dll.可是dll明明就在当前目录啊,为什么还会报错呢? 那应该是该DLL依赖的其它DLL不存在导致的,用depends ...

  4. 浅谈 rxgo 在项目中的使用方式

    项目中使用到了 RxGo ,感觉现有的处理方式有一定的优势,当然也有一定的有劣势,遂记录下来,免得自己忘记. 本文介绍的只是 rxgo 的一种方式而已,如果你有不错的使用方式,请不吝赐教,谢谢. 对 ...

  5. java字节、位移以及进制转换

    数据存储方式 众所周知,java中的数据都是以二进制的形式存储在计算机中的,但是我们看到的数据怎么是10进制的,因为java提供了很多进制自动转换的方式. 位移 向左位移是*2的幂次,一般都是正数操作 ...

  6. 【Azure 应用服务】在创建Web App Service的时候,选Linux系统后无法使用Mysql in App

    问题描述 如图上,是App Services在Windows环境中,系统自带了MySQL In App功能.而在,Linux环境中,没有发现Mysql in App功能,是不是无法在Linux中使用呢 ...

  7. 【Azure 应用服务】FTP 部署 Vue 生成的静态文件至 Linux App Service 后,访问App Service URL依旧显示Azure默认页面问题

    问题描述 将 JS项目打包为静态文件后,通过 FTP 上传到 App Service For Linux 的 /home/site/wwwroot文件夹中.但打开App Service URL 后依旧 ...

  8. 代码随想录算法训练营第二十七天| 39. 组合总和 40.组合总和II 131.分割回文串

      39. 组合总和 卡哥建议:本题是 集合里元素可以用无数次,那么和组合问题的差别 其实仅在于 startIndex上的控制 题目链接/文章讲解:https://programmercarl.com ...

  9. Mapbox实战项目(1)-栅格图片图层实现地图方位展示

    需求背景 需要实现地图上展示一个类似于罗盘的标记,随着地图的缩放.切换.旋转等,能够在地图的中央指示出地图的方位. 系统自带的方位控件太小,在特殊业务场景下不够醒目. 技术选型 Mapbox 实现分析 ...

  10. redis开启多端口

    Centos安装多端口的redis服务 背景 redis默认端口6379,由于开发需要,key有重复.于是另起端口6380. 配置服务过程 1.新建/etc/redis6380.conf,内容如下: ...