使用 pt-deadlock-logger 记录数据库死锁
文章目录
- pt-deadlock-logger 是 percona 公司下 percona-toolkit 中的一款监控数据库死锁的工具
- 死锁日志可以直接打印到 STDOUT ,也可以通过参数指定写入另一个库的指定表中
安装
Ubuntu
|
|
参数
- –host:指定 host
- –user:指定用户名
- –password:密码
- –socket:socket
- –iterations:检查到指定次数死锁后关闭监控
- –run-time:运行时间,运行多久后退出程序,可选后缀 s=seconds, m=minutes, h=hours, d=days,默认为 s
- –interval:检查死锁的频率,默认为 30s ,可选后缀 s=seconds, m=minutes, h=hours, d=days
- –log:将锁信息写入指定文件中
- –dest:将锁日志写入指定表中
- –create-dest-table:如果表不存在,自动创建表
- –daemonize:fork 至后台运行
- –pid:指定路径,创建一个 PID file 并写入 pid
使用
监控锁并输出至STDOUT
- 开启监控
|
|
- 创建测试库、数据
|
|
- 开启两个 MySQL Shell ,模拟死锁冲突
- 分别开启两个事务,在第一个事务中更改 id=1 的行,第二个事务中更改 id=2 的行,在 第一个事务中再更改 id=2 的行,然后在第二个事务中更改 id=1 的行。
|
|
|
|
- 第二个事务更改 id=1 行时触发锁冲突
|
|
- pt-deadlock-logger 打印死锁相关信息
|
|
监听并将锁信息写入库中
- 创建存储监听日志的 DB
|
|
- 开启监听服务
|
|
- 触发锁
- 查看锁日志
|
|
实践
- 后台运行监控,并将锁信息写入文件中
|
|
- 后台运行监控,并将锁信息写入库中
|
|
文章作者 Xiang
上次更新 2021-06-23