暂无图片
请问mysql的log thread是负责写什么的?写redo log还是redo log和binlog都写?
我来答
分享
谢国红
2024-04-12
请问mysql的log thread是负责写什么的?写redo log还是redo log和binlog都写?

show engine innodb status;输出如下

I/O thre--------

FILE I/O
--------
I/O thread 0 state: waiting for completed aio requests (insert buffer thread)
I/O thread 1 state: waiting for completed aio requests (log thread) 《--这个线程
I/O thread 2 state: waiting for completed aio requests (read thread)
I/O thread 3 state: waiting for completed aio requests (read thread)
I/O thread 4 state: waiting for completed aio requests (read thread)
I/O thread 5 state: waiting for completed aio requests (read thread)
I/O thread 6 state: waiting for completed aio requests (write thread)
I/O thread 7 state: waiting for completed aio requests (write thread)
I/O thread 8 state: waiting for completed aio requests (write thread)
I/O thread 9 state: waiting for completed aio requests (write thread)


请问log thread是写redo log的还是binlog的?

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
yBmZlQzJ

在MySQL中,log thread主要负责写入两种类型的日志:重做日志(redo log)和二进制日志(binary log)。

重做日志(Redo Log):重做日志是InnoDB存储引擎特有的日志,用于确保事务的持久性和数据的恢复。当事务进行修改操作时,这些修改会被记录到重做日志中。在系统崩溃或者重启的情况下,InnoDB存储引擎可以使用重做日志中的信息来重放事务,以此来恢复未提交事务修改的数据,确保数据的一致性。

二进制日志(Binary Log):二进制日志记录了对数据库执行的所有更改操作,这些操作可以是表结构的变更,也可以是数据的插入、更新和删除。二进制日志主要用于复制和数据恢复。在复制架构中,主服务器上的二进制日志会被发送到从服务器,从服务器根据这些日志来重放更改,以此来保持与主服务器的数据同步。同时,二进制日志也可以用于数据恢复,通过应用日志中的更改来恢复到特定的时间点。

log thread在MySQL中是独立于其他线程工作的,它负责将这些日志写入到磁盘中。对于InnoDB存储引擎,log thread会将重做日志写入到重做日志文件中;而对于二进制日志,log_thread会将其写入到二进制日志文件中。

暂无图片 评论
暂无图片 有用 0
everything

只写redo log。redo log也叫innodb log,由innodb的log 线程负责;binlog是server层的日志,写binlog的日志叫binlog dump

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