zoukankan      html  css  js  c++  java
  • MYSQL学习笔记3--mysql 2PC二阶段协义 与 日志闪回

    mysql两份日志:
    
    binlog :server
    innodb redo log:engine
    
    两份日志顺序一致性:否则主备不一致
    两份日志:原子性,同时都有,同时都无
    
    2PC二阶段协义:
      第一阶段:准备界段
      第二阶段:提交阶段
      
    买房子示例
       准备界段: 
         房产局确认:
            买方:钱是否准备好
            卖方:房子是否可卖
       提交界段:
          政务中心:
             买方: 确认按手印
             卖方:确认按手印  
     ----------------------------------------------------------------
     mysql 日志两阶段提交: 刷日志
       准备阶段:
            innodb_prepare
            binlog_prepare
           
            
       提交阶段
            binlog_commit
            innodb_commit
            
    优化后的状态:
       准备阶段:
            innodb_prepare
            binlog_prepare   //binlog commit合并到此操作     ???
       提交阶段
            innodb_commit
      
    ------------------------------------------------------------------- 
    两种日志异常处理:
            binlog的commit log 与innodb的commit log同时存在:不操作
            binlog的prepare log与innodb的prepare log同时存在 :innodb commit
            
            binlog的prepare log存在,innodb的prepare log 不存在 :re-play innodb
            binlog的prepare log不存在,innodb的prepare log 存在 :rollback
            
           (以binlog 为准,主备一致原则)
       
    mysql日志gpoup commit
         mysql数据库innodb 存储引警一直有一个bug,就是当开启binlog时,无法进行group commit,
         究其原因,是为了保证innodb 存储引警的事务日志与binlog日志的顺序一致性
         
    在prepare 前需要取得mutex,直到commit 完成之后释放,这也禁用了group commit功能
    
    mariadb 彻底解决了这个组提交的问题
         
     
     
     
     MYSQL数据同步
          1.全量dump某个时点之前的数据,并记当全量dump完成后数据库日志的位置
          2.将全量的备份LOAD到mysql
          3.从刚才全量完成dump后的日志开始,通过解析日志为可执行的sql,远程LOAD到MYSQL
          4.通过不断的应用log,使MYSQL 慢慢追上主库
          5.将用户的数据库设置为只读,继续应用日志到MYSQL,直到完全同步 
          
    mysql闪回功能
       binlog_format 必须是 row 模式
       下载专门的mysqlbinlog工具
       暂支持insert update delete 做闪回
     
    MYSQL 闪回功能操作步聚:
      1. 查看binlog中的position包括start position 和 stop position确认要闪回的位置点
         mysql>show binlog events in "xxxx.log";
      2.执行闪回命令
         mysqlbinlog -B -v --start-position=120 --stop -position=8836 /home/mysql/binlog.000002|mysql test
       
  • 相关阅读:
    668. Kth Smallest Number in Multiplication Table
    658. Find K Closest Elements
    483. Smallest Good Base
    475. Heaters
    454. 4Sum II
    441. Arranging Coins
    436. Find Right Interval
    410. Split Array Largest Sum
    392. Is Subsequence
    378. Kth Smallest Element in a Sorted Matrix
  • 原文地址:https://www.cnblogs.com/zengkefu/p/5541900.html
Copyright © 2011-2022 走看看