mysql中的xa
事務執行開始,先獲取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部落格 ” ,連結:http://blog.itpub.net/25719946/viewspace-2911210/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql的XA與innodb_support_xaMySql
- MySQL 中基於 XA 實現的分散式事務MySql分散式
- 關於XA分散式事務(weblogic中的XA概念)分散式Web
- ## 【分散式事務】面試官問我:MySQL中的XA事務崩潰瞭如何恢復??分散式面試MySql
- MySQL資料庫分散式事務XA的實現原理分析MySql資料庫分散式
- XA式、非XA式Spring分散式事務的實現Spring分散式
- mysql 的兩個引數 slave_type_conversions 與innodb_support_xaMySql
- Oracle XA Exception error codeOracleExceptionError
- Mysql第十日字符集,XA事務,查詢快取MySql快取
- MySQL: Incorrect string value: '\xF0\xA4\xBD\x82'分析MySql
- 【MySQL】MySQL中的鎖MySql
- 求助:(javax.transaction.xa.XAException: 關閉的連線))JavaException
- weblogic XA 事務配置問題Web
- 【MySQL】MySQL中的鎖機制MySql
- MySQL中的排序MySql排序
- MySql(三) MySql中的鎖機制MySql
- (14)mysql 中的事件MySql事件
- MYSQL中replace into的用法MySql
- MySQL中的source命令MySql
- Mysql中的小技巧MySql
- mySQL中replace的用法MySql
- MySQL中的_rowidMySql
- MySQL中的IO流MySql
- MySQL中的Statistics等待MySql
- MYSQL中的那些鎖MySql
- MySQL中的表-區MySql
- MySQL中的運算子MySql
- MySQL中limit的用法MySqlMIT
- MySQL中的自增列MySql
- MySql中的事務MySql
- mysql中count的用法MySql
- MySQL中的複製MySql
- MySQL中的show命令MySql
- MySQL 中的 EXPLAIN 命令MySqlAI
- 【MySQL】再說MySQL中的 table_idMySql
- mysql 5.7中嶄新的 mysql sys schemaMySql
- 【實驗】【MySQL】MySQL中的運算子展示MySql
- 深度剖析分散式事務之 AT 與 XA 對比分散式