メインコンテンツまでスキップ

MySQLの設定

RDSなどマネージドサービスでの利用が基本的になってきたためパラメータについてのメモのみ残す

サーバ設定

MySQL8からキャッシュシステムはなくなりました

パスワード設定

DBユーザーのパスワード有効期限を無期限に変更
パスワードポリシーを変更する場合も定義

default_password_lifetime = 0
validate_password_policy = LOW

最大接続数

DBに接続できる最大同時接続数を設定
サーバスペックと相談し、フロントサーバの接続数より少し多い値に設定しておく

max_connections = 151

接続待ち数

MySQLで保持できる未処理の接続リクエストの数
50 + (max_connections / 5)から算出します

back_log = 80

文字コード

MySQL8からデフォルトで utf8mb4

character_set_database = utf8mb4
character_set_client = utf8mb4

Collation

MySQL8からデフォルトで utf8mb4_0900_as_ci 必要により変更する

collation_connection = utf8mb4_general_ci
collation_server = utf8mb4_general_ci
注意

collation_databasecharacter_set_database は非推奨のシステム変数となり将来のバージョンで削除予定
AWS RDSでは設定の変更は不可能で再起動時に初期値にリセットされる

注意

上記のようにデフォルトの文字コード、 collationがMySQL8から変更されており一部変更不可能なあパラメータもあるため
MySQL DUMP/IMP する際には明示的に文字コードを指定して行うことが推奨されている

SQL長

CMSなどSQLが冗長になる場合はパケット制限にかからないように調整する

max_allowed_packet = 67108864

トランザクション分離レベル

デフォルトはREPEATABLE-READ、アプリケーション要件と確認して設定する

transaction_isolation = READ-COMMITTED

サーバ時刻

デフォルトはアメリカ時間になっていることが多いので明示的に指定

time_zone = Asia/Tokyo

接続タイムアウト

クライアントからの接続タイムアウトを指定

wait_timeout = 600

タイムスタンプ処理

注意

このシステム変数は、サーバーがデフォルト値に対して特定の非標準動作を有効にするかどうか、および TIMESTAMP カラムで NULL 値の処理を有効にするかどうかを決定します。 デフォルトでは、explicit_defaults_for_timestamp は有効になっており、非標準動作は無効になっています。 explicit_defaults_for_timestamp を無効にすると、警告が表示されます。
MySQL 8.0.18 では、このシステム変数のセッション値の設定は制限付き操作ではなくなりました。

explicit_defaults_for_timestamp =   ON

ログ設定

スロークエリログを有効化

slow_query_log = 1
long_query_time = 2