Amazon Lightsail へ移行してみた (MySQL観点)


導入

 去年Webページ構築用にAWSで作った無料アカウント期間が終わるので、どうしようか考えた結果、そのままEC2インスタンスを残すのではなく、月額3.5ドルから160ドルまで選べるLightsailへ引っ越すことにしました。マンガに描かれている通り、確かに速い!

以下はインスタンス作成画面の抜粋

 移行前から LAMP(PHP 7) を利用していたので、こちらを選択しインスタンスを作成。

LightsailにおけるMySQL

 MySQLもすぐさま使える状況になっています。とりあえず、元環境からmysqldumpを使ってDBレベルで情報を引っこ抜き、Lightsail環境へ突っ込んでみます。ちなみに、元環境のバージョンは 5.6.43、Lightsail環境は 5.7.25 でした。(Lightsail環境のLinux/Unix OSは Ubuntu 16.04.6 LTS でした。)

 Webページの挙動は概ね問題無し。ただ、1点気になることがあり、
 どうも、表の名前の大文字小文字が無視される様になっています。

MySQL 5.7 Reference Manual - 9.2.2 Identifier Case Sensitivity

On Unix, the default value of lower_case_table_names is 0.
On Windows, the default value is 1. On macOS, the default value is 2.

にもかかわらず、実際は以下の通りでした。

mysql
mysql> show variables where variable_name='lower_case_table_names';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_table_names | 1     |
+------------------------+-------+
1 row in set (0.02 sec)

不思議に思いながら、設定変更してMySQLを再起動しようとしたところで、ハタと気づきます。
/etc/init.d に mysqld が居ないぞ?

更に、普段通りDBへ xmlファイルをロードしようとした際に以下のエラーが出力され、

ERROR 1290 (HY000) at line 1: The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

LOAD XML INFILE構文の"INFILE"の手前に"LOCAL"を差し込むと解決したところで、
こう考える様になりました。さてはお前クライアントだな?

おそらく、Lightsail用に汎用MySQLサーバーが別にあるのでしょう。
だから lower_case_table_names も 1 にしているんだろーなー、と納得するようにしました。