[转帖]KingbaseES V8R6 中walminer的使用

kingbasees,v8r6,walminer,使用 · 浏览次数 : 0

小编点评

**Kingbase walminer 工具介绍** Kingbase walminer 工具是一个用于挖掘 Wallog 日志的工具,可以帮助您看到某时间对应数据库中的具体操作。例如,您可以挖掘日志后可以看到数据库某时间有哪些 dml 语句。 **限制** * 只能解析与数据字典时间线一致的 WAL 文件。 * 解析结果依赖于数据字典。 * 解析其他数据库的 WAL 日志暂不支持解析自定义数据类型。 * 只能解析与数据字典相同的 WAL 文件。 **使用方法** 1. 获取 walminer 工具。 2. 打开包含 Wallog 日志的数据库。 3. 使用 `walminer_by_time()` 等函数检索所需的 WAL 日志数据。 4. 解析数据。 **示例** ```python import walminer # 获取 walminer 工具 client = walminer.Client() # 打开包含 Wallog 日志的数据库 cursor = client.connect('your_database_url') # 获取 Wallog 日志 logs = cursor.cursor().execute('log_read()').fetchall() # 解析日志 for log in logs: print(log[0]) ``` **注意** * 使用 walminer 工具之前,请确保您的数据库正常运行。 * 确保您的数据字典在解析过程中可用。

正文

https://www.cnblogs.com/kingbase/p/17315750.html

 

前言

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的使用 相似的内容:

[转帖]KingbaseES V8R6 中walminer的使用

https://www.cnblogs.com/kingbase/p/17315750.html 前言 walminer工具可以帮助dba挖掘wal日志中的内容,看到某时间对应数据库中的具体操作。例如挖掘日志后可以看到数据库某时间有哪些dml语句。 walminer的限制与约束 WalMiner工具

[转帖]金仓数据库KingbaseES V8R6 中unlogged表

KingbaseESV8R6有一种表称为unlogged,在该表新建的索引也属于unlogged。和普通表的区别是,对该表进行DML操作时候不将该表的变更记录变更写入到wal文件中。在数据库异常关机或者异常崩溃后该表的数据会被truncate掉,但是在写入性能上会比普通表快几倍。 这个特性类似于or

[转帖]金仓数据库KingbaseES V8R6 索引膨胀

索引膨胀 对于索引,随着业务不断的增删改,会造成膨胀,尤其Btree索引,也会涉及索引分裂、合并等,导致索引访问效率降低、维护成本增加。另外,索引页的复用与HEAP PAGE不一样,因为索引的内容是有序结构,只有符合顺序的ITEM才能插入对应的PAGE中,不像HEAP TUPLE,只要有空间就可以插

[转帖]金仓数据库KingbaseES V8R6索引坏块故障处理

案例说明: 在执行表数据查询时,出现下图所示错误,索引故障导致表无法访问,后重建索引问题解决。本案例复现了此类故障解决过程。 适用版本: KingbaseES V8R3/R6 一、创建测试环境 # 表结构信息prod=# \d+ test1 Table "public.test1" Column|

[转帖]KingbaseES和Oracle数据类型的映射表

随着数据库国产化的进程,Oracle向KingbaseES数据库的数据迁移需求也越来越多。数据库之间数据迁移的时候,首先遇到的,并且也是最重要的,就是数据类型之间的转换。 下表为KingbaseES和Oracle数据类型的映射表: Oracle数据类型 KingbaseES 数据类型 备注说明(Or

[转帖]KingbaseES 事务总结

目录 1. 什么是事务? 2. 事务的属性-ACID 3. 数据库事务的操作方式 3.1. SET TRANSACTION 3.2. BEGIN 3.3. COMMIT 3.4. ROLLBACK 3.5. SAVEPOINT 3.6. ROLLBACK TO SAVEPOINT 4. 事务的并发控

[转帖]KingbaseES wal(xlog) 日志清理故障恢复案例

https://www.cnblogs.com/kingbase/p/16266365.html 案例说明:在通过sys_archivecleanup工具手工清理wal日志时,在control文件中查询的检查点对应的wal日志是“000000010000000000000008”,但是在执行清理时,

[转帖]KingbaseES不同字符类型比较转换规则

https://www.cnblogs.com/kingbase/p/14798059.html Postgresql 常用的字符数据类型的有char、varchar和text,其中 char 固定长度类型, varchar 和 text 是可变长度类型。这三种类型在进行比较时,会进行隐含的类型转换

[转帖]【KingbaseES】sys_dump逻辑备份工具详解

KingbaseES逻辑备份还原工具提供了数据库对象一级的联机备份还原功能,备份对象包括: 数据库 模式 表 视图 约束 权限 触发器 函数 序列 逻辑备份的输出格式包括: 二进制 SQL脚本 此外,针对表数据,还支持多种格式的导出: CSV JSON HTML 从而帮助用户可灵活调整、实施数据的备

[转帖]KingbaseES 服务器运行参数分类

https://www.cnblogs.com/kingbase/p/16969149.html Kingbase 服务器运行参数分类 说明: KingbaseES 数据库中,服务器运行参数分为多种类型,有些是系统初始化时设置,有些可以在系统运行时设置,有些可以在运行session中进行直接设置。下