mysql的日志类型及作用

mysql的日志类型及作用

当服务起不来或者报错的时候,我们第一时间想到的就是日志,日志这个东西记载了许多重要的信息,有利于我们排除故障。当然,mysql也有日志。

先来说说,mysql日志的作用,当数据库遭到意外损坏,服务起不来等等,可以通过日志文件来拍错。

还可以利用日志文件来进行数据恢复。

一、日志的分类

1、错误日志:记录了mysql服务的启动,关闭和运行时发生的错误;

2、通用查询日志:记录用户的所有操作,包括启动、关闭服务,插入、查询等语句;

3、二进制日志:以二进制的形式记录了数据库中的操作,但不记录查询语句;

4、慢日志:记录了mysql 所有查询超时的语句

二、日志设置
1、除了二进制日志,其他都是文本文件
2、日志文件通常存储在Mysql数据目录下
3、默认只启动了错误日志功能,其他需要手工启动
4、但启动日志功能会降低Mysql的执行速度,因为一条操作写进日志中是要花时间的

  

二进制日志

  以二进制文件的形式记录了数据库的操作,但是不记录查询语句,也叫变更日志

  启动与设置二进制日志,在mysql配置文件中添加

[[email protected]ocalhost 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目录下查看是否有文件生成

[[email protected] ~]# cd /data/

[[email protected] 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; 启动

注意:二进制日志文件与数据库数据文件最好不要放在同一块硬盘上,如果存放数据文件的硬盘坏了,可以用另一块硬盘的二进制日志来恢复数据

查看二进制日志

[[email protected] 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‘;

使用二进制日志还原数据库

[[email protected] data]# mysqlbinlog mysql-bin.000001 | mysql -u root -p

[[email protected] data]# mysqlbinlog mysql-bin.000002 | mysql -u root -p

这条命令可以理解为:使用mysqlbinlog读取二进制日志文件然后使用mysql命令还原到数据库中

注意还原时必须是编号小的先还原

还可以制定你想恢复的时间点

[[email protected] data]# mysqlbinlog --start-position="213" sstop-position="456" mysql-bin.000001 | mysql -u root -p

数值为二进制文件中的pos号


========================================================================

错误日志

主要用于记录Mysql服务的开启、关闭和错误信息,若服务启动不成功第一件事应该就是去看这个错误日志

错误日志是默认开启的,且错误日志无法被关闭

设置错误日志:在配置文件中,log-error=DIR/filename

[[email protected] ~]# 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


时间: 2024-10-31 19:51:07

mysql的日志类型及作用的相关文章

Mysql常用日志类型及场景。

日志相关的常见问题: 1.mysql常用日志有哪些?我们在什么情况下使用这些日志? 2.如何通过日志类审计用户活动? 通过插件实现,mysql GPL版没有审计日志.percona mysql有审计日志功能. (1)常用日志类型 错误日志(error-log):记录mysql在启动.运行和停止时出现的问题诊断分析. 常规日志(general_log):记录所有mysql客户端发向mysql服务器的请求.包括连接请求.数据库操作请求以及一些管理命令,无论请求是否成功都会记录在这个日志中,可想如果是

MySQL binlog日志优化

mysql中日志类型有慢查询日志,二进制日志,错误日志,默认情况下,系统只打开错误日志,因为开启日志会产生较大的IO性能消耗. 一般情况下,生成系统中很少打开二进制日志(bin log),bin log日志的优化策略: mysql> show variables like '%binlog%'; +-----------------------------------------+----------------------+ | Variable_name                  

MySQL - 日志类型

七种日志文件 MySQL中有七种日志文件,分别是: 重做日志(redo log) 回滚日志(undo log) 二进制日志(binlog) 错误日志(errorlog) 慢查询日志(slow query log) 一般查询日志(general log) 中继日志(relay log) 其中重做日志和回滚日志与事务操作息息相关,二进制日志也与事务操作有一定的关系,这三种日志,对理解 MySQL 中的事务操作有着重要的意义.这里简单总结一下这三个具有一定相关性的日志. 重做日志(redo log)

mysql学习日志

Mysql学习日志; 安装:Linux :yum install mysql* -y 验证Mysql是否正常安装:mysqladmin --version 进入 Mysql,要先启动#service mysqld start#mysql 更换Mysql初始密码: 安装完成mysql为空密码,修改密码方式:mysqladmin -u root password newpassword 用户已经有旧密码的更改方式:MYSQLADMIN -u root -p'oldpassword' PASSWORD

MySQL——innodb日志管理

innodb日志管理机制: 1.innodb存储引擎是支持事务ACID特性的,这个理论基本就是一个关系型数据库相关的数据恢复原形设计,包括日志.回滚.redo.并发控制.buffer pool等管理方面,内容非常全面: 2.innodb的buffer pool主要用来存储访问过的数据页面,他就是一块连续的内存,通过一定的算法可以使这块内存得到有效的管理,它是数据库系统中拥有最大块内存的系统模块. innodb存储引擎中数据的访问是按照页(也可以叫块,默认为16KB)的方式从数据库文件读取到buf

MySQL的日志(二):事务日志(redo log和undo log)

本文目录:1.redo log 1.1 redo log和二进制日志的区别 1.2 redo log的基本概念 1.3 日志块(log block) 1.4 log group和redo log file 1.5 redo log的格式 1.6 日志刷盘的规则 1.7 数据页刷盘的规则及checkpoint 1.8 LSN超详细分析 1.9 InnoDB的恢复行为 1.10 和redo log相关的变量2.undo log 2.1 undo log的基本概念 2.2 undo log的存储方式

MySQL学习日志(三)

#用户管理 查询优化 日志  ##MySQL 用户管理  用户账号: [email protected] 用户账号管理: CREATE USER   创建用户         CREATE USER [email protected]    [        IDENTIFIED BY [PASSWORD] 'password'           ]        主机也可以使用通配符: create user [email protected]'172.16.100.1_ _'  IDENT

MySQl Study学习之--MySQl二进制日志管理

MySQl Study学习之--MySQl二进制日志管理 MySQL二进制日志(Binary Log):   a.它包含的内容及作用如下:    包含了所有更新了数据或者已经潜在更新了数据(比如没有匹配任何行的一个DELETE)    包含关于每个更新数据库(DML)的语句的执行时间信息    不包含没有修改任何数据的语句,如果需要启用该选项,需要开启通用日志功能    主要目的是尽可能的将数据库恢复到数据库故障点,因为二进制日志包含备份后进行的所有更新    用于在主复制服务器上记录所有将发送

MySQL二进制日志(binary log)总结

本文出处:http://www.cnblogs.com/wy123/p/7182356.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误进行修正或补充,无他) 今天无意中发现了一个云栖社区举行的MySQL“第一季:挑战玄惭之 慢SQL性能优化赛”,在测试服务器上执行其测试脚本写入数据的时候报错提示如下,Multi-statement transaction required more than 'max_binlog_cache_