image.png
    多个数据库的事务统一失败回滚,成功。
    image.png
    两个情况
    编辑
    删除
    image.png
    1、两个事务做成一个事务去做处理。强一致性
    2、短暂的不一致性,例如定时批量处理不一致的数据,业务补偿冲正。
    image.png
    image.png
    角色AP ,多个资源RM(MYSQL),事务管理器(TM)
    AP 发起一个全局事务,事务管理器再去通知RM
    image.png
    核心6个操作。
    1、开启事务,取消事务,准备提交,提交事务,回滚事务,获取需要恢复的事务。
    mysql 5.0 就支持XA事务。
    image.png
    image.png
    image.png
    执行状态图。
    1、XA Start 事务进入Active 状态,sql 全部执行完,XA END命令。
    2、END进入空闲状态,可以使用XA Commit 提交,或者XA Prepare 进入准备状态,然后可以提交或者回滚。
    注意:XA 和非XA事务互斥,已经执行了XA Start,本地事务就不会启动。
    image.png
    完整事务流程:
    1、AP 启动一个全局事务,事务管理器生成事务 ID。
    2、事务管理器开启所有mysql 的RM 的分布式事务。
    3、AP要提交,通知事务管理器执行XA END ,MYSQL进入XA PREPARE 状态,这时所有都Prepare ok,TM才会commit成功,如果则发送rollback给所有MYSQL。
    image.png
    image.png
    3、某个RM 奔溃,TM会重发commit操作,直到成功为止。
    image.png
    5.6版本以及之前的, prepare状态不记录bin_log,所有XA是有bug的
    image.png
    atomikos 和narayana 的区别,日志支持存储到某个数据库。
    image.png
    1、极端要求数据实时一致性,调整隔离级别到串行化。
    2、TM发生故障,会导致事务操作失败,所以要考虑tm的高可用。
    3、数据不一致,commit 网络抖动故障,设置监控报警通知人工处理,重新发送commit操作。