每日三思-20200827

前言

主要是分享讨论一些有意思的问题,也可以用这个当做MySQL知识体系的自查表

问题项

  1. Binlog的使用场景?
  2. Binlog的的收集日志类型、分类、工作模式有哪些?
  3. WAL机制的工作过程
会飞的大象
讨论数量: 1

自答

问题1

  • MySQL主从复制:MySQL在Master端开启binlog,Master端将binlog传递给slaves来达到Master-slaves数据一致的目的
  • 异常数据恢复:使用mysqlbinlog工具来恢复数据

问题2

  • 日志类型
    • 错误日志:记录在启动,运行或停止mysqld时遇到的问题
    • 通用查询日志:记录建立的客户端连接和执行的语句
    • 二进制日志:记录更改数据的语句【重点】
    • 中继日志:从复制主服务器接收的数据更改
    • 慢查询日志:记录所有执行时间超过 long_query_time 秒的所有查询或不使用索引的查询
    • DDL日志(元数据日志):元数据操作由DDL语句执行
  • 文件分类:
    • 二进制日志索引文件(文件名后缀为.index)用于记录所有有效的的二进制文件
    • 二进制日志文件(文件名后缀为.00000*)记录数据库所有的DDL和DML语句事件
  • 工作模式:
    • STATEMENT:基于SQL语句的复制(SBR)
    • ROW:基于行的复制(RBR)
    • MIXED:混合模式复制(MBR)

问题3:

  • WAL机制,主要的操作是先写日志,先在一个日志中记录了MySQL要对硬盘中的存储MySQL数据的数据页中的数据进行什么样的更改,等到Mysql空闲的时候再进行同步操作到硬盘中
  • 同样是操作磁盘,为什么写日志比直接改数据会更加高效?因为写日志是顺序写,直接改磁盘是随机写。所以同样是写,它们写的速度有着天壤之别。这也是WAL的另外一个好处,MYSQL中的WAL机制是基于redolog和binlog实现的
3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!