Mysql

異常高的 MySQL 寫入和大於正常的二進制日誌文件。我怎樣才能確定是什麼原因造成的?

  • February 16, 2016

我們有一個 MySQL 主數據庫,它複製到一個 MySQL 從屬數據庫。我們遇到了 MySQL 在短時間內(幾個小時)顯示大量寫入(但執行的查詢數量沒有增加)的問題。我們正在努力調查原因。

通常我們的二進制日誌文件大小為 1 GB,但在我們遇到這些問題期間,日誌文件躍升至 8.5 GB。

當我在 8.5 GB 二進制日誌之一上執行 mysqlbinlog –short-form BINARYLOG.0000 時,它只返回 196 KB 的查詢和數據。當我在普通二進制日誌 (1 GB) 上執行 mysqlbinlog –short-form 時,它會返回大約 8,500 KB 的查詢和數據庫活動。這沒有任何意義,因為它有 7 GB 以上的數據,但返回的二進制日誌文件還不到 1 GB。

我看到很多這些語句的時間戳非常連續,但我不確定這是否與問題有關,因為它們既處於正常時期,也處於我們遇到這些問題的時間。

SET TIMESTAMP=1391452372/*!*/;COMMIT/*!*/;
SET TIMESTAMP=1391452372/*!*/;BEGIN/*!*/;COMMIT/*!*/;
SET TIMESTAMP=1391452372/*!*/;BEGIN/*!*/;COMMIT/*!*/;
SET TIMESTAMP=1391452372/*!*/;BEGIN/*!*/;COMMIT/*!*/;

我如何確定是什麼導致了這些二進制日誌的大小膨脹,這也導致了高寫入量,以至於伺服器有時會離線,就像 DDoS 攻擊一樣?

即使二進制日誌文件本身多了 7 GB,mysqlbinlog 怎麼能返回這麼少的數據?我可以做些什麼來確定二進制日誌為 1 GB 的正常時期與我們遇到 8 GB 二進制日誌問題的時期之間的區別?感謝您提供任何幫助。

賬單

不要使用--short-form. 你壓制了很多你想看到的東西。

--short-form

僅顯示日誌中包含的語句,不顯示任何額外資訊或基於行的事件。這僅用於測試,不應在生產系統中使用。

http://dev.mysql.com/doc/refman/5.6/en/mysqlbinlog.html#option_mysqlbinlog_short-form

這是一個基本上沒有意義的選擇,因為它只返回日誌中包含的語句。如果你有這麼大的二進制日誌,它不太可能充滿語句——它充滿了行事件

--base64-output=decode-rows --verbose是您正在尋找的選項。

http://dev.mysql.com/doc/refman/5.6/en/mysqlbinlog-row-events.html

至少,您不會對返回的數據量感到失望……它將比實際的二進制日誌本身大得多,它們以相對緊湊的格式儲存。

檢查 的值binlog-row-image。如果是full,請嘗試將其更改為minimal.

詳細資訊:二進制日誌選項和變數

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