mysql运维常用命令
1、查询当前进程、连接数:
show full processlist;
# max_connections: 最大连接数
show variables like '%max_connections%';
2、检查是否锁表:
SHOW OPEN TABLES WHERE IN_USE > 0;
3、查看正在锁的事务:
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
4、查看等待锁的事务:
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
5、查看未提交的事务:
SELECT * FROM information_schema.innodb_trx;
# where条件也可以添加,参数为事务ID
SELECT * FROM information_schema.innodb_trx WHERE trx_id IN ('18773049', '18771486');
6、锁超时时间:
show variables like 'innodb_lock_wait_timeout';
6、查看事务是否自动提交:
SHOW VARIABLES LIKE '%autocommit%';
7、表级锁争竞争状态查看:
# 如果Table_locks_waited 数值比较高,就说明存在着较严重的表级锁争用情况 ,性能有问题,需要优化
show status like '%table_lock%';
8、查看缓存池大小:
// 一般在生产环境中,在硬件不紧张的情况下,建议使用此策略
# Buffer Pool 的总大小
innodb_buffer_pool_size=8589934592
# Buffer Pool 的实例数(个数)
innodb_buffer_pool_instance=4
9、查看innodb运行中的参数:
show engine innodb status;
----------------------
Buffer Pool AND MEMORY
----------------------
# Buffer Pool 的最终大小
Total memory allocated
# Buffer Pool 一共有多少个缓存页
Buffer Pool size
# free 链表中一共有多少个缓存也是可以使用的
Free buffers
# lru链表中一共有多少个缓存页
Database pages
# lru链表链表中的冷数据区一共有多少个缓存页
Old database pages
# flush链表中的缓存页的数量
Modified db pages
# 等待从磁盘上加载进来的缓存页的数量
Pending reads
# 即将从lru链表中刷入磁盘的数量,flush链表中即将刷入磁盘的缓存页的数量
Pending writes: LRU 0, flush list 0, single page 0
# lru链表的冷数据区的缓存页被访问之后转移到热数据区的缓存页的数量,以及冷数据区里1s之内被访问但是没有进入到热数据区的缓存页的数量
Pages made young 260368814, not young 0
# 每秒从冷数据转移到热数据区的缓存页的数量,以及每秒在冷数据区被访问但是没有进入热数据区的缓存页的数量
332.69 youngs/s, 0.00 non-youngs/s
# 已经读取创建和写入的缓存页的数量,以及每秒读取、创建和写入的缓存页的数量
Pages read 249280313, created 1075315, written 32924991 359.96 reads/s, 0.02 creates/s, 0.23 writes/s
# 表示1000次访问中,有多少次是命中了BufferPool缓存中的缓存页,以及每1000次访问有多少数据从冷数据区转移到热数据区,以及没有转移的缓存页的数量
Buffer Pool hit rate 867 / 1000, young-making rate 123 / 1000 not 0 / 1000
# lru链表中缓存页的数量
LRU len: 8190
# 最近50s读取磁盘页的总数,cur[0]表示现在正在读取的磁盘页的总数
I/O sum[5198]:cur[0],
10、bin_log需要设置过期时间:
// 配置文件设置,单位是天
expire_logs_days=15
// 全局设置
SET GLOBAL expire_logs_days = 15;
// 刷新log,如果不执行的话,不能立即删除log
flush logs;