mysql是怎么保证数据不丢失的
Posted hanguocai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql是怎么保证数据不丢失的相关的知识,希望对你有一定的参考价值。
一:binlog写入机制。
先write ,把日志写入文件系统的的page cache ,然后fsync 将数据持久化到磁盘的操作。
binlog是每个线程一个binlogCache,binlogCache中包含tmpfile和memery.
二:redo log 写入机制
首先日志写道redologbuffer中,然后写入pagecache ,最后写入磁盘。
有个后台线程每一秒钟轮询redobuffer写入磁盘,一个没有提交事务的redolog也可以持久化到磁盘。
1,redolog buffer 占用的空间即将到达 innodb_log_buffer_size 一半。后台线程主动写盘
2.并行的事务提交,顺带将这个事务的redo log buffer 持久化到磁盘。
因为奔溃回复依赖prepare的redo log 再加上binlog来恢复的。innodb就认为redo log 在commit 的时候就不需要fsync了,只会write .
上边是mysql的组提交机制。
这是mysql的wal机制如何写日志的。
经过上边的分析,如何mysql 有性能瓶颈,在io上。有哪些方法提升性能?
以上是关于mysql是怎么保证数据不丢失的的主要内容,如果未能解决你的问题,请参考以下文章