AR ホームベーカリー

オイラのアウトプット用ホームベーカリー!

RDS の必要最低限なパラメータグループ ( MySQL 5.6/5.7 世代 ) 設定

いーっつも忘れて過去の手順書を確認するので、ここに記載する! 新しいパラメータグループ作った後に最低限設定するのは以下。

  • UTF8MB4 を利用する
    • InnoDB のカラム幅を 3072 だか 3074 いっぱいまで拡張する
  • フレームワークなどからのアクセスで時刻補正されるとは限らないので、DB 内の時間も Tokyo にする
  • per_table は標準で 1 だった。

f:id:donbulinux:20190917003634p:plain

設定する値について

だいぶわかりやすかったのはここかなあ、公式読むのが一番だけど、探しづらいんよね。

docs.moodle.org

character_set_filesystem について

これはもう utf8 系ならなんでもいいと思ってたんだけど、気になったので調べた。 5.6 のドキュメントだけど 5.7 も 8 もそう変わらんじゃろうおそらく。

dev.mysql.com

ファイルシステムの文字セット。この変数は、LOAD DATA INFILE および SELECT ... INTO OUTFILE ステートメントや LOAD_FILE() 関数などのファイル名を参照する文字列リテラルを解釈するために使用されます。このようなファイル名は、ファイルを開くよう試行する前に character_set_client から character_set_filesystem に変換されます。デフォルト値は binary で、変換が行われないことを意味します。マルチバイトファイル名が許可されるシステムについては、別の値が適切な場合もあります。たとえば、システムが UTF-8 を使用してファイル名を表現する場合、character_set_filesystem を 'utf8' に設定します。

重要なのは、 ファイルを開くよう試行する前に character_set_client から character_set_filesystem に変換されます。 の部分で、 character_set_filesystembinary でも、 character_set_client に何か入っていれば、その形式になっている、ということになる。 ので、 character_set_client を設定した場合は、 character_set_filesystembinary とするくらいなら揃えたほうが良いのではないか、という気がしている。

そもそも Unix / Linux だと最近の locale 標準は .UTF8 だと思われるので、上記の通り utf8 決め打ちで良いのでは? 良いか。