本文主要介绍在使用云数据库RDS MySQL版实例时,实时查询慢日志slow_log的方法。
云数据库RDS MySQL版实例的版本不同,对应的查询方式不同,详情如下。
实时查询慢日志slow_log的步骤如下:
SELECT * FROM mysql.slow_log;
RDS MySQL v5.7版本和RDS MySQL v8.0版本中,慢日志slow_log表的sql_text列是blob类型。在查询时需要进行转换,操作方法有以下两种。
查询慢日志slow_log时,通过CONVERT方法转换sql_text列为UTF-8字符集,操作步骤如下:
SELECT start_time, user_host, query_time, lock_time, rows_sent, rows_examined, db, CONVERT(sql_text USING utf8) FROM mysql.slow_log;
创建一个UTF-8字符集的slow_log_tmp表,并设定sql_text列为varchar类型,导入slow_log表数据后进行查询。
说明:此方法等同于备份slow_log表,RDS不会自动清理新创建的slow_log_tmp表。因此,此方法会占用RDS实例的存储空间。
CREATE TABLE `test`.`slow_log_tmp` (
`start_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
`user_host` mediumtext NOT NULL,
`query_time` time(6) NOT NULL,
`lock_time` time(6) NOT NULL,
`rows_sent` int(11) NOT NULL,
`rows_examined` int(11) NOT NULL,
`db` varchar(512) NOT NULL,
`last_insert_id` int(11) NOT NULL,
`insert_id` int(11) NOT NULL,
`server_id` int(10) unsigned NOT NULL,
`sql_text` varchar(2000) NOT NULL,
`thread_id` bigint(21) unsigned NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log tmp';
说明:本文在test数据库新建名为slow_log_tmp为例。您可以根据现场实际情况调整该表的名称和所在数据库。
INSERT INTO test.slow_log_tmp SELECT * FROM mysql.slow_log;
SELECT * FROM test.slow_log_tmp;
云数据库RDS MySQL版