redo log 与 binlog redo log redo log (重做日志)是处于存储引擎层的,是InnoDB引擎特有的 redo log 存储的是物理日志 --- 即,“在某个数据页上改动了什么” red
redo log (重做日志)是处于存储引擎层
的,是InnoDB引擎特有的
redo log 存储的是物理日志 --- 即,“在某个数据页上改动了什么”
redo log是循环写,空间是一定的,会用完。
Mysql使用WAL技术 --- Write-Ahead-Logging,
具体到redo log就是:当有一条记录需要更新的时候,InnoDB引擎会先先把记录写在redo log里并更新内存,然后在空闲的时候将操作记录更新到磁盘里。
InnoDB 引擎的 redo log 的空间是有限的,一组4个文件,每个文件1GB,总共4GB。当这块“临时记录板”写满后再次从开头的地方循环写入。
redo log 的写入分为两个步骤 --- perpare
和 commit
阶段 --- ”两阶段提交“
有了redo log,就可以保证即使数据库发生异常重启也不会丢失记录,称为 crash-safe
binlog (归档日志) 处于server层
,是mysql自带的日志模块
binlog 是存储的是逻辑日志 --- 即,“记录原始语句”。因此可用来恢复数据库 --- 相当于在某个时间的基础上重新运行了一遍相关语句。
binlog 是可追加写入的 --- binlog文件写到 一定大小后就会在下一个文件中继续写,而不覆盖之前的文件。
使用“两阶段提交”是为了避免恢复时恢复出来的数据库与原有状态不一致的现象。
我们知道发生crash时丢失的肯定都是内存中的数据,通过以下设置进行持久化
innodb_flush_log_at_trx_commit = 1
--- 每次事务的 redo log 直接持久化到磁盘sync_binlog = 1
--- 每次事务的binlog都持久化到磁盘
--结束END--
本文标题: redo log 与 binlog - G
本文链接: https://lsjlt.com/news/6846.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-10-23
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0