使用 MySQL 中的一般日志捕获的查询对 MySQL 进行压力测试

Ruc*_*ami 2 mysql performance logs scalability performance-testing

有没有可用的工具可以使用MySQL通用日志创建的日志文件进行压力测试?在谷歌上进行了大量搜索后,我发现很少有压力测试工具只使用一些基准进行压力测试。一种解决方案是使用 Apache JMeter,但它不会从 MySQL 日志文件创建测试计划,并且为我拥有的所有查询创建自定义测试计划太耗时了。
或者是否有至少可以从 MySQL 日志创建 .sql 文件的工具?

Rol*_*DBA 5

这是使用暴力破解 mysql 的更直接方法:将一般设置为 MyISAM 表。安装时,您会发现该表格mysql.general_log为 CSV 表格。

请阅读我过去的帖子,而不是重新发明轮子并进行大量打字:

一旦mysql.general_log转换为 MyISAM 并记录查询,只需像访问任何其他 MyISAM 表一样访问日志。

这是MyISAM版本的结构 mysql.general_log

mysql> show create table mysql.general_log\G
*************************** 1. row ***************************
       Table: general_log
Create Table: CREATE TABLE `general_log` (
  `event_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `user_host` mediumtext NOT NULL,
  `thread_id` int(11) NOT NULL,
  `server_id` int(10) unsigned NOT NULL,
  `command_type` varchar(64) NOT NULL,
  `argument` mediumtext NOT NULL,
  KEY `event_time` (`event_time`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

从这里开始,只需编写以查询开头的所有内容:

SQLSTMT="SELECT argument FROM mysql.general_log"
SQLSTMT="${SQLSTMT} WHERE LEFT(argument,6) IN"
SQLSTMT="${SQLSTMT} ('INSERT','UPDATE','DELETE','SELECT')"
mysql -uroot -p -ANe"${SQLSTMT}" > SQLCommands.sql
Run Code Online (Sandbox Code Playgroud)

你去吧。

试一试 !!!