每次查询逻辑日志都会导致金仓服务重启 - 问答 - 金仓社区.pdf
WalMiner 日志逻辑解码工具使用指南 金仓数据库管理系统 KingbaseES 文档版本:V8(V008R006C007B0024) 发布日期:2023 年 4 月 1 日 北京人大金仓信息技术股份有限公司 目 目 录 录 第 1 章 前言 1 1.1 适用读者 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 相关文档 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.3 术语 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.4 手册约定 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 第 2 章 概述 3 2.1 什么是 WalMiner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 WalMiner 的适用场景 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.3 WalMiner 的限制与约束 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 第 3 章 WalMiner 的运行环境准备 5 3.1 开启 full_page_writes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.2 WAL 日志连续性检查 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.3 安装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.4 数据字典检查 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 第 4 章 WalMiner 接口使用介绍 7 4.1 添加日志 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 4.2 展示日志列表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 4.3 删除日志 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 4.4 导出数据字典 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 4.5 导入数据字典 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 4.6 数据解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 4.6.1 普通解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 4.6.2 精准解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 4.6.3 单表解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 4.7 查看解析结果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 4.8 结束解析 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 第 5 章 WalMiner 使用示例 5.1 解析本库 WAL 日志 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 12 I 5.2 目 录 5.1.1 创建扩展 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 5.1.2 执行普通解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 5.1.3 时间范围解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.1.4 LSN 范围解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.1.5 单表解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.1.6 查看分析结果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5.1.7 结束分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 解析其他数据库的 WAL 日志 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 5.2.1 从其他数据库导出数据字典 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 5.2.2 导入其他数据库的数据字典 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 5.2.3 添加日志文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 5.2.4 日志解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 5.2.5 查看分析结果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 5.2.6 结束分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 版权声明 19 服务周期承诺 20 II 第 1 章 前言 1 第 章 前言 本文描述了 KingbaseES WalMiner 日志逻辑解码工具的使用方法。 前言部分包含以下主题: • 适用读者 • 相关文档 • 术语 • 手册约定 1.1 适用读者 本文档面向所有使用 KingbaseES 的用户,主要是数据库管理员和应用程序开发人员。 1.2 相关文档 1.3 术语 1.4 手册约定 本文档中可能出现“注意、提示、警告、另请参阅”等标志,它们所代表的含义如下: 注意: 用于突出重要/关键信息、最佳实践等。 1 第 1 章 前言 提示: 用于突出小窍门、捷径等。 警告: 用于传递设备或环境安全警示信息,若不避免,可能会导致设备损坏、数据丢失、设备性能降低或其 它不可预知的结果。 另请参阅: 用于突出参考、参阅等。 以下程序代码书写约定适用于本文档: 符号 说明 [] 表示包含一个或多个可选项。不需要输入中括号本身。 {} 表示包含两个以上(含两个)的候选,必须在其中选取一个。不需要输入花括号本身。 | 分割中括号或者花括号中的两个或两个以上选项。不需要输入“|”本身。 ... 表示其之前的元素可以被重复。 斜体 表示占位符或者需要提供特定值的变量。 大写 表示系统提供的元素,以便与用户定义的元素相互区分。除出现在方括号中的元素外,应当按 照顺序逐字输入。当然,部分元素在系统中是大小写不敏感的,因此用户可以根据系统说明以 小写形式输入。 小写 表示由用户提供的元素。 2 第 2 章 概述 2 第 章 概述 本章节包含以下内容: • 什么是 WalMiner • WalMiner 的适用场景 • WalMiner 的限制与约束 2.1 什么是 WalMiner WalMiner 是 KingbaseES 的 WAL(write ahead logs) 日志解析工具,旨在挖掘 WAL 日志所有的有用信息,从而 为 KingbaseES 的数据恢复提供支持。 2.2 WalMiner 的适用场景 • 用户误删除或更新数据。 • 物理备份损坏的情况下可以尝试使用 WalMiner。 2.3 WalMiner 的限制与约束 • WalMiner 工具的使用必须以数据库超级用户执行。 • 数据库能正常运行。 • full_page_writes 必须为开启状态。 • 拥有完整连续的 WAL 日志。 • 能导出正常使用的数据字典。 • 解析过程中,日志所需数据字典没有发生改变。 3 第 2 章 概述 • 不支持 DDL 的解析。 4 第3章 3 第 章 WALMINER 的运行环境准备 WalMiner 的运行环境准备 主要针对以上 2.3 限制与约束,提前做的一些配置和检查工作 本章节包含以下内容: • 开启 full_page_writes • WAL 日志连续性检查 • 安装 • 数据字典检查 3.1 开启 full_page_writes KingbaseES 默认开启 full_page_writes 。如果未开启,则不能使用 WalMiner 进行日志解析。WalMiner 只解 析 full_page_writes 开启后生成的日志。 • 开启方式: 修改 kingbase.conf 文件中 full_page_writes = on ,并重启数据库。 3.2 WAL 日志连续性检查 查看 sys_wal 目录或指定目录 WAL 日志文件的编号。 3.3 安装 -- 创建 WalMiner 扩展 create extension walminer; 5 第3章 3.4 WALMINER 的运行环境准备 数据字典检查 数据字典是保存 KingbaseES 元数据的文件,解析 WAL 日志时,可以使用已存在的数据字典文件,如果不使用 数据字典文件,则默认使用本库的元数据信息。 • 导出数据字典方式 -- 可传入目录或文件全路径 -- 如果传入目录,会在目录下找 dictionary.d 文件,如果文件不存在,则报错 select walminer_load_dictionary('$KBDATA/sys_walminer/wm_datadict'); select walminer_load_dictionary('$KBDATA/sys_walminer/wm_datadict/dictionary.d'); 6 第 4 章 WALMINER 接口使用介绍 4 第 章 WalMiner 接口使用介绍 本章节包含以下内容: • 添加日志 • 展示日志列表 • 删除日志 • 导出数据字典 • 导入数据字典 • 数据解析 • 查看解析结果 • 结束解析 4.1 添加日志 -- 可添加文件夹或文件 -- 可多次执行,会自动去重 -- 添加文件时,会对文件进行判断,如果不是 WAL 日志,则会报错 select walminer_wal_add('$KBDATA/sys_wal/'); select walminer_wal_add('$KBDATA/sys_wal/000000010000000000000001'); 可以多次添加多个不同的目录,WalMiner 会自动根据日志文件名称进行排序和去重。比如可以同时添加在线日 志目录和归档日志目录。 如果不执行日志导入,直接执行日志分析,则默认会添加 $KBDATA 目录下的 sys_wal 目录,使用在线日志进 行解析时会提示警告信息: NOTICE: Add wal from current sys_wal directory, do not suggest use this way in produce 7 第 4 章 WALMINER 接口使用介绍 4.2 展示日志列表 -- 展示已添加的 WAL 日志列表 select walminer_wal_list(); 4.3 删除日志 -- 可删除文件和文件夹 -- 可多次执行 select walminer_wal_remove('$KBDATA/sys_wal/'); select walminer_wal_remove('$KBDATA/sys_wal/000000010000000000000001'); 4.4 导出数据字典 -- 可传入目录或文件全路径 -- 如果传入目录,数据字典默认名称为 dictionary.d select walminer_build_dictionary('$KBDATA/sys_walminer/wm_datadict'); select walminer_build_dictionary('$KBDATA/sys_walminer/wm_datadict/dictionary.d'); 4.5 导入数据字典 如果不导入数据字典就执行解析的话,会默认使用在线数据字典。 导入数据字典函数可以多次执行,会自动覆盖前一次加载的数据字典。 -- 可传入目录或文件全路径 -- 如果传入目录,会在目录下找 dictionary.d 文件,如果文件不存在,则报错 select walminer_load_dictionary('$KBDATA/sys_walminer/wm_datadict'); select walminer_load_dictionary('$KBDATA/sys_walminer/wm_datadict/dictionary.d'); 8 第 4 章 WALMINER 接口使用介绍 4.6 数据解析 4.6.1 普通解析 -- 解析已加入的所有 WAL 日志 -- 如果没有添加 WAL 日志,则解析 data/sys_wal 目录下所有 WAL 日志 -- 解析过程中遇到 WAL 日志错误、或 WAL 日志不连续,会在错误或不连续的地方停止解析 select walminer_all(); -- 根据时间范围解析 -- 在 add 的 WAL 日志中查找对应时间范围的 WAL 记录 select walminer_by_time(startTime text, endTime text); -- 根据 LSN 范围解析 -- 在 add 的 WAL 日志中查找对应 LSN 范围的 WAL 记录 select walminer_by_lsn(startLSN sys_lsn, endLSN sys_lsn); 解析完成后会自动删除生成的中间文件、已添加的 WAL 日志、已导入的数据字典等。 在时间范围解析中,如果开始时间设置为空,则从已加入的 WAL 日志列表中第一个日志的第一个 LSN 开始解 析。 在时间范围解析中,如果结束时间设置为空,则在已加入的 WAL 日志列表中最后一个日志的最后一个 LSN 结 束解析。 解析时,会从给定的范围开始解析,会从找到的第一个 checkpoint 点开始缓存 FPW,所以如果在日志的开始部 分没有找到 checkpoint,在解析这部分日志时可能会提示警告信息: Can not find for FPW for relnode 16789, blkno 3, ignore redo. 本示例中的 16789 表示文件名,3 表示数据块号,具体数值视实际应用场景而变化。 4.6.2 精准解析 精确解析是指 WalMiner 程序会自动界定需要解析的 WAL 日志列表,并在给定的解析开始点(开始 LSN 或开 始时间)往前探索一个 checkpoint 开始点 c1,从 c1 点开始记录 FPW,然后就可以完美解析指定的范围(LSN 范围 或时间范围)。如果在给定的 WAL 日志列表内没有找到 c1 点,那么此次解析会报错停止。 -- 根据时间范围解析 -- 在 add 的 WAL 日志中查找对应时间范围的 WAL 记录 -- true/false 代表是否精准解析 select walminer_by_time(startTime text, endTime text, 'true'); -- 根据 LSN 范围解析 9 第 4 章 WALMINER 接口使用介绍 -- 在 add 的 WAL 日志中查找对应 LSN 范围的 WAL 记录 -- true/false 代表是否精准解析 select walminer_by_lsn(startLSN sys_lsn, endLSN sys_lsn, 'true'); 解析完成后会自动删除生成的中间文件、已添加的 WAL 日志、已导入的数据字典等。 4.6.3 单表解析 -- 根据时间范围解析 -- 在 add 的 WAL 日志中查找对应时间范围的 WAL 记录 -- true/false 代表是否精准解析 -- reloid 表示需要解析的表 OID select walminer_by_time(startTime text, endTime text, 'true', reloid oid); select walminer_by_time(startTime text, endTime text, 'false', reloid oid); -- 根据 LSN 范围解析 -- 在 add 的 WAL 日志中查找对应 LSN 范围的 WAL 记录 -- true/false 代表是否精准解析 -- reloid 表示需要解析的表 OID select walminer_by_lsn(startLSN sys_lsn, endLSN sys_lsn, 'true', reloid oid); select walminer_by_lsn(startLSN sys_lsn, endLSN sys_lsn, 'false', reloid oid); 解析完成后会自动删除生成的中间文件、已添加的 WAL 日志、已导入的数据字典等。 4.7 查看解析结果 select * from walminer_contents; walminer_contents 表字段描述信息: 10 第 4 章 WALMINER 接口使用介绍 4.8 字段名称 字段类型 字段描述 sqlno integer SQL 语句在事务里的编号 xid bigint 当前事务的 xid topxid bigint 父事务的 xid sqlkind integer SQL 语句类型(INSERT/DELETE/UPDATE) minerd boolean 是否能解析 timestamp timestamp with time zone 事务提交时间 op_text text redo 语句 undo_text text undo 语句 complete boolean 事务是否已完成 schema text 模式名 relation text 表名 start_lsn sys_lsn 事务开始的 LSN 号 commit_lsn sys_lsn 事务提交时的 LSN 号 结束解析 -- 会清空解析过程中生成的中间文件 select walminer_stop(); 11 第5章 5 第 章 WALMINER 使用示例 WalMiner 使用示例 本章节包含以下内容: • 解析本库 WAL 日志 • 解析其他数据库的 WAL 日志 5.1 解析本库 WAL 日志 解析本库 WAL 日志无需添加日志和数据字典 5.1.1 创建扩展 -- 创建扩展 create extension walminer; 5.1.2 执行普通解析 -- 执行解析 select walminer_all(); 12 第5章 5.1.3 WALMINER 使用示例 时间范围解析 -- 时间范围解析 select walminer_by_time('2021-09-08 11:27:00', '2021-09-08 11:37:00'); 5.1.4 LSN 范围解析 -- LSN 范围解析 select walminer_by_lsn('0/010000A0', '0/016E6578'); 5.1.5 单表解析 -- 单表解析 -- 开始时间/LSN 结束时间/LSN 是否精准解析 表 OID select walminer_by_time('2021-09-08 11:27:00', '2021-09-08 11:37:00', 'false', 16452); select walminer_by_lsn('0/010000A0', '0/016E6578', 'false', 16452); 单表解析时,必须指定是否为精准解析。 13 第5章 5.1.6 WALMINER 使用示例 查看分析结果 -- 查看分析结果 select * from walminer_contents; 5.1.7 结束分析 -- 结束分析 select walminer_stop(); 14 第5章 5.2 WALMINER 使用示例 解析其他数据库的 WAL 日志 解析其他库的日志暂不支持解析自定义数据类型,如果其他库的 WAL 日志中存在自定义数据类型,而本库没有 对应的数据类型则会解析失败。 5.2.1 从其他数据库导出数据字典 -- 导出数据字典 select walminer_build_dictionary('/home/kingbase/dict'); 导出的数据字典名称为:dict 5.2.2 导入其他数据库的数据字典 -- 导入数据字典 select walminer_load_dictionary('/home/kingbase/dict/dict'); 15 第5章 5.2.3 WALMINER 使用示例 添加日志文件 -- 添加日志文件 select walminer_wal_add('/home/kingbase/sys_wal/000000010000000000000001'); 5.2.4 日志解析 -- 普通解析 select walminer_all(); -- 时间范围解析 select walminer_by_time('2021-09-08 11:27:00', '2021-09-08 11:37:00'); -- LSN 范围解析 select walminer_by_lsn('0/010000A0', '0/016E6578'); -- 单表解析 select walminer_by_time('2021-09-08 11:27:00', '2021-09-08 11:37:00', 'false', 16452); select walminer_by_lsn('0/010000A0', '0/016E6578', 'false', 16452); 16 第5章 5.2.5 WALMINER 使用示例 查看分析结果 -- 查看分析结果 select * from walminer_contents; 5.2.6 结束分析 结束分析会删除分析过程中生成的中间文件、导入的数据字典、WAL 日志文件以及分析结果 -- 结束分析 select walminer_stop(); 17 第5章 WALMINER 使用示例 18 版权声明 版权声明 北京人大金仓信息技术股份有限公司(简称:人大金仓)版权所有,并保留对本手册及本声明的一切权利。 未得到人大金仓的书面许可,任何人不得以任何方式或形式对本手册内的任何部分进行复制、摘录、备份、修 改、传播、翻译成其他语言、将其全部或部分用于商业用途。 免责声明 本手册内容依据现有信息制作,由于产品版本升级或其他原因,其内容有可能变更。人大金仓保留在没有任何通 知或者提示的情况下对手册内容进行修改的权利。 本手册仅作为使用指导,人大金仓在编写本手册时已尽力保证其内容准确可靠,但并不确保手册内容完全没有错 误或遗漏,本手册中的所有信息也不构成任何明示或暗示的担保。 技术支持 • 人大金仓官方网站:http://www.kingbase.com.cn/ • 人大金仓文档中心:http://help.kingbase.com.cn/ • 全国服务热线:400-601-1188 • 人大金仓技术支持与反馈信箱:support@kingbase.com.cn 19 服务周期承诺 服务周期承诺 由于市场需求在不断变化,技术创新和发展的进程不断加剧,产品的版本更迭不可避免。人大金仓对于产品版本 生命周期的有效管理,有助于您提前规划项目,更好地从产品服务终止上过渡。 表 1: KingbaseES 产品生命周期里程碑 关键里程碑点 定义 产品发布日期 产品正式发布版本,即 GA(general availability)版本的发布日期。 停止销售日期 正式停止销售的日期,版本停止接受订单日。该日之后,产品将不再销售。 停止功能升级日期 在该日期之后,不再提供新特性和新硬件支持。但依旧提供错误修复、安全修复、功 能维护等服务。 停止功能维护日期 在该日期之后,不再维护功能,修复问题。但依旧提供安全修复等服务 停止安全维护日期 在该日期之后,不再发布补丁版本修复中高风险漏洞,仅提供有限的支持。 产品服务终止日期 停止提供产品服务和支持的日期。包括软件维护版本,缺陷修复,以及针对该产品的 所有服务支持(包括服务热线和远程/现场支持)。 服务周期策略 金仓数据库管理系统 KingbaseES 产品确保以下的服务周期: 1)产品自发布之日起至产品停止功能升级(包含新特性、新硬件支持)之日不少于 5 年。 2)产品停止功能升级之日起至产品停止功能维护(主要包括问题修复)之日不少于 4 年。 3)产品功能维护停止之日起至产品停止安全维护(包括中高风险漏洞修复)之日不少于 2 年。 服务终止策略 金仓数据库管理系统 KingbaseES 产品确保在销售后,至少提供 6 年的服务支持。 注意: 人大金仓将会综合各方因素来确定产品服务终止日期。并将在实际产品服务终止日期之前至少 90 天,通过公 20 服务周期承诺 开方式宣布产品服务终止日期。 21