当服务起不来或者报错的时候,我们第一时间想到的就是日志,日志这个东西记载了许多重要的信息,有利于我们排除故障。当然,mysql也有日志。
先来说说,mysql日志的作用,当数据库遭到意外损坏,服务起不来等等,可以通过日志文件来拍错。
还可以利用日志文件来进行数据恢复。
一、日志的分类
1、错误日志:记录了mysql服务的启动,关闭和运行时发生的错误;
2、通用查询日志:记录用户的所有操作,包括启动、关闭服务,插入、查询等语句;
3、二进制日志:以二进制的形式记录了数据库中的操作,但不记录查询语句;
4、慢日志:记录了mysql 所有查询超时的语句
二、日志设置
1、除了二进制日志,其他都是文本文件
2、日志文件通常存储在Mysql数据目录下
3、默认只启动了错误日志功能,其他需要手工启动
4、但启动日志功能会降低Mysql的执行速度,因为一条操作写进日志中是要花时间的
二进制日志
以二进制文件的形式记录了数据库的操作,但是不记录查询语句,也叫变更日志
启动与设置二进制日志,在mysql配置文件中添加
1
2
[iyunv@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目录下查看是否有文件生成
[iyunv@localhost ~]# cd /data/
[iyunv@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
临时停止与启动二进制日志
1
2
MariaDB [(none)]> set sql_log_bin=0; 停止
MariaDB [(none)]> set sql_log_bin=1; 启动
注意:二进制日志文件与数据库数据文件最好不要放在同一块硬盘上,如果存放数据文件的硬盘坏了,可以用另一块硬盘的二进制日志来恢复数据
查看二进制日志
[iyunv@localhost data]# mysqlbinlog mysql-bin.000001
删除二进制日志
删除所有
1
MariaDB [(none)]> reset master;
删除00004之前的所有
1
MariaDB [(none)]> purge master logs to 'mysql-bin.000004';
删除指定日期时间之前的所有
1
MariaDB [(none)]> purge master logs to '2016-08-10 15:00:00';
使用二进制日志还原数据库
[iyunv@localhost data]# mysqlbinlog mysql-bin.000001 | mysql -u root -p
[iyunv@localhost data]# mysqlbinlog mysql-bin.000002 | mysql -u root -p
这条命令可以理解为:使用mysqlbinlog读取二进制日志文件然后使用mysql命令还原到数据库中
注意还原时必须是编号小的先还原
还可以制定你想恢复的时间点
[iyunv@localhost data]# mysqlbinlog --start-position="213" sstop-position="456" mysql-bin.000001 | mysql -u root -p
数值为二进制文件中的pos号
========================================================================
错误日志
主要用于记录Mysql服务的开启、关闭和错误信息,若服务启动不成功第一件事应该就是去看这个错误日志
错误日志是默认开启的,且错误日志无法被关闭
设置错误日志:在配置文件中,log-error=DIR/filename
1
2
[iyunv@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
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com