mabots' blog

知のレバレッジを最大化せよ (旧はてなダイアリーから移転しました。)

MySQLレプリケーションの運用管理ツールMaatkit

MySQLレプリケーション設定はそんなに難しくないのですが、大規模に運用しようとすると、ちゃんと動作できているのかどうか、もし障害が発生したときにどうやって復旧すべきかの手順を定める必要もあり、運用手順の策定と共有が重要な課題事項になってきます。そんな中、このperlでできたMaatkitは非常に強力な管理ツールとなってくれるようです。

・・・これは、、すごく便利じゃないすかね!!!

http://www.maatkit.org/

  • mk-table-checksum
    • テーブルが同一データをもっているかどうかを効率的にチェックできます。いろいろレプリケーションエラーを無視していると障害が結果的に発生していても気づかないものですが、もしバックアップ用途にレプリケーションをとっているのだとしたら、定期的にこれでチェックすべし。
  • mk-table-sync
    • サーバ間でのテーブルの差異を復旧してくれます。
  • mk-visual-explain
    • ツリー形式でEXPLAINの結果を表示してくれます。便利。
  • mk-heartbeat
  • mk-parallel-dump
    • パラレルで複数のテーブルをダンプしてくれます。複数のコアをもつCPUやHDDでより効率的にダンプしてくれます。複数のファイルに対してダンプしたり、複数のダンプファイルから復旧したりできます。最近変更がなかったデータなどはダンプの際無視するような指定も可能です。
  • mk-parallel-restore
    • mk-parallel-dumpとセットのリストアプログラム。
  • mk-query-profiler
    • クエリがディスクアクセス、インデックス参照、ロックアップをどれだけ発生させているか詳細な統計をとれます。
  • mk-archiver
  • mk-deadlock-logger
  • mk-duplicate-key-checker
    • CPUとdiskを浪費する重複した外部参照やインデックスを検出します。
  • mk-find
    • unixのfindコマンドに類似させた検索ツール。"find all tables larger than 1GB"、”DROP TABLE %s”みたいなことができます。(これは便利)
  • mk-show-grants
    • SHOW GRANTSの分かりづらい出力をよしなにしてくれます。
  • mk-slave-restart
    • レプリケーション時にスレーブで発生してエラーを監視し、問題が発生したときはエラーを無視する、shellを実行するなどして、リスタートしてくれます。
  • mk-slave-delay
    • binlogのポジションをサンプリングしながら、あえてスレーブに対してレプリケーション遅延を指定の時間だけオーバーヘッドを極小化させながら発生させます。
  • mk-slave-prefetch
    • Paul Tuckfieldのoracleアルゴリズムにのっとっています。I/Oに負荷かかっているSlaveに対して、relay logsを先読みしあらかじめ参照クエリを発行してキャッシュを「暖めて」おくことで特定の条件で速くなります。