mysql写log文件_mysql的日志文件及其作用

MySQL中有七种日志文件,分别是:

重做日志(redo log)

回滚日志(undo log)

二进制日志(binlog)

中继日志(relay log)

错误日志(errorlog)

慢查询日志(slow query log)

一般查询日志(general log)

下面介绍前4种。。。。

1. redo log

a.作用

b.内容

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

b.开始节点

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

c.结束节点

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

2.undo log

a.作用

保证了事务的原子性,当事务开始回滚的时候会用到

b.内容:

逻辑格式的日志,在执行undo的时候,仅仅是将数据从逻辑上恢复至事务之前的状态,而不是从物理页面上操作实现的,这一点是不同于redo log的。

c.开始节点:

事务开始之前,将当前是的版本生成undo log,undo 也会产生 redo 来保证undo log的可靠性

d.结束节点:

当事务提交之后,undo log并不能立马被删除,而是放入待清理的链表,由purge线程判断是否由其他事务在使用undo段中表的上一个事务之前的版本信息,决定是否可以清理undo log的日志空间。

3. binlog

a.作用

主从复制,

前提:主库将操作记录存到binlog中,

在发生主从复制时,

1. 主库会发起一个log dump线程,用来给从库I/O线程传binlog;

2.从库发起一个I/O线程接收binlog文件,并将得到的binlog文件写到本地relay-log(中继日志)中,

3.从库发起一个SQL 读取中继日志文件,逐一执行sql语句

在主从复制的时候需要注意的事

1) Master将操作语句记录到binlog日志中,然后授予slave远程连接的权限(master一定要开启binlog二进制日志功能,通常为了数据安全考虑,salve也开启binlog功能)

2) Slave开始俩个线程:IO线程和sql线程,其中:IO线程负责读取master的binlog内容到中继日志relay log里,sql线程负责从中继日志里读取binlog内容,并更新到slave的数据库,这样就能保持slave数据和master数据保持一致了

3) 至少有俩个Mysql的服务

4) 最好确保master和slave服务器上的Mysql版本相同,或者主服务器小于子服务器

5) Master和slave 俩节点时间需同步

4.relay-log

作用已经在上面介绍过了,不再重复介绍了

已经

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值