MySQLの設定を本番前に見直したい

MySQL

記事の目的
リリース前に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

所感
正直まだまだ見るところあるなと思いつつ、一旦これで妥協した感じですね。
どんどん更新していく予定です。
まだまだ勉強しなければという感じです。

コメント

タイトルとURLをコピーしました