在数据库系统中,日志系统重要的组成部分。他用于恢复数据库,和保证数据库原子操作的重要部分。
Mysql的日志文件种类比较多,有的日志文件记录了mysql的服务状态以及mysql在工作中产生的系统信息,我们利用这些信息可以更方便的对mysql服务进行运维,但是有的日志文件如果我们进行了不正确的配置将对mysql的服务器主机造成不良的后果,下面我们就来看看mysql有哪些日志文件以及他们的各自的作用。
Mysql相关的日志文件,主要有两大类:事务日志和事件日志:
事务日志:
简介:
详细的记录了在什么时间发生了什么时候,在哪个时间对哪些数据进行了改变,能后实现事件的重放,一般只记录对数据进行改变的操作,对于读操作一般不进行记录。
这个是innodb存储引擎层面的。
作用:
- 将随机IO转换为顺序IO,大大的提高了数据库的性能。存储的数据会存在在磁盘的不同位置,降低了数据的读取和写入的性能。但日志保存的是变化,随着时间刷下去就行,所以是顺序的IO。
- 事件重放的基础,事务日志详细的记录了时间发生的时间以及操作的数据对象,事务进程可以根据这些信息进行时间重放.
文件位置:
位于data目录下以ibdata+number结尾的数字。以下是innodb存储引擎中的相关参数。
服务器的主配置文件/etc/my.cnf中:
1 | innodb_data_home_dir = /innodata #定义存放事务日志的目录 |
2 | innodb_data_file_path = ibdata1:1024M #定义日志的名字和大小 |
3 | innodb_data_file_path = ibdata2:50M:autoextend #定义日志大小的增长方式 |
事件日志:
简介:
记录了服务器的历史事件,即在什么时间发生了什么事。这是mysql服务层面的。
其中根据记录内容的不同可以将事件日志分为一下几种:
如果配置文件中没有存在这些位置选项,默认innodb的日志在data中,mysql服务的日志在log中。
日志分类:
1、 the error log错误日志:在对应的数据目录中,以主机名+.err命名的文件。文本文件。
错误日志记录的信息类型:
1、记录了服务器运行中产生的错误信息
2、记录了服务在启动和停止是所产生的信息
3、在从服务器上如果启动了复制进程的时候,复制进程的信息也会被记录
启用错误日志:默认情况下,系统已近将其自动启动
在主配置文件中:
log-error= 指定错误日志的位置,这个位置myaql用户必须有写权限,
2、the binary log二进制日志:默认开启。精确的记录了用户对数据库中的数据进行操作的命令和操作的数据对象。
二进制日志文件的作用:
1、提供了增量备份的功能
2、提供了数据基于时间点的恢复,这个恢复的时间点可以由用户控制
3、为mysql的复制架构提供基础,将这主服务器的二进制日志复制到从服务器上并执行同样的操作,就可将数据进行同步
启用:默认在数据目录下以mysql-bin.number命名的文件
log-bin= 指定二进制日志文件的名字
log-bin-index= 定义二进制日志文件的名字的索引文件的位置,其用来保存可用的二进制日志文件的名字
(注:二进制日志文件的删除和一般文件的删除是不同的,别直接rm,我们可以采用以下的方法)
1 | PURGE MASTER LOGS TO 'MySQL-bin.010' ; // 清除MySQL-bin.010日志 |
2 | PURGE MASTER LOGS BEFORE '2008-06-22 13:00:00' ; // 清除2008-06-22 13:00:00前binlog日志 |
3 | PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY); // 清除3天前binlog日志BEFORE,变量的 date 自变量可以为 'YYYY-MM-DD hh:mm:ss' 格式。 |
4 | FLUSH LOGS // 滚动二进制文件 |
3、the general query log查询日志:对除了慢查日志中记录的查询信息都将记录下来,这将对服务器主机产生大量的压力,所以对于繁忙的服务器应该关闭这个日志
启用和关闭是在主配置文件中配置。
general_log=[ON/OFF]
log_output=指定存放查询日志的位置,可以放在文件中,也可以放在数据库的表中,放在表中比放在文件中更容易查看.
4、the slow query log慢查日志:默认为关闭状态,记录下来查询时间超过设定时长的查询,这些查询日志将被慢查日志记录下来
在主配置文件中配置:
通过long_query_time=num 定义默认的时长,默认时长为10秒
在配置文件中启用:
slow_query_log=ON
slow_query_log_file= 指定慢查日志的位置及名字
在mysql中启用的方法:
mysql>SET GLOBAL slow_query_log=ON
5、the relay log中继日志,主要是在mysql服务器的中从架构中的从服务器上用到的,当从服务器想要和主服务器进行数据的同步时,从服务器将主服务器的二进制日志文件拷贝到己的主机上放在中继日志中,然后调用SQL线程按照拷中继日志文件中的二进制日志文件执行以便就可达到数据的同步。
开启的方法:(只在从服务器上开启)
配置mysql的主配置文件:
relay-log= 指定中继日志的位置和名字
relay-log-index= 指定中继日志的名字的索引文件的位置和名字
事务日志和二进制日志文件的区别:
两者都能够实现对数据操作的还原,但是前者的还原操作都是有系统自动完成的,不需要也不允许人为进行干预,而后者的恢复是完全依靠人为进行的。 前者是innodb存储引擎做的,后者是mysql层面做的。
转载请注明:旅途@KryptosX » mysql的log文件种类