ITPub博客

首页 > 数据库 > MySQL > mysql中的xa

mysql中的xa

原创 MySQL 作者:aoerqileng 时间:2022-08-26 14:29:44 0 删除 编辑
事务执行开始,先获取commit的mdl锁,然后进行2pc判断,开启binlog的就使用binlog作为协调器,binlog继承了tc_log
进入prepare,commit
xa 
if (!trn_ctx->no_2pc(trx_scope) && (trn_ctx->rw_ha_count(trx_scope) > 1))
      error= tc_log->prepare(thd, all);
      
mysqld!trx_undo_set_state_at_prepare(trx_t*, trx_undo_t*, bool, mtr_t*) (/Users/xiaoyu.bai/Downloads/mysql-5.7.29/storage/innobase/trx/trx0undo.cc:1910)
mysqld!trx_prepare_low(trx_t*, trx_undo_ptr_t*, bool) (/Users/xiaoyu.bai/Downloads/mysql-5.7.29/storage/innobase/trx/trx0trx.cc:2783)
mysqld!trx_prepare(trx_t*) (/Users/xiaoyu.bai/Downloads/mysql-5.7.29/storage/innobase/trx/trx0trx.cc:2829)
mysqld!trx_prepare_for_mysql(trx_t*) (/Users/xiaoyu.bai/Downloads/mysql-5.7.29/storage/innobase/trx/trx0trx.cc:2914)
mysqld!innobase_xa_prepare(handlerton*, THD*, bool) (/Users/xiaoyu.bai/Downloads/mysql-5.7.29/storage/innobase/handler/ha_innodb.cc:17143)
mysqld!ha_prepare_low(THD*, bool) (/Users/xiaoyu.bai/Downloads/mysql-5.7.29/sql/handler.cc:2359)
mysqld!MYSQL_BIN_LOG::prepare(THD*, bool) (/Users/xiaoyu.bai/Downloads/mysql-5.7.29/sql/binlog.cc:8607)
mysqld!ha_commit_trans(THD*, bool, bool) (/Users/xiaoyu.bai/Downloads/mysql-5.7.29/sql/handler.cc:1791)
mysqld!trans_commit_stmt(THD*) (/Users/xiaoyu.bai/Downloads/mysql-5.7.29/sql/transaction.cc:465)
mysqld!mysql_execute_command(THD*, bool) (/Users/xiaoyu.bai/Downloads/mysql-5.7.29/sql/sql_parse.cc:4995)
mysqld!mysql_parse(THD*, Parser_state*) (/Users/xiaoyu.bai/Downloads/mysql-5.7.29/sql/sql_parse.cc:5584)
mysqld!dispatch_command(THD*, COM_DATA const*, enum_server_command) (/Users/xiaoyu.bai/Downloads/mysql-5.7.29/sql/sql_parse.cc:1491)
mysqld!do_command(THD*) (/Users/xiaoyu.bai/Downloads/mysql-5.7.29/sql/sql_parse.cc:1032)
mysqld!::handle_connection(void *) (/Users/xiaoyu.bai/Downloads/mysql-5.7.29/sql/conn_handler/connection_handler_per_thread.cc:313)
mysqld!::pfs_spawn_thread(void *) (/Users/xiaoyu.bai/Downloads/mysql-5.7.29/storage/perfschema/pfs.cc:2197)
libsystem_pthread.dylib!_pthread_start (Unknown Source:0)
libsystem_pthread.dylib!thread_start (Unknown Source:0)
这部分是将undo标记prepare,将flush redo推迟到
group commit的flush阶段。
commit就是刷binlog cache,写入文件,执行ordered_commit,组提交

xa协调器部分故障处理怎么做?超时重试?


有兴趣学习源码的加群一起学习啊 QQ:                                                                700072075

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25719946/viewspace-2911210/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: infimum,supremum锁二
请登录后发表评论 登录
全部评论
二手知识受害者

注册时间:2011-11-02

  • 博文量
    68
  • 访问量
    47731