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
   
时间: 2024-10-09 21:46:53

mysql 2PC二阶段协义 与 日志闪回的相关文章

二阶段提交应用项目(Two-phase commit protocol )2PC 高并发

整个系统的需求文档为英文描述. A Simple 2-Phase Commit System The company ABC provides its customers wire transfer service. For example, it can withdraw $1000 from John's account in Bank of China and deposit the money to John's another account in China Construction

Mysql事物与二阶段提交

 1.事务的四种特性(ACID) 事务可以是一个非常简单的SQL构成,也可以是一组复杂的SQL语句构成.事务是访问并且更新数据库中数据的一个单元,在事务中的操作,要么都修改,要么都不做修改,这就是事务的目的,也是事务模型区别于其他模型的重要特征之一. 事务的原子性:原子是不可分割的,事务不可分割(没有commit数据不能被读到). 事务的持久性:在commit之后,不能丢数据.(就是在提交后,数据必须落盘redo落盘). 事务的隔离性:在数据库里面,各个事务之间不能互相影响. 事务的一致性:事务

二阶段提交和三阶段提交

一.2PC 2PC即两阶段提交协议,是将整个事务流程分为两个阶段,准备阶段(Prepare phase).提交阶段(commit phase),2是指两个阶段,P是指准备阶段,C是指提交阶段 整个事务过程由事务管理器和参与者组成,事务管理器负责 决策整个分布式事务的提交和回滚,事务参与者负责自己本地事务的提交和回滚 在计算机中部分关系数据库如Oracle.MySQL支持两阶段提交协议,如下图: 准备阶段(Prepare phase):事务管理器给每个参与者发送Prepare消息,每个数据库参与者

分布式基础之二阶段提交

分布式基础之二阶段提交 二阶段提交(Two Phase Commit)在分布式事务处理中非常常见.它主要用来保证分布式事务处理的一致性,决定事务的提交或回滚.目前二阶段提交广泛应用于关系型数据库的分布式事务处理中,它是分布式系统中的一个常见协议. 需求 为什么要二阶段提交?因为在分布式系统中,每个节点只知道自己的事务是否执行成功了,而分布式系统要求一致性,也就是所有的节点的状态都应该一致.如果某一个事务只在部分节点执行成功,那么势必会导致各分布式节点不一致.二阶段提交就是用来保证要么所有的节点都

Atitit ACID解决方案2PC(两阶段提交)  跨越多个数据库实例的ACID保证

Atitit ACID解决方案2PC(两阶段提交)  跨越多个数据库实例的ACID保证 1.1. ACID解决方案1 1.2. 数据库厂商在很久以前就认识到数据库分区的必要性,并引入了一种称为2PC(两阶段提交)的技术来提供跨越多个数据库实例的ACID保证.这个协议分为以下两个阶段:1 1.3. 基本上,数据库实现 ACID 最关键的技术是日志和锁.2 1.4. I- 实现事务隔离的主要手段是锁.另外一个关键技术是  MVCC (Multi-version Concurrency Control

我的MYSQL学习心得(十五) 日志

原文:我的MYSQL学习心得(十五) 日志 我的MYSQL学习心得(十五) 日志 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(十) 自定义存储过程和函数 我的

MySQL之慢查询-删除慢查询日志

一.环境 OS:CentOS release 5.8(64位) DB:MySQL5.5.17 二.操作         直接通过命令 rm -f  删除了慢查询日志 三.出现问题 慢查询日志没有自动生成,(如果有备份,再次拷贝回来也是不好使的) 四.解决方法         管理员身份登录MySQL     执行命令   flush logs; 如果执行后,提示执行成功,而实际上慢查询日志还是没有生成,则执行以下命令(先关闭慢查询,再开启) SET GLOBAL log_slow_queries

分布式入门之4:二阶段提交

1. 背景: 初时提出,是为解决分布式数据库的事务问题.单机数据库事务可靠日志技术,MVCC技术实现.分布式情况下,就需要额外的手段来保证,这才出现了二阶段提交. 2. 流程: 从角色上,二阶段提交分为两种角色:协调者(coordinate),参与者(participant).流程思路上很简单: 1. 协调者询问询问所有参与者,能否提交:参与者返回是否能提交的结果: 2. 协调者根据参与者的返回结果决定是否提交事务,并通知参与者执行. 但实际上,二阶段提交需要考虑不少异常场景: 对照上图: 1

Mysql 笔记二

Mysql 笔记二 Table of Contents 1. 前言 2. Master Thread 工作方式 2.1. 主循环(loop) 2.2. 后台循(backgroup loop) 2.3. 刷新循环(flush loop) 2.4. 暂停循环(suspend loop) 3. InnoDB关键特性 3.1. 插入缓冲(Insert Buffer) 3.2. 两次写(Double Write) 3.3. 自适应哈希索引(Adaptive Hash Index),默认开启 3.4. 异步