300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > mysql- 数据库的6种日志:错误日志 通用日志 慢日志 二进制日志 redo log undo log

mysql- 数据库的6种日志:错误日志 通用日志 慢日志 二进制日志 redo log undo log

时间:2018-10-23 15:17:46

相关推荐

mysql- 数据库的6种日志:错误日志 通用日志 慢日志 二进制日志 redo log undo log

MySQL日志

日志用来做什么?

1.用来排错

2.用来做数据分析

3.了解程序的运行情况,是否健康

日志放在哪里?

日志一般放在数据目录

日志分类

错误日志、通用日志、慢日志、二进制日志

一、错误日志

错误日志的名字:主机名.err

错误日志默认是开启的

错误日志会记录什么?

登录失败会记录到错误日志

配置文件出错也会记录

启动过程出问题也会记录

二、通用日志

通用日志的名字:主机名.log

默认不开启

怎么开启?

临时开启:set global general_log = 1;

永久开启:修改配置文件加入一行 general_log

缺点:消耗大量的磁盘空间,消耗cpu、内存、磁盘资源

优点:审计 会记录所有的SQL操作

三、慢日志

慢日志的名字:主机名-slow.log

默认不开启

怎么开启?

临时开启:set global slow_query_log = 1;

永久开启:修改配置文件加入一行 slow_query_log=1

多慢算慢?

默认是10秒 ,使用 show variables like ‘%long_query%’; 可以查看

怎么修改?

临时修改:set long_query_time = 你想要的值

永久修改:修改配置文件 long_query_time = 你想要的值

作用:记录消耗时间比较长的SQL语句,为数据库性能提升提供了线索

四、二进制日志

二进制日志的名字:主机名-bin.xxx,如:xixi-bin.000001

默认不开启

主机名-bin.index 这个文件是什么?

二进制日志文件的索引,记录一共有多少个二进制日志文件了

怎么开启?

修改配置文件,写入以下两行

log_bin

server_id = 1

二进制日志会记录什么?

binlog 是记录所有数据库表结构变更(例如create、alter table…)以及表数据修改(insert、delete、update…)的二进制日志。多说一句,如果update操作没有造成数据变化,也是会记入 binlog。

binlog 不会记录 select 和 show 这类操作,因为这类操作对数据本身并没有修改,但你可以通过查询通用日志来查看MySQL执行过的所有语句。

怎么查看二进制日志?

二进制日志不能用 cat 查看,使用 mysqlbinlog 命令可以查看二进制日志

什么时候会删除二进制日志?

当日志到达最大值1G的时候

或者使用 reset master;

怎么查看当前的二进制日志?

show master status;

怎么产生新的二进制日志?

flush logs

怎么修改刷新日志的频率?

如:修改为15天刷新日志,编辑配置文件

expire_logs_days = 15

二进制的格式

row level:默认

记录操作的每一行数据,更能保证数据的一致性

row 不止记录SQL语句还记录数据的变化

statement level

记录用户输入的SQL语句

弊端:如果有的数据插入时使用了now()函数,比如create_time字段的value,那么就有时间差这个概念,就有可能会出现数据不一致的情况

mixed level

row和statement 的混合版,有的情况使用row,有的情况使用statement

二进制日志的落盘

调用fsync(),刷新binlog写入到磁盘

sync_binlog=0: 表示刷新binlog时间点由操作系统自身来决定,操作系统自身每隔一段时间就会刷新缓存数据到磁盘,这个性能最好。

弊端:容易丢失数据,万一停电数据没落盘,就会丢失

sync_binlog=1: 表示每次事务提交都要调用fsync(),刷新binlog写入到磁盘。

能快速的存储数据,不容易丢数据

sync_binlog=N: 表示 N个事务提交,才会调用 fsync()进行一次binlog刷新,写入磁盘。

这个

五、redo log

解决事务commit不成功,重新redo

对应的物理文件:ib_logfile0、ib_logfile1

作用

确保事务的持久性。

防止在发生故障的时间点,尚有脏页未写入磁盘,在重启mysql服务的时候,根据redo log进行重做,从而达到事务的持久性这一特性。

内容

物理格式的日志,记录的是物理数据页面的修改的信息,其redo log是顺序写入redo log file的物理文件中去的。

什么时候产生

事务开始之后就产生redo log,redo log的落盘并不是随着事务的提交才写入的,而是在事务的执行过程中,便开始写入redo log文件中。

什么时候释放

当对应事务的脏页写入到磁盘之后,redo log的使命也就完成了,重做日志占用的空间就可以重用(被覆盖)

六、undo log

解决事务rollback,撤销

对应的物理文件:ibdata1

redo和undo的关系

先redo 再 undo

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。