Mysql-5.7

MySQL 與 MariaDB 二進制日誌記錄的區別

  • December 11, 2018

我一直在對 MySQL 和 MariaDB 進行一些測試,我注意到二進制日誌的增長有很大的不同——我在網上找不到太多關於這個的資訊。

我有一個測試數據庫,並且我編寫了一個模擬事務活動(選擇、更新、插入、刪除等)的腳本,目的是進行一些簡單的負載測試,然後用於測試時間點恢復過程。

我注意到的是,在 MySQL 上執行我的自動化腳本半小時會導致大約 400MB 的二進制日誌。

當我在 MariaDB 上做同樣的事情時,我只得到大約 2MB 的二進制日誌。

所有設置都是相同的,即。

最大 Binlog 大小:100MB 緩衝池:最大 2GB

MySQL 正在執行 v 5.7,Mariadb 正在執行 10.3 - 兩者都在我本地筆記型電腦上的 Docker 中執行。

我還注意到 MariaDB 在性能方面稍微好一點,我在半小時內獲得的查詢吞吐量比使用 MySQL 的要高。

顯然,這裡最大的區別在於二進制日誌的大小。MariaDB 較小的大小意味著我可以比在 MySQL 上更快地在二進制日誌上前滾以進行時間點恢復。

是否有任何書面證據支持這種行為?MariaDB 在查看二進制日誌和恢復時是否比 MySQL 更高效?

是否有一些我應該檢查的隱藏/非顯而易見的變數可能對該測試產生重大影響?

任何幫助理解這一點都會很棒。

MariaDB 10.3 和 MySQL 5.7 之間系統變數的預設值存在許多差異,因此可以解釋一些性能和 binlog 大小的差異。此外,MariaDB 10.3 當然是更新的程式碼,是目前最新的主要 MariaDB 版本,而 MySQL 5.7 並不是自 8.0 發布以來最新的 MySQL 主要版本。

例如,MySQL 5.7 :和MariaDB 10.3 :的預設值binlog_format不同。在大多數情況下意味著基於語句,基於語句的binlog格式具有寫入日誌文件的數據較少的優點:ROW``MIXED``MIXED

當更新或刪除影響許多行時,這會導致日誌文件所需的儲存空間大大減少。這也意味著可以更快地完成從備份中獲取和恢復的工作。

MariaDB 也有log_bin_compress,請參閱Compressing Events to Reduce Size of the Binary Log,儘管預設情況下這是禁用的。

引用自:https://dba.stackexchange.com/questions/224643