本文油:头条号:西西图图(美食运维) 提供
首先:show OPEN TABLES where In_use > 0; 多刷新基础查看有没有没变动的。没有变动的行,数值一直不变的就是被锁定。
2、SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX\G 可以查看具体的所情况
3、show processlist查看都有哪些锁。
4、确定好了的话用这条命令查杀:SELECT concat('KILL ',ID,';') FROM INFORMATION_SCHEMA.PROCESSLIST where db="qxfw"; 这里的qxfw是我的库名,你可以根据3哪里显示出来自己的库名来填写。
################## binlog 日志删除 ##############################
1、查看现在都有哪些binlog
MySQL> show
binary
logs;
2、删除指定binlog
purge
binary
logs
to
'mysql-bin.000003'
;
3、查看binlog过期时间
mysql> show variables like 'expire_logs_days'; 或者
mysql> select @@global.expire_logs_days;
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| expire_logs_days | 0 |
+------------------+-------+
1 row in set (0.00 sec) expire_logs_days=0:表示所有binlog日志永久都不会失效,不会自动删除; 目前需求,只想保留七天日志,其余日志打包、压缩后备份至其他地方:
修改方式: 永久生效(重启后即生效): 修改配置文件my.ini(window系统环境下,若为Linux环境,则修改my.cnf文件)文件: 在[mysqld]标签内增加如下内容 expire_logs_days=7 max_binlog_size=500M 设置之后不会立即清除,触发条件是:
为了使之生效,需要执行flush logs。 mysql> flush logs; Query OK, 0 rows affected, 64 warnings (0.16 sec
如果binlog非常多,不要轻易设置该参数,有可能导致io争用,这时候可以使用purge命令予以清除: 将bin.000055之前的binlog清掉: mysql>purge binary logs to 'bin.000055'; 将指定时间之前的binlog清掉: mysql>purge binary logs before '2019-10-13 23:59:59'; 注意,不要轻易手动去删除binlog,会导致binlog.index和真实存在的binlog不匹配,而导致expire_logs_day失效
4、临时设定生效方法
set global expire_logs_days = 10; (10天前的全删)
flush privileges;