この記事は?
- DBのチューニングは運用に合わせ適切に施す必要がある。
- アプリケーションの特性や構成なども絡むので、具体的に「何をどれだけ」という仕切りがわかりにくい。
- MySQLではMySQLTunerというPerlプログラムでチューニングポイントを調べることが出来た。
- この記事においてはMariaDBでも同ツールが使えたよ、ということを提示する。
MySQLTuner導入・実行
環境情報
項目 | 情報 |
---|---|
CentOS | CentOS Linux release 7.2.1511 |
Perl | v5.16.3 |
MariaDB | mysql Ver 15.1 Distrib 5.5.47-MariaDB, for Linux (x86_64) using readline 5.1 |
MySQLTunerとは
簡単にいうと「MySQLのチューニング診断をしてくれるアプリケーション」です。
PostgreSQLにおけるPgTuneをCUIで確認するもの、と考えてもらえば大体正しいです。
MySQLTuner
ライセンスはGNU GPLなので無料で利用可能です。
導入と使い方
ダウンロードとインストール
DBが導入されているサーバ上にて作業し、
適当なディレクトリにて展開してください。
Perlプログラムなので、実行権限を与えてあげるだけでOK、コンパイルなどは発生しません。
# cd /usr/local/src/
# wget -O mysqltuner.zip https://github.com/rackerhacker/MySQLTuner-perl/archive/master.zip
# unzip mysqltuner.zip
# rm mysqltuner.zip
# cd MySQLTuner-perl-master
# chmod 755 mysqltuner.pl
前述の公式HPよりやや古いバージョンでもよければ、
epelのリポジトリにも登録されていますので
yumで取得することも可能です。
# yum install mysqltuner
================================================================================
Package アーキテクチャー
バージョン リポジトリー 容量
================================================================================
インストール中:
mysqltuner noarch 1.6.0-1.el7 epel 45 k
トランザクションの要約
================================================================================
インストール 1 パッケージ
総ダウンロード容量: 45 k
インストール容量: 156 k
実行方法
そのまま実行ファイルを叩くだけ。簡単お手軽。
ただ、オプションにあるbuffersを付与すると情報が細かくなるのでおすすめ。
# perl mysqltuner.pl --buffers
>> MySQLTuner 1.6.13 - Major Hayden <major@mhtx.net>
>> Bug reports, feature requests, and downloads at http://mysqltuner.com/
>> Run with '--help' for additional options and output filtering
[--] Skipped version check for MySQLTuner script
Please enter your MySQL administrative login: root
Please enter your MySQL administrative password:
[OK] Currently running supported MySQL version 5.5.47-MariaDB-log
[OK] Operating on 64-bit architecture
<略>
実行結果からの考察
##各項目の見方
下記の大項目別に分けて内容が表示されます。
| 大項目 | 和訳 |
|:-:|:-:|:-:|
|Storage Engine Statistics |ストレージ統計 |
|Security Recommendations |セキュリティ警告 |
|CVE Security Recommendations | CVEセキュリティ警告 |
|Performance Metrics |パフォーマンス指標 |
|Performance schema |パフォーマンススキーマ |
|ThreadPool Metrics |スレッドプール指標 |
|MyISAM Metrics|MyISAM指標 |
|AriaDB Metrics|AriaDB指標|
|InnoDB Metrics|InnoDB指標|
|TokuDB Metrics|TokuDB指標|
|Galera Metrics|Galera指標|
|Replication Metrics|レプリケーション指標|
|Recommendations|勧告|
チューニングポイント
- 『[OK]』と表示されている箇所は現在の設定にて問題が無い(不足していない)ことを意味します。
- 『[!!]』と表示されている箇所は現在の設定にて問題がある(不足している)ことを意味します。
- 最下部の『Recommendations』にてチューニングポイントを提示してくれるので、概ね記載の内容に沿ってチューニングしていましょう。
実行例
自分の環境ではあれこれ出てきましたので一例として記録します。
###Security Recommendations
[!!] User 'root@::1' has no password set.
- IPv6からの接続の場合がうっかり漏れていたようです。
CVE Security Recommendations
[!!] CVE-2016-0546 : Candidate
[!!] CVE-2016-2047 : Candidate
[!!] CVE-2016-2047 : Candidate
[!!] 3 CVE(s) found for your MySQL release.
- 使用しているMariaDBのバージョンが脆弱性の対象のようです。
- どこかのタイミングでアップデートしないと・・・
Recommendations
query_cache_type (=0)
join_buffer_size (> 2.0M, or always use indexes with joins)
innodb_buffer_pool_instances(=2)
- それぞれのパラメータの設定値を変更しなさい、とのお達し。
- メモリ全体とのバランスをみつつそれぞれ設定変更しましょう
#まとめ
さくっとわかりやすい表示でチューニングポイントが見ることが出来るので、重宝しています。
そんなに頻度を高く定期取得してもしょうがないとは思いますが、
長期運用などを見据える場合には都度、確認すると良いかと思います。
以上