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
       
  • 相关阅读:
    Extjs 集合了1713个icon图标的CSS文件
    Sencha Touch 2 DataView / List 分页
    Sencha Touch 笔记
    [奉献]通过命令快速启动应用程序的小软件(QuickLauncher V1.1)
    PTC FlexPLM rfa 接口自动创建产品规格
    Excel Vba 调用WebService的两种方式,解决MSSOAP30 64位不兼容问题
    Extjs4.1.x 框架搭建 采用Application动态按需加载MVC各模块
    C#获取远程图片,需要Form用户名和密码的Authorization认证
    [转]plsql不安装oracle客户端 进行远程连接
    WPF、Silverlight程序编码资料收集
  • 原文地址:https://www.cnblogs.com/zengkefu/p/5541900.html
Copyright © 2011-2022 走看看