Mysql常见的日志种类及作用
1.redo 重做日志
作用:确保日志的持久性,防止在发生故障,脏页未写入磁盘。重启数据库会进行redo log执行重做,达到事务一致性
2.undo 回滚日志
作用:保证数据的原子性,记录事务发生之前的一个版本,用于回滚,innodb事务可重复读和读取已提交 隔离级别就是通过mvcc+undo实现
3.errlog 错误日志
作用:Mysql本身启动,停止,运行期间发生的错误信息
4.slow query log 慢查询日志
作用:记录执行时间过长的sql,时间阈值可以配置,只记录执行成功
5.bin log 二进制日志
作用:用于主从复制,实现主从同步
6.relay log 中继日志
作用:用于数据库主从同步,将主库发来的bin log保存在本地,然后从库进行回放
7.general log 普通日志
作用:记录数据库的操作明细,默认关闭,开启后会降低数据库性能
主从读写机制原理:
1.主库打开binlog
2.当有增删改操作时,必须记录到主库的binlog
3.主库通过IO线程把binlog里的内容传给从库relay log
4.从库sql线程负责读取relay log里的信息并应用到数据库
Bug? 不存在的!