images\cherry_red.png1 MySQL学习笔记
      images\cherry_blue.png1.1 LeetCode每日一题
         images\cherry_orange.png1.1.1 183. 从不订购的客户
      images\cherry_blue.png1.2 数据库特性
      images\cherry_blue.png1.3 正则表达式
         images\cherry_orange.png1.3.1 MySQL正则表达式
         images\cherry_orange.png1.3.2 Hive正则表达式
      images\cherry_blue.png1.4 MySQL基础操作语句
         images\cherry_orange.png1.4.1 增加
            images\cherry_cyan.png1.4.1.1 create
            images\cherry_cyan.png1.4.1.2 insert
         images\cherry_orange.png1.4.2 删除
            images\cherry_cyan.png1.4.2.1 drop
            images\cherry_cyan.png1.4.2.2 delete
         images\cherry_orange.png1.4.3 查询
         images\cherry_orange.png1.4.4 修改
            images\cherry_cyan.png1.4.4.1 update
            images\cherry_cyan.png1.4.4.2 alter
         images\cherry_orange.png1.4.5 基础操作命令
            images\cherry_cyan.png1.4.5.1 union
            images\cherry_cyan.png1.4.5.2 like
         images\cherry_orange.png1.4.6 复制表
         images\cherry_orange.png1.4.7 replace
      images\cherry_blue.png1.5 MySQL数据误删恢复
         images\cherry_orange.png1.5.1 docker远程连接MySQL报错
      images\cherry_blue.png1.6 MySQL主从之间的关系
         images\cherry_orange.png1.6.1 Binlog
      images\cherry_blue.png1.7 MySQL基本操作命令
         images\cherry_orange.png1.7.1 权限授予
         images\cherry_orange.png1.7.2 数据备份
         images\cherry_orange.png1.7.3 主从配置
         images\cherry_orange.png1.7.4 主从(主主)互用配置
         images\cherry_orange.png1.7.5 拉链表用途
            images\cherry_cyan.png1.7.5.1 拉链表
         images\cherry_orange.png1.7.6 字段类型转换
      images\cherry_blue.png1.8 Keepalived+MySQL 高可用架构
      images\cherry_blue.png1.9 HAproxy+MySQL 负载均衡
      images\cherry_blue.png1.10 Mycat+ MySQL 读写分离(高可用)优化
         images\cherry_orange.png1.10.1 Mycat配置文件详解
         images\cherry_orange.png1.10.2 安装配置Mycat
         images\cherry_orange.png1.10.3 MySQL分库操作
         images\cherry_orange.png1.10.4 Mycat测试实验
      images\cherry_blue.png1.11 MHA
         images\cherry_orange.png1.11.1 MHA初始化配置
      images\cherry_blue.png1.12 MySQL索引结构
      images\cherry_blue.png1.13 MySQL索引类型
      images\cherry_blue.png1.14 SQL执行计划(explain)
      images\cherry_blue.png1.15 SQL优化
      images\cherry_blue.png1.16 慢查询日志
      images\cherry_blue.png1.17 Druid监控
参考连接:https://juejin.cn/post/6860252224930070536

Binlog 用于记录数据库执行的写入性(增加,删除,修改...)操作(不包括查询)信息,并且以二进制的存储格式保持在磁盘中

逻辑日志:可以简单理解为记录的就是sql语句 。 (写入操作的)
物理日志:mysql 数据最终是保存在数据页中的,物理日志记录的就是数据页变更 。
binlog 是通过追加的方式进行写入的,可以通过max_binlog_size 参数设置每个 binlog文件的大小,当文件大小达到给定值之后,会生成新的文件来保存日志。

应用场景: 主从复制 数据恢复

1. 主从复制 :在 Master 端开启 binlog (授权角色同步权限),然后将 binlog发送到各个 Slave 端, Slave 端重放 binlog 从而达到主从数据一致。
2. 数据恢复 :通过使用 mysqlbinlog 工具来恢复数据。


binlog刷盘时机
对于 InnoDB 存储引擎而言,只有在事务提交时才会记录biglog ,此时记录还在内存中,那么 biglog是什么时候刷到磁盘中的呢?mysql 通过 sync_binlog 参数控制 biglog 的刷盘时机,取值范围是 0-N:
• 0:不去强制要求,由系统自行判断何时写入磁盘;
• 1:每次 commit 的时候都要将 binlog 写入磁盘;
• N:每N个事务,才会将 binlog 写入磁盘。
从上面可以看出, sync_binlog 最安全的是设置是 1 ,这也是MySQL 5.7.7之后版本的默认值。但是设置一个大一些的值可以提升数据库性能,因此实际情况下也可以将值适当调大,牺牲一定的一致性来获取更好的性能。



binlog日志格式
binlog 日志有三种格式,分别为 STATMENT 、 ROW 和 MIXED。
在 MySQL 5.7.7 之前,默认的格式是 STATEMENT , MySQL 5.7.7 之后,默认值是 ROW。日志格式通过 binlog-format 指定。• STATMENT:基于SQL 语句的复制( statement-based replication, SBR ),每一条会修改数据的sql语句会记录到binlog 中 。
• 优点:不需要记录每一行的变化,减少了 binlog 日志量,节约了 IO , 从而提高了性能;
• 缺点:在某些情况下会导致主从数据不一致,比如执行sysdate() 、 slepp() 等 。
• ROW:基于行的复制(row-based replication, RBR ),不记录每条sql语句的上下文信息,仅需记录哪条数据被修改了 。
• 优点:不会出现某些特定情况下的存储过程、或function、或trigger的调用和触发无法被正确复制的问题 ;
• 缺点:会产生大量的日志,尤其是` alter table ` 的时候会让日志暴涨
• MIXED:基于STATMENT 和 ROW 两种模式的混合复制(mixed-based replication, MBR ),一般的复制使用STATEMENT 模式保存 binlog ,对于 STATEMENT 模式无法复制的操作使用 ROW 模式保存 binlog

show binlog events in 'mysql-bin.000008';
images\39-1.png