想要监控InnoDB unpurge list,除了执行 show engine innodb status\G 之外还有什么方法?
在以往,想要查看InnoDB中unpurges list length,需要执行下面的命令:
[root@yejr.me]> show engine innodb status\G
...
TRANSACTIONS
------------
Trx id counter 8684590971
Purge done for trx's n:o < 8682844874 undo n:o < 0
state: running but idle
History list length 462312
...
今天找到另一个可以查看InnoDB中unpurge list length的方法。
执行下面SQL:
[root@yejr.me]> select * from information_schema.innodb_metrics
where name = 'trx_rseg_history_len'\G
*************************** 1. row ***************************
NAME: trx_rseg_history_len
SUBSYSTEM: transaction
COUNT: 5
MAX_COUNT: 27
MIN_COUNT: 5
AVG_COUNT: NULL
COUNT_RESET: 5
MAX_COUNT_RESET: 27
MIN_COUNT_RESET: 5
AVG_COUNT_RESET: NULL
TIME_ENABLED: 2019-05-20 10:41:50
TIME_DISABLED: NULL
TIME_ELAPSED: 1921486
TIME_RESET: NULL
STATUS: enabled
TYPE: value
COMMENT: Length of the TRX_RSEG_HISTORY list
有了这个方法,监控系统就会方便很多了,不用再利用正则去读取 SHOW ENGINE INNODB STATUS 输出的结果。
当然了,要先确认这个metric被启用了(MySQL 8.0.16下默认是启用的),若未启用,执行下面的命令:
set global innodb_monitor_enable = trx_rseg_history_len;
其他更多metrics可根据需求自行启用,当然了,大部分metric都是可以从global status里获取的。