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 實現的分散式事務MySql分散式
- MySQL資料庫分散式事務XA的實現原理分析MySql資料庫分散式
- ## 【分散式事務】面試官問我:MySQL中的XA事務崩潰瞭如何恢復??分散式面試MySql
- innodb_support_xa的作用
- MySQL: Incorrect string value: '\xF0\xA4\xBD\x82'分析MySql
- 閒聊CAP、BASE與XA
- 【MySQL】MySQL中的鎖MySql
- In-depth analysis of the comparison between AT and XA of distributed transactions
- [20180920]0x0d0xa.txt
- 【MySQL】MySQL中的鎖機制MySql
- MySQL中的_rowidMySql
- MySQL中的排序MySql排序
- MySql(三) MySql中的鎖機制MySql
- (14)mysql 中的事件MySql事件
- MYSQL中replace into的用法MySql
- MySQL中limit的用法MySqlMIT
- MySQL中的自增列MySql
- MySQL中的Statistics等待MySql
- MySQL中的source命令MySql
- MYSQL中的那些鎖MySql
- MySQL 中的 EXPLAIN 命令MySqlAI
- Mysql中的小技巧MySql
- mySQL中replace的用法MySql
- MySQL中的IO流MySql
- 深度剖析分散式事務之 AT 與 XA 對比分散式
- 命令(XA ROLLBACK) 讓儲存叢集回滾GT 的事務分支
- 【MySQL】七、再說MySQL中的 table_idMySql
- (12)mysql 中的游標MySql
- django 中 mysql 的 charset 配置DjangoMySql
- mysql中!=和is not的區別MySql
- mysql中case when的使用MySql
- MySQL中的索引詳講MySql索引
- Mysql中的DQL語句MySql
- MySQL中的@變數名MySql變數
- MariaDB/MySQL中的變數MySql變數
- MySQL中的CURRENT_TIMESTAMPMySql
- mysql中BTree索引的理解MySql索引
- MySQL 中的事務理解MySql