zoukankan      html  css  js  c++  java
  • mysql锁表查询,binlog日志清理

    本文油:头条号:西西图图(美食运维) 提供

    首先:show OPEN TABLES where In_use > 0; 多刷新基础查看有没有没变动的。没有变动的行,数值一直不变的就是被锁定。

    2、SELECT * FROM INFORMATION_SCHEMA.INNODB_TRXG   可以查看具体的所情况

    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;
    
    
  • 相关阅读:
    计算机基础知识
    markdown简介及基本语法
    session和cookie的区别
    MySQL的游标
    数据库单表查询
    外键(有无级联)
    mysql
    数据库引擎
    守护进程和守护线程的区别
    快排等
  • 原文地址:https://www.cnblogs.com/xingyunfashi/p/13445040.html
Copyright © 2011-2022 走看看