Skip to content

Commit

Permalink
fix typo: binglog -> binlog
Browse files Browse the repository at this point in the history
  • Loading branch information
samho2008 committed Feb 14, 2022
1 parent 89b6108 commit 1e47f44
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 3 deletions.
4 changes: 2 additions & 2 deletions docs/database/mysql/how-sql-executed-in-mysql.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ tag:

简单来说 MySQL 主要分为 Server 层和存储引擎层:

- **Server 层**:主要包括连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图,函数等,还有一个通用的日志模块 binglog 日志模块。
- **Server 层**:主要包括连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图,函数等,还有一个通用的日志模块 binlog 日志模块。
- **存储引擎**: 主要负责数据的存储和读取,采用可以替换的插件式架构,支持 InnoDB、MyISAM、Memory 等多个存储引擎,其中 InnoDB 引擎有自有的日志模块 redolog 模块。**现在最常用的存储引擎是 InnoDB,它从 MySQL 5.5.5 版本开始就被当做默认存储引擎了。**

### 1.2 Server 层基本组件介绍
Expand Down Expand Up @@ -117,7 +117,7 @@ update tb_student A set A.age='19' where A.name=' 张三 ';
* **先写 redo log 直接提交,然后写 binlog**,假设写完 redo log 后,机器挂了,binlog 日志没有被写入,那么机器重启后,这台机器会通过 redo log 恢复数据,但是这个时候 bingog 并没有记录该数据,后续进行机器备份的时候,就会丢失这一条数据,同时主从同步也会丢失这一条数据。
* **先写 binlog,然后写 redo log**,假设写完了 binlog,机器异常重启了,由于没有 redo log,本机是无法恢复这一条记录的,但是 binlog 又有记录,那么和上面同样的道理,就会产生数据不一致的情况。

如果采用 redo log 两阶段提交的方式就不一样了,写完 binglog 后,然后再提交 redo log 就会防止出现上述的问题,从而保证了数据的一致性。那么问题来了,有没有一个极端的情况呢?假设 redo log 处于预提交状态,binglog 也已经写完了,这个时候发生了异常重启会怎么样呢?
如果采用 redo log 两阶段提交的方式就不一样了,写完 binlog 后,然后再提交 redo log 就会防止出现上述的问题,从而保证了数据的一致性。那么问题来了,有没有一个极端的情况呢?假设 redo log 处于预提交状态,binlog 也已经写完了,这个时候发生了异常重启会怎么样呢?
这个就要依赖于 MySQL 的处理机制了,MySQL 的处理过程如下:

* 判断 redo log 是否完整,如果判断是完整的,就立即提交。
Expand Down
2 changes: 1 addition & 1 deletion docs/database/mysql/mysql-logs.md
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ tag:

![](https://cdn.jsdelivr.net/gh/18702524676/CND5/image/mysql/04/05.png)

虽然性能得到提升,但是机器宕机,`page cache`里面的 binglog 会丢失。
虽然性能得到提升,但是机器宕机,`page cache`里面的 binlog 会丢失。

为了安全起见,可以设置为`1`,表示每次提交事务都会执行`fsync`,就如同**binlog 日志刷盘流程**一样。

Expand Down

0 comments on commit 1e47f44

Please sign in to comment.