校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > MySQL數據庫是如何實現XA規范的

MySQL數據庫是如何實現XA規范的

熱門標簽:地圖標注被騙三百怎么辦 400電話鄭州申請 常州電銷外呼系統一般多少錢 房產智能外呼系統品牌 天智外呼系統 云南語音外呼系統平臺 北京人工外呼系統價錢 福州呼叫中心外呼系統哪家好 沃克斯電梯外呼線路圖

MySQL 的一致性日志

如果 MySQL 數據庫斷電了,未提交的事務怎么辦?

答案:依靠日志。

因為在執行一個操作之前,數據庫會首先把這個操作的內容寫入到文件系統日志里,然后再進行操作。當宕機或者斷電的時候,即使操作并沒有執行完,但是日志在操作前就已經寫好了,我們仍然可以根據日志的內容來進行恢復。

MySQL InnoDB 引擎中和一致性相關的有重做日志(redo log)、回滾日志(undo log)和二進制日志(binlog)。

redo log

每當有操作執行前,在數據真正更改前會先把相關操作寫入 redo 日志。這樣當發生斷電等意外導致后續任務無法完成時,待系統恢復后就可以繼續完成這些更改。

undo log

和 redo 日志對應,也叫撤消日志,記錄事務開始前數據的狀態。

當一些更改在執行一半時發生意外而無法完成,就可以根據撤消日志恢復到更改之前的狀態。

舉個例子,事務 T1 更新數據 X,對 X 執行 Update 操作,從 10 更新到 20,對應的 Redo 日志為 T1, X, 20>,Undo 日志為 T1, X, 10>。

binlog

是 MySQL sever 層維護的一種二進制日志,MySQL 最重要的日志之一,它記錄了所有的 DDL 和 DML 語句,除了數據查詢語句 select、show 等,還包含語句所執行的消耗時間。

binlog 與 InnoDB 引擎中的 redo/undo log 不同,主要目的是復制和恢復,用來記錄對 MySQL 數據更新或潛在發生更新的 SQL 語句,并以事務日志的形式保存在磁盤中。

binlog 主要應用在 MySQL 的主從復制過程中,MySQL 集群在 Master 端開啟 binlog,Master 把它的二進制日志傳遞給 slaves 節點,再從節點回放來達到 master-slave 數據一致的目的。

你可以連接到 MySQL 服務器,使用下面的命令查看真實的 binlog 數據:

//查看binlog文件的內容
show binlog events;

//查看指定binlog文件的內容
show binlog events in 'MySQL-bin.000001';

//查看正在寫入的binlog文件
show master status\G
 
//獲取binlog文件列表
show binary logs;

XA 規范是如何定義的

XA 是由 X/Open 組織提出的分布式事務規范,XA 規范主要定義了事務協調者(Transaction Manager)和資源管理器(Resource Manager)之間的接口。

事務協調者(Transaction Manager)

因為 XA 事務是基于兩階段提交協議的,所以需要有一個協調者,來保證所有的事務參與者都完成了準備工作,也就是 2PC 的第一階段。

如果事務協調者收到所有參與者都準備好的消息,就會通知所有的事務都可以提交,也就是 2PC 的第二階段。

之所以需要引入事務協調者,是因為在分布式系統中,兩臺機器理論上無法達到一致的狀態,需要引入一個單點進行協調。

資源管理器(Resource Manager)

負責控制和管理實際資源,比如數據庫或 JMS 隊列。

目前,主流數據庫都提供了對 XA 的支持,在 JMS 規范中,即 Java 消息服務(Java Message Service)中,也基于 XA 定義了對事務的支持。

XA 事務的執行流程

XA 事務是兩階段提交的一種實現方式,根據 2PC 的規范,XA 將一次事務分割成了兩個階段,即 Prepare 和 Commit 階段。

Prepare 階段

TM 向所有 RM 發送 prepare 指令,RM 接受到指令后,執行數據修改和日志記錄等操作,然后返回可以提交或者不提交的消息給 TM。

