MySQL中一种有7种日志
- redo log 重做日志
- undo log 回滚日志
- bin log 二进制日志
- error log 错误日志
- slow query log 慢查询日志
- general log 一般查询日志
- relay log 中继日志
redo/undo是实现数据库事务的基石。
undo用来回滚事务。它记录的是修改之前的数据。当事务未提交(事务异常,或者系统崩溃来不及提交),重新启动的时候,会回复到事务开启之前的状态。保证了原子性。
redo用来重做事务。它记录的是修改之后的数据。当事务已经提交,但未同步到磁盘中的data file。系统重启时,会同步到磁盘中。保证了持久性。
bin log的作用有两个
- 主从复制
-
从数据库层面恢复数据(注意不是从事务层面)
主从复制的原理
主服务器的log dump线程,会把bin log传给slave。slave 的IO线程接收到数据之后,会把存储到relay log,SQL线程会把relay log中的数据读取出来,写到slave中。
2019-04-18补充:
主从复制的缺点:
- 只满足最终一致性,复制是异步的,所以主从数据之间会有一段微小时间的延迟
- 当master宕机时,需要手动切换从服务器。
网友评论