mysql資料一致性解析

wongchaofan發表於2024-07-29

什麼是 innodb_support_xa?

關於 innodb_support_xa 的一個常見誤解是,它啟用使用者發起的 XA 事務,即使用外部事務協調器在多個系統上準備並提交的事務。這實際上並不是該選項的確切用途。它啟用InnoDB 中的兩階段提交(準備,然後提交)。這不僅對於使用者發起的 XA 是必要的,而且對於InnoDB 事務日誌和 MySQL 二進位制日誌之間的內部XA 協調也是必要的,以確保它們是一致的。一致是一個具有特殊含義的重要詞。

mysql8.0中此引數已經刪除。

引數innodb_support_xa被移除,原因是該引數已經失效,一方面當XA設定為OFF時,PREPARE事務只能回滾,無法提交;另一方面要保證Binlog/Engine故障恢復的資料一致性。

刪除此引數後,XA 預設啟用。

似乎有許多系統變數會影響 binlog 與 InnoDB 的一致性:

– sync_binlog
– binlog_format
– innodb_flush_log_at_trx_commit
– innodb_locks_unsafe_for_binlog
– innodb_support_xa
– tx_isolation

相關文章