如果事務協調者 TM 收到所有參與者都準備好的消息,會通知所有的事務提交,然后進入第二階段。

Commit 階段

TM 接受到所有 RM 的 prepare 結果,如果有 RM 返回是不可提交或者超時,那么向所有 RM 發送 Rollback 命令。

如果所有 RM 都返回可以提交,那么向所有 RM 發送 Commit 命令,完成一次事務操作。

MySQL 如何實現 XA 規范

MySQL 中 XA 事務有兩種情況,內部 XA 和外部 XA,其區別是事務發生在 MySQL 服務器單機上,還是發生在多個外部節點間上。

內部 XA

在 MySQL 的 InnoDB 存儲引擎中,開啟 binlog 的情況下,MySQL 會同時維護 binlog 日志與 InnoDB 的 redo log,為了保證這兩個日志的一致性,MySQL 使用了 XA 事務,由于是在 MySQL 單機上工作,所以被稱為內部 XA。

內部 XA 事務由 binlog 作為協調者,在事務提交時,則需要將提交信息寫入二進制日志,也就是說,binlog 的參與者是 MySQL 本身。

外部 XA

外部 XA 就是典型的分布式事務,MySQL 支持 XA START/END/PREPARE/Commit 這些 SQL 語句,通過使用這些命令,可以完成分布式事務。

你也可以查看 MySQL 官方文檔,了解更多的 XA 命令。

MySQL 外部 XA 主要應用在數據庫代理層,實現對 MySQL 數據庫的分布式事務支持,例如開源的數據庫中間層,比如淘寶的 TDDL、阿里巴巴 B2B 的 Cobar 等。

外部 XA 一般是針對跨多 MySQL 實例的分布式事務,需要應用層作為協調者,比如我們在寫業務代碼,在代碼中決定提交還是回滾,并且在崩潰時進行恢復。

binlog 中的 Xid

當事務提交時,在 binlog 依賴的內部 XA 中,額外添加了 Xid 結構,binlog 有多種數據類型:

  1. statement 格式,記錄為基本語句,包含 Commit
  2. row 格式,記錄為基于行
  3. mixed 格式,日志記錄使用混合格式

不論是 statement 還是 row 格式,binlog 都會添加一個 XID_EVENT 作為事務的結束,該事件記錄了事務的 ID 也就是 Xid,在 MySQL 進行崩潰恢復時根據 binlog 中提交的情況來決定如何恢復。

binlog 同步過程

下面來看看 binlog 下的事務提交過程,整體過程是先寫 redo log,再寫 binlog,并以 binlog 寫成功為事務提交成功的標志。

當有事務提交時:

  • InnoDB 進入 Prepare 階段,并且 write/sync redo log,寫 redo log,將事務的 xid 寫入到 redo 日志中,binlog 不作任何操作
  • 進行 write/sync binlog,寫 binlog 日志,也會把 xid 寫入到 binlog
  • 調用 InnoDB 引擎的 commit 完成事務的提交,將 commit 信息寫入到 redo 日志中

如果是在第一步和第二步失敗,則整個事務回滾

如果是在第三步失敗,則 MySQL 在重啟后會檢查 xid 是否已經提交,若沒有提交,也就是事務需要重新執行,就會在存儲引擎中再執行一次提交操作,保障 redo log 和 binlog 數據的一致性,防止數據丟失。

實際執行還牽扯到操作系統緩存 buffer 何時同步到文件系統中,所以 MySQL 支持用戶自定義在 commit 時如何將 log buffer 中的日志刷到 log file 中,通過變量 innodb_flush_log_at_trx_Commit 的值來決定。

在 log buffer 中的內容稱為臟日志,感興趣的話可以查詢資料了解下。

