ラージビッグバナー(970x90)

Linux

ZabbixのDB(MySQL)が肥大化したのでALTER TABLEしたビフォーアフター

投稿日:

ビッグバナー(piglog)728px

5年ほど運用している、検証開発環境のZabbixのDBが肥大化していたので、メンテナンスしました。

この環境とは別に、本番環境でも運用しているZabbixがあるので、今回のメンテナンスの結果次第で本番環境でも実施しようと考えての事前検証の意味も含めてのメンテナンスです。

そして、実行する前と後で、各テーブルのサイズがどのくらい小さくなったかを比較してみたいと思います。

メンテナンスの方法

具体的に何をしたか?というと、肥大化していたテーブルに対して、ALTER TABLE を使って肥大化しているテーブルを再構成しました。ただこれだけ。

ALTER TABLE の動作としては以下。

1.テーブルをTL_WRITE_ALLOW_READロックする。このロックは特殊なロックで、テーブルロックの一種であるが、
他のセッションからのREADを許可し、WRITEをブロックする。
2.新しいテーブル定義を使って空のテンポラリテーブルを作成する。
3.古いテーブルから新しいテーブルへデータをコピーする。
4.テーブルの名前を付け替えて、新しいテーブルを古いテーブルと同じ名前にする。古いテーブルは破棄する。
5.新しいテーブルへブロックしていたWRITEをリダイレクトする。

引用:http://nippondanji.blogspot.com/2009/05/alter-table.html

注意する点としては、以下。

  • 元テーブルのサイズと同じくらいのディスク空き容量が必要
  • 実行時はWRITEがブロックされる(readは可能)

ですので、肥大化したテーブルのサイズ以上のディスクの空き領域がない場合は、単純にALTER TABLEするだけでは対処できないようです。

では、実際にやってみた結果です。

ALTER TABLE の実行

まず、ZabbixのDB全体でどのくらいのディスク容量を使っているのかを確認しておきます。

なんだ、たいして使ってないじゃん、と思った方。

その通りです。開発検証環境用として構築したものなので、超節約スペックで構成しているのです。

次に、肥大化しているテーブルのサイズを確認しておきます。

ここから、ALTER TABLEを実行してどのくらい減るかですよね。楽しみ楽しみ。

 

では実行していきます。実行コマンドとしては、こんな感じです。

 

余談ですが、コマンドラインから直接実行する場合は以下のように実行すればよいので、スクリプト化してcronで回すことで定期的なメンテナンスもできそうです。

 

では、テーブルサイズがどのくらい減ったかを確認してみましょう。

 

実行前 7.8GB → 実行後 4.8GB と、割合としてはかなり減ったのではないでしょうか?!

わかりやすいように比較してみると。。。

テーブル名 ビフォー アフター
history_uint 2.4GB 1.9GB
history 1.7GB 1.1GB
trends_uint 232MB 188MB
history_text 236MB 164MB
auditlog 1.4GB 124MB
history_str 400MB 96MB
trends 152MB 92MB
history_log 1.4GB 60MB
events 92MB 11MB

auditlog と history_log がびっくりするくらい減っていますね。

history_log のサイズが減っているのは、以前はログの監視もしていましたが、現在ではしていません。そのため、設定していた保存期間を過ぎたヒストリのデータが削除されたと考えられます。

auditlogのテーブルはなぜこんなにへっているのでしょう。。。そもそも、なんのデータなんでしょう。Zabbixへのログイン/ログアウトなどのログなのでしょうか。それであればなぜこんなに変化があるのか不思議です。どこかで保存期間を設定していて、どこかのタイミングで短く設定したのか?はて。。。

とまぁ、謎な部分は残りますが、とりあえず効果はありそうです。

途中でデータの保存期間を変更(短く)していたり、監視の設定を追加したり削除したりを繰り返している場合には特に効果が見られるようですね。

まとめ

長く運用していると、いろいろ問題がでてくることもありますが、こうやってメンテナンスしていくことで、そのシステムに対しての愛情が芽生えてきます。。。よね?

途中で引き継いだサーバの設定なんかを見ていると、 これ ひでぇな おぃ・・・ということもよくありますが、反面教師として丁寧なシゴトを心がけたいものです。

では。

↓↓↓ 持っていると便利な一冊 ↓↓↓

レクタングル (大)

レクタングル (大)

リンクユニット(レスポンシブ)

-Linux
-,

Copyright© ぴぐろぐ , 2019 All Rights Reserved.