mysql 查看日志_mysql查看、清理日志

1、清除mysql日志

如果想要关闭二进制mysql日志,可以在my.ini里把log-bin这行注释掉

要清二进制日志的话,在mysql开启了二进制日志的状态下,以root身份登录mysql以后执行下面两个命令之一:

PURGE MASTER LOGS before '2020-1-1';        清除指定日期之前的二进制日志

PURGE MASTER LOGS TO 'mysql-bin.010';        清除指定文件编号之前的二进制日志

注意,如果没运行命令而是直接删除mysql-bin.xxx文件的话,mysql-bin.index里仍然记录了日志文件列表,这样以后再清日志时,就会因找不到列表中的日志文件而无法清理mysql日志

可以用bin目录中的mysqlbinlog.exe查看mysql二进制日志。

C:\>mysqlbinlog mysql-bin.000001

如果my.ini中设置了字符集的话,可能会出现这以下这样的报错

mysqlbinlog: unknown variable 'default-character-set=gbk'

带上--no-defaults参数后即可解决

C:\>mysqlbinlog --no-defaults mysql-bin.000001

如果是要清理*.err日志的话,直接停止mysql数据库,将这个文件剪切走或者删除,重启mysql生成一个新的即可。

2、查看mysql日志

查看当前日志文件列表:show binary logs或是show master logs; 使用binlog日志的目的是为了方便恢复数据,所以我们不光要会删除,还要会用日志来恢复数据。

复制代码代码示例:

mysql> show binary logs;

+----------------+-----------+

| Log_name       | File_size |

+----------------+-----------+

| ablelee.000001 | 150462942 |

| ablelee.000002 |       125 |

| ablelee.000003 |       106 |

+----------------+-----------+

3、mysql自动清理日志办法

但没有看到删除的配置,在mysql里show了一下variables,

复制代码代码示例:

mysql> show variables like '%log%';

查到了

| expire_logs_days   | 0  |

这个默认是0,也就是logs不过期,这个是一个global的参数,所以需要执行

复制代码代码示例:

set global expire_logs_days=8;

这样8天前的log就会被删除了,如果有回复的需要,请做好备份工作,但这样设置还不行,下次重启mysql了,配置又恢复默认了,所以需在my.cnf中设置

复制代码代码示例:

expire_logs_days = 8

3、清空某个mysql表中所有内容

delete from 表名;

truncate table 表名;

不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以清空mysql表中所有内容。效率上truncate比delete快,但truncate删除后不记录mysql日志,不可以恢复数据。

delete的效果有点像将mysql表中所有记录一条一条删除到删完,而truncate相当于保留mysql表的结构,重新创建了这个表,所有的状态都相当于新表。

你可能感兴趣的:(mysql,查看日志)