以上就是MySQL數據庫是如何實現XA規范的的詳細內容,更多關于MySQL數據庫XA規范的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • mysql跨庫事務XA操作示例
  • MySQL存儲表情時報錯:java.sql.SQLException: Incorrect string value:‘\xF0\x9F\x92\xA9\x0D\x0A...’的解決方法
  • 如何修改Xampp服務器上的mysql密碼(圖解)
  • 在mac上如何使用終端打開XAMPP自帶的MySQL
  • xampp修改mysql默認密碼的方法
  • ThinkPHP框架搭建及常見問題(XAMPP安裝失敗、Apache/MySQL啟動失?。?/li>
  • xampp中修改mysql默認空密碼(root密碼)的方法分享
  • mysql的XA事務恢復過程詳解
  • 解決xampp自啟動和mysql.sock問題

標簽:黔東 鹽城 拉薩 沈陽 徐州 沈陽 移動 珠海

巨人網絡通訊聲明:本文標題《MySQL數據庫是如何實現XA規范的》,本文關鍵詞  MySQL,數據庫,是,如何,實現,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL數據庫是如何實現XA規范的》相關的同類信息!
  • 本頁收集關于MySQL數據庫是如何實現XA規范的的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    国产精品短视频| 无码av免费一区二区三区试看| 椎名由奈av一区二区三区| 国产白丝精品91爽爽久久| 国产精品福利影院| 日本高清免费不卡视频| 亚洲成人av一区二区三区| 欧美高清dvd| 国产综合色产在线精品| 国产精品青草久久| 欧美日韩国产系列| 久久99国产精品麻豆| 国产日韩成人精品| 欧美性色欧美a在线播放| 日本大胆欧美人术艺术动态| 精品国产乱码久久久久久影片| 国产成人免费视频网站| 国产精品久久久久桃色tv| 成人做爰69片免费看网站| 一区二区欧美在线观看| 精品少妇一区二区| 日本精品一级二级| 国产精品一区久久久久| 亚洲国产乱码最新视频| 亚洲国产精品成人综合色在线婷婷 | 亚洲青青青在线视频| 欧美精品一二三区| 色婷婷精品大在线视频| 国产馆精品极品| 日日骚欧美日韩| 亚洲精品久久久蜜桃| 国产偷国产偷精品高清尤物 | 欧美性大战xxxxx久久久| 99亚偷拍自图区亚洲| 久久97超碰国产精品超碰| 一区二区三区在线视频免费观看| 国产日韩欧美高清在线| 欧美xxxx在线观看| 欧美一级日韩不卡播放免费| 欧美色成人综合| 91精彩视频在线观看| av电影在线观看不卡| 成人激情文学综合网| 国产成人av电影在线| 国产精品亚洲人在线观看| 韩国av一区二区三区四区| 日本不卡123| 日韩电影免费在线观看网站| 午夜精品影院在线观看| 亚洲精品免费在线播放| 亚洲精品老司机| 亚洲精品视频在线观看免费| 亚洲伦在线观看| 国产精品久久99| 中文字幕制服丝袜一区二区三区| xfplay精品久久| 国产日韩欧美在线一区| 久久久久久电影| 国产精品一区二区在线观看不卡| 激情亚洲综合在线| 国产999精品久久| 99re这里只有精品6| 欧美亚洲一区二区三区四区| 在线不卡中文字幕| 精品少妇一区二区三区免费观看| 久久久亚洲精品石原莉奈| 久久综合久久99| 亚洲少妇30p| 午夜精品久久久久久久99水蜜桃 | www.欧美亚洲| 色网站国产精品| 在线综合+亚洲+欧美中文字幕| 日韩欧美不卡在线观看视频| 日本一区二区不卡视频| 亚洲五码中文字幕| 国产精品一区二区视频| 日本道在线观看一区二区| 欧美一区二区在线免费播放| 久久综合九色综合久久久精品综合| 久久精品日产第一区二区三区高清版 | 午夜精品一区在线观看| 国产精品一卡二卡在线观看| 日本高清免费不卡视频| 欧美va在线播放| 亚洲人成在线观看一区二区| 日韩精品福利网| 丁香六月综合激情| 91麻豆精品国产自产在线观看一区 | 成人丝袜视频网| 91精品久久久久久蜜臀| 国产精品久久久久久久久免费樱桃 | 日本精品一级二级| 久久久精品国产99久久精品芒果| 中文字幕日韩欧美一区二区三区| 婷婷中文字幕综合| av资源站一区| 久久久久国色av免费看影院| 亚洲成人自拍偷拍| 成人av网站在线| 精品电影一区二区| 午夜精品在线视频一区| 91一区二区在线| 国产日韩欧美精品一区| 免费美女久久99| 日本道免费精品一区二区三区| 国产女主播视频一区二区| 麻豆精品一区二区三区| 在线免费不卡电影| 国产精品人成在线观看免费| 九色porny丨国产精品| 欧美高清一级片在线| 综合色天天鬼久久鬼色| 成人一道本在线| 久久免费视频色| 另类小说图片综合网| 欧美日韩高清影院| 亚洲夂夂婷婷色拍ww47| 一本大道综合伊人精品热热| 26uuu亚洲婷婷狠狠天堂| 麻豆精品精品国产自在97香蕉| 欧洲另类一二三四区| 日韩一区中文字幕| 成人免费视频一区二区| 亚洲精品一区二区三区香蕉| 精品一区二区三区不卡| 日韩午夜在线播放| 蜜桃av一区二区在线观看| 欧美喷潮久久久xxxxx| 亚洲6080在线| 欧美日韩国产高清一区| 三级成人在线视频| 日韩欧美国产1| 免费高清成人在线| 精品国产麻豆免费人成网站| 激情综合色丁香一区二区| 精品国产91久久久久久久妲己| 久久精品久久精品| 久久久亚洲精品石原莉奈| 国产一区二区美女诱惑| 国产欧美视频在线观看| 99精品视频一区二区三区| 亚洲乱码国产乱码精品精小说 | 亚洲成人手机在线| 在线播放/欧美激情| 奇米综合一区二区三区精品视频| 制服视频三区第一页精品| 精品一区二区三区香蕉蜜桃| 国产色综合一区| 91黄色小视频| 日韩和欧美一区二区三区| 91精品久久久久久蜜臀| 国产不卡免费视频| 亚洲国产美国国产综合一区二区| 日韩一区二区三区三四区视频在线观看| 久久国产精品99久久久久久老狼 | 国产精品毛片久久久久久久| 91女人视频在线观看| 首页国产欧美久久| 久久久综合视频| 欧美私人免费视频| 国产剧情一区二区三区| 亚洲一级电影视频| 久久久精品免费观看| 欧美日韩精品一区视频| 国产成人三级在线观看| 亚洲丰满少妇videoshd| 久久久亚洲精品石原莉奈| 91国偷自产一区二区开放时间 | 91色在线porny| 久久机这里只有精品| 中文字幕一区二区三区不卡在线| 欧美日韩精品一区视频| 成人黄色小视频在线观看| 三级久久三级久久| 亚洲另类春色校园小说| 久久精品一区二区| 91精品国产一区二区三区蜜臀| 国产精品自在欧美一区| 天天色 色综合| 亚洲人被黑人高潮完整版| 久久精品一区二区三区不卡牛牛| 欧美一三区三区四区免费在线看| aaa欧美日韩| 国产成人精品综合在线观看| 久久国产夜色精品鲁鲁99| 亚洲成精国产精品女| 亚洲综合激情小说| 亚洲丝袜精品丝袜在线| 亚洲国产精品二十页| 久久亚洲影视婷婷| 日韩视频在线永久播放| 欧美区一区二区三区| 欧美羞羞免费网站| 欧美中文字幕亚洲一区二区va在线| 91在线观看污| 成人精品视频一区| 国产成人免费9x9x人网站视频| 国产一区二区三区在线观看免费视频 | 麻豆精品视频在线观看免费| 日韩精品高清不卡|