異常高的 MySQL 寫入和大於正常的二進制日誌文件。我怎樣才能確定是什麼原因造成的?
我們有一個 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
.詳細資訊:二進制日誌選項和變數