Skip to content

Latest commit

 

History

History
101 lines (62 loc) · 3.82 KB

File metadata and controls

101 lines (62 loc) · 3.82 KB

限制与边界

本文说明 BinlogViz 的产品边界,帮助运维人员理解这个工具被设计成做什么,以及它刻意不做什么。

支持的 Binlog 格式

BinlogViz 面向本地 MySQL ROW 格式 binlog 文件。

这个边界非常重要,因为分析器的设计前提是消费规范化后的行级事件,并从行级写入活动中推导负载统计。如果你的运维问题依赖 statement-based replay 语义,那么应该选择另一类工具链。

换句话说,当你的输入是本地 ROW 格式 binlog 序列,并且目标是做负载分析而不是逻辑回放时,BinlogViz 才是合适的工具。

输入范围

BinlogViz 只分析本地文件。

命令只接受两种输入方式之一:

  • 显式位置参数 binlog 路径
  • 使用 --from-dir--prefix 的 discovery 模式

它不会帮你拉取远程 binlog,也不会连接在线 MySQL 实例,更不会替你管理复制位点。discovery 模式本身也被刻意限定为窄契约:扫描单个目录、按前缀加纯数字后缀过滤,再把结果排序后送去分析。

这种设计让输入契约保持可预测,但也意味着运维人员需要先把本地文件集准备好。

运行时模型

BinlogViz 采用单次流式命令路径:

parse -> normalize -> consume -> finalize -> render

这个设计让运行过程中的常驻内存状态保持有界,但并不意味着分析在命令末尾没有成本。

几个重要的运行时影响:

  • 解析阶段是流式的
  • 最终报告组装仍然发生在解析完成之后
  • 使用 --detail-store duckdb 时每次命令都会创建一个临时 DuckDB 存储(默认:none)
  • 输入越大,finalize 阶段越可能表现出明显耗时和临时磁盘占用

因此,这个产品优化的是有界流式分析,而不是零磁盘、也不是完全增量式的交互探索。

SQL 上下文边界

SQL 上下文是有界的,而且面向展示。

当前限制包括:

  • 存储 SQL 最大 4096 字节
  • 查询摘要最大 160 个字符
  • 查询字段是否展示由 --sql-context 控制

这意味着:

  • BinlogViz 不承诺无损保存原始 SQL 文本
  • summary 模式用于帮助运维快速建立判断上下文
  • 即便是 full 模式,也只会暴露有界存储后的 SQL,而不是无限长度的原始语句

如果你的流程需要完整长 SQL 的归档或取证保存,就不应把 BinlogViz 当作那个系统。

输出与契约边界

BinlogViz 有意把输出通道分离:

  • 最终报告写到 stdout
  • 进度、解析出的文件列表、finalize 状态以及命令错误写到 stderr

这个契约便于 shell 重定向和自动化,但也意味着运维人员不应把 stderr 内容误当成报告载荷的一部分。如果你只重定向 stdout,得到的是报告;如果你也想保留运行状态日志,就要单独捕获 stderr

产品焦点

BinlogViz 聚焦于负载分析,而不是完整的数据库运维控制面。

它被设计来回答的问题包括:

  • 哪些表最热
  • 哪些事务最大
  • 什么时候出现活动尖峰
  • 整体写入负载长什么样

它并不定位为:

  • MySQL 复制管理器
  • 实时 binlog tailing 服务
  • statement replay 引擎
  • 完整历史数据重建工具
  • 通用 SQL 可观测性平台

明确的非目标

为了保持产品聚焦,以下内容是当前文档范围内的明确非目标:

  • 管理或修改 MySQL 服务器状态
  • 在分析过程中直接连接远程 MySQL 实例读取数据
  • 在报告中无限制保存原始 SQL 文本
  • 将进度输出并入机器可读报告流
  • 替代更深入的复制、取证或可观测性系统

当你需要的是本地 ROW binlog 工作负载的快速运维总结时,使用 BinlogViz。若你需要远程采集、statement 级精确重建,或更广泛的数据库运维平台,则应该选择其他工具。