mysql和pc_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到mysql3.从刚才全量完成dump后的日志开始,通过解析日志为可执行的sql,远程LOAD到MYSQL4.通过不断的应用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值