mysql的日志类型及作用
当服务起不来或者报错的时候,我们第一时间想到的就是日志,日志这个东西记载了许多重要的信息,有利于我们排除故障。当然,mysql也有日志。
先来说说,mysql日志的作用,当数据库遭到意外损坏,服务起不来等等,可以通过日志文件来拍错。
还可以利用日志文件来进行数据恢复。
一、日志的分类
1、错误日志:记录了mysql服务的启动,关闭和运行时发生的错误;
2、通用查询日志:记录用户的所有操作,包括启动、关闭服务,插入、查询等语句;
3、二进制日志:以二进制的形式记录了数据库中的操作,但不记录查询语句;
4、慢日志:记录了mysql 所有查询超时的语句
二、日志设置
1、除了二进制日志,其他都是文本文件
2、日志文件通常存储在Mysql数据目录下
3、默认只启动了错误日志功能,其他需要手工启动
4、但启动日志功能会降低Mysql的执行速度,因为一条操作写进日志中是要花时间的
二进制日志
以二进制文件的形式记录了数据库的操作,但是不记录查询语句,也叫变更日志
启动与设置二进制日志,在mysql配置文件中添加
[root@localhost data]# cat /etc/my.cnf log-bin = /data/mysql-bin
启动与设置二进制日志:在Mysql的配置文件中,log-bin=DIR/filename
DIR是存放二进制日志的目录;
每启动一次Mysql,该目录下就会生成一个filename.00000x的文件;
目录下还有一个filename.index的文件,用于存储所有二进制文件清单;
如果我们没有设置DIR和filename,则默认在数据目录下以hostname-bin.00000x命名
去到/data目录下查看是否有文件生成
[root@localhost ~]# cd /data/
[root@localhost data]# ls
aria_log.00000001 ibdata1 ib_logfile1 mysql-bin.000001 performance_schema xhk
aria_log_control ib_logfile0 mysql mysql-bin.index test
临时停止与启动二进制日志
MariaDB [(none)]> set sql_log_bin=0; 停止 MariaDB [(none)]> set sql_log_bin=1; 启动
注意:二进制日志文件与数据库数据文件最好不要放在同一块硬盘上,如果存放数据文件的硬盘坏了,可以用另一块硬盘的二进制日志来恢复数据
查看二进制日志
[root@localhost data]# mysqlbinlog mysql-bin.000001
删除二进制日志
删除所有
MariaDB [(none)]> reset master;
删除00004之前的所有
MariaDB [(none)]> purge master logs to 'mysql-bin.000004';
删除指定日期时间之前的所有
MariaDB [(none)]> purge master logs to '2016-08-10 15:00:00';
使用二进制日志还原数据库
[root@localhost data]# mysqlbinlog mysql-bin.000001 | mysql -u root -p
[root@localhost data]# mysqlbinlog mysql-bin.000002 | mysql -u root -p
这条命令可以理解为:使用mysqlbinlog读取二进制日志文件然后使用mysql命令还原到数据库中
注意还原时必须是编号小的先还原
还可以制定你想恢复的时间点
[root@localhost data]# mysqlbinlog --start-position="213" sstop-position="456" mysql-bin.000001 | mysql -u root -p
数值为二进制文件中的pos号
========================================================================
错误日志
主要用于记录Mysql服务的开启、关闭和错误信息,若服务启动不成功第一件事应该就是去看这个错误日志
错误日志是默认开启的,且错误日志无法被关闭
设置错误日志:在配置文件中,log-error=DIR/filename
[root@localhost ~]# cat /etc/my.cnf log-error = /data/mysql-error.log
======================================================================
通用查询日志
用来记录用户的所有操作:启动和关闭mysql、更新语句、查询语句
启用和设置通用查询日志:配置文件中,log=DIR/filename
============================================================================
慢查询日志
记录执行时间超过指定时间的执行语句
启动和设置慢查询日志:在配置文件中
log-slow-queries=DIR/filename
long_query_time=n #设置时间为n秒,默认为10s
删除日志
mysqladmin -u root -p flush-logs