dockerでmysqlコンテナを立てる時の設定 my.cnf
mysqlのconf について学ぶ。
ざっと出すとこんな感じ
[mysqld]
skip-host-cache
skip-name-resolve
character-set-server=utf8mb4
[client]
default-character-set=utf8mb4
mysql server, clientの設定がそれぞれ書いてある。
server 設定 mysqld
skip-host-cache
[https://www.na3.jp/entry/20140205/p1:embed:cite]
[https://dev.mysql.com/doc/refman/5.6/ja/host-cache.html:title]
これはDNSのキャッシュ戦略機能をオフにする宣言。
ipアドレスから引かれたホスト名がすでにキャッシュされている時にそれを使い回す機能があるそう。
docker-composeでコンテナを立てる場合、docker networkがよしなにprivate ipを当ててくれるからわざわざdnsで名前解決しなくていい。
skip-name-resolve
[http://gihyo.jp/dev/serial/01/mysql-road-construction-news/0028:embed:cite]
[https://dev.mysql.com/doc/refman/5.6/ja/host-cache.html:title]
これも同様にDNSの名前引きを飛ばす設定。
character-set-server=utf8mb4
mb4
がポイント。
mysqlのutf8は1-3byte文字しか扱えない。
iOS, Androidの絵文字, 最近追加された難しい日本語や中国語は4byteあるためこれらの文字列を格納しようとするとエラーが起きる。
そこで utf8mb4を使う。
[https://flhouse.co.jp/article/2/utf8mb4:embed:cite]
clientも同じ