小编Ste*_*fan的帖子

从日志文件中重放(重新执行)MySQL SELECT 查询

MySQL 基准测试

我想通过从日志文件重新执行真实查询来评估不同 MySQL 实例的性能。我知道像 mysqlslap 这样的工具会产生随机和自动生成的查询,但我更愿意用真实的查询来测试系统。

为了对新系统进行基准测试,我最好使用慢日志或一般日志收集所有查询,然后将查询重播到新系统。

应该可以过滤查询,例如我只想重放 SELECT 语句。我想知道是否存在积极维护的程序或最佳实践来实现预热或基准测试功能。

要求

  • 重放(重新执行)从正在运行的 MySQL 实例中收集的真实查询
  • 按语句类型(INSERT、UPDATE、DELETE)和 DML 过滤语句
  • 获取统计信息(在迁移之前、之后查询运行了多长时间等)

问题:工具已过时

Percona 提供了几种似乎是为此目的而设计的工具。所有这些都已从当前的 Percona 工具包中删除。这些工具是:

  • pt-日志播放器
  • pt-query-digest 的重播选项
  • 查询回放

潜在的解决方案

使用 Debian Wheezy docker 容器可以轻松访问提供 pt-log-player 的旧 Percona Toolkit 版本。运行容器docker run -it --network="host" --name wheezy debian:wheezy /bin/bash并在其中安装旧版本的工作原理:

apt-get update
apt-get install percona-toolkit mysql-client
Run Code Online (Sandbox Code Playgroud)

我也尝试过 percona-playback,但它似乎也没有得到非常积极的维护。这将是一个很棒的工具,但它几乎没有记录,而且我找不到仅过滤 SELECT 语句的方法,因为我不想运行其他 DML 语句。我只看到 Percona Server 提供了一个启用只读选项的标志,但这不适用于 vanilla MySQL 或 AWS RDS。

但是,我更愿意使用不依赖于未维护工具的程序。

想象的工作流程

  1. 启用慢查询日志或一般日志
  2. 解析和分析日志文件
  3. 过滤相关查询
  4. 重新执行查询
  5. 比较结果

有什么工具可以实现这一目标吗?过滤慢查询日志的最佳方法是什么?如何理智地重播查询?

mysql performance benchmark logs slow-log

6
推荐指数
1
解决办法
1325
查看次数

标签 统计

benchmark ×1

logs ×1

mysql ×1

performance ×1

slow-log ×1