zoukankan      html  css  js  c++  java
  • mysql原理 ~ binlog系列之

    一 简介:我们会持续对binlog进行分析,默认为Row格式
    二 binlog记录事物具体内容
        1 update会记录更改前和更改后所有列的值
        2 delete会记录删除前所有列的值
        3 insert会记录插入的具体sql
        4 ddl语句只会记录语句本身,不会记录影响行
        5 dcl语句不会记录
        6 特殊类型
           1 trigger 1 记录产生数据更新的sql语句。对于调用触发器后产生的数据更新,并不记录到binlog中
           2 function 如果函数中有数据改变,那函数的调用语句(包括select语句)将记录到binlog中
           3 event event触发事件后,更新数据的sql语句将记入binlog,event功能默认是关闭的。在master上定义event后,slave同步event并将其标示为SLAVESIDE_DISABLED,这里要特别注意
        7 innodb myisam memory touckdb引擎的表都会记录到binlog日志中 temp表不会.
        8 特殊语句
           create table as select * from 是按照insert单条记录记录的,但是属于一个事务,算是大事物
    二 binlog针对事务记录点-2
       1 记录事务信息
          1 server_id
             1 binlog执行事务所在数据库的server_id,
             2 哪怕在多级复制中级联生成的binlog,集群server_id不会改变,一定是master的server_id
             3 双主架构中,如果判断出是自己的server_id,就不会执行了,解决了不停执行事务的死循环
             4 GTID复制模型中用GTID代替形成全局唯一性+

         2 CRC32 binlog_checksum加密协议,MGR架构不支持

         3 Table_map 目标的库+表

         4 Table_id 目标表的table_id

         5 type_event 对应 delete_event,update_event,insert_event 删 更新和插入(binlog_row_image=FULL(记录全部字段)=MINIMAL(记录关键字段)

        6 具体的事务  包含具体的值,详见第一部分

         7 Xid event 表示事务被正确的提交了

         8 at number 具体的binlog位点信息(用来分析binlog用)

    2 GTID格式会在binlog开头记录之前事务执行过的gtid总和,便于进行扫描

    四 管理

         1 binlog_server 进行异地binlog备份

         2 设置 expire_logs_days 保留binlog日期,默认保存7天

            手动删除binlog日志 PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL N DAY);

         3 消费binlog开源工具 canal以及扩展otter

         4 binlog2sql/MyFlash 第三方分析并回滚binlog工具

         5 muysqlbinlog 系统自带的分析binlog工具,进行需求统计,请注意,只能精确到库级别

    五 binlog中一个完整的事务

              at position1 -》事务开始
              BGEIN
              at map event - 》表映射
              at DML event -》DML操作(可能有多个)
              at xid event -》 XID事件
              COMMIT
              at position2 -》 事务结束

             从position1-到position2是一个完整的事务,根据position进行分析确定一个完整事务

  • 相关阅读:
    Go 语言入门教程,共32讲,6小时(已完结) yangxu
    JavaGuide学习Zookeeper
    javaguide学习数据库
    使用restTemplate报错:no suitable HttpMessageConverter found for response type [class java.lang.Object...
    MySQL blocked nested loop join(bnl)和index nested loop join(inl)
    spring boot中自动配置应用场景
    MySQL锁的定义
    我挖掘Kafka底层原理!发现了它火爆宇宙的3个真相!
    MySQL导致metadata lock或者flush table lock原因排查方法
    maven中parent标签的作用
  • 原文地址:https://www.cnblogs.com/danhuangpai/p/11484252.html
Copyright © 2011-2022 走看看