記事の目的
リリース前にMySQLの設定を確認したい!
そんな自分のための備忘録。
現状
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
# タイムゾーンの設定
default-time-zone = SYSTEM
log_timestamps = SYSTEM
# エラーログの設定(must check)
# log-error = /var/log/mysql/error.log
# スロークエリログの設定
slow_query_log = ON
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 3.0
# スレッドキャッシュ保持最大数
thread_cache_size=128
# 同時接続数
max_connections=150
# check before release
innodb_buffer_pool_size = 128M
innodb_log_file_size = 48M
innodb_log_files_in_group = 2
innodb_data_file_path = ibdata1:300M:autoextend
innodb_file_per_table = ON
[client]
default-character-set=utf8mb4
my.cnfの設定
上記参考にさせていただきました!
以下のmy.cnfさえとりあえず確認できてれば、かなりのパフォーマンスチューニングになるとのこと
公式はこちら
MySQL :: MySQL 5.6 リファレンスマニュアル :: 14.12 InnoDB の起動オプションおよびシステム変数
innodb_buffer_pool_size
- メモリにロードされるデータとインデックスのためにInnoDBがどれくらいメモリを使うかを指定するもの
- デフォルトは128M
- MySQL専用であれば、搭載メモリの50%~80%が推奨
innodb_log_file_size
- 書き込み操作をこのログに書き込んでおいて、落ち着いたらコミットするもの(トランザクションログ(InnoDB_logfile))
- デフォルトは48M
- 2GB以上にするのが一般的だそう
- innodb_buffer_pool_size の変更と同時に変えなければならない
innodb_data_file_path
- InnoDBデータファイルのパス・初期サイズの設定
- デフォルト: innodb_data_file_path = ibdata1:10M:autoextend
- つまり10Mごとに新しいデータファイルを作成するということ
- https://www.mk-mode.com/blog/2013/05/27/mysql-innodb-chuning/
- データファイルは一つの方が早いので、余裕のあるサイズを設定しておくのがいいらしい
innodb_file_per_table
- ファイルレベルでテーブルを管理していくもの
- テーブルをドロップしたりするときにディスク容量を解放できるそう
- default : innodb_file_per_table= ON (5.6.6以上の場合)
参考↓

第55回 innodb_file_per_tableオプションについて
innodb_file_per_tableというオプションはご存知でしょうか。このオプションはMySQL4.1.1から導入され,MySQL 5.6.6とそれ以降ではデフォルトでONになっているオプションです。
innodb_log_files_in_group
- トランザクションログ(InnoDB_logfile)の大きさと、1グループのログファイル数。
- default: innodb_log_files_in_group=2
- 推奨値も2なので、そのままにする
- セキュリティ設定を見直す
mysql_secure_installation
- 実行ファイルで、最低限のセキュリティ設定を行うことができる
- DBユーザ作成を見直す
- Select用userが作成されているか
- Update用userが作成されているか
所感
正直まだまだ見るところあるなと思いつつ、一旦これで妥協した感じですね。
どんどん更新していく予定です。
まだまだ勉強しなければという感じです。
コメント