share facebook facebook2 twitter menu hatena pocket slack

2013.05.17 FRI

RDSのDBパラメータグループはインスタンス起動後にしか反映されない?

WRITTEN BY三浦 剛慈

RDSの[Launch DB Instance]よりMySQLを作成する際に、任意のdatabaseを1つ作成できます。
その際、DBパラメーターグループを割り当てることが出来るのですが、「任意のdatabase」に対して
DBパラメーターグループが反映されていないようです。
気付いたきっかけは、databaseの文字コードをutf8にDBパラメータグループで指定して作成したはずが、
そのdatabaseの文字コードがutf8ではなく、RDS-MySQLでのデフォルト文字コードlatin1のままで
変更されていなかった事からでした。

①まず、DBパラメータグループを作成します。

ここで文字コードをutf8に指定します。
※指定しない場合、デフォルト値はlatin1になってしまいます。

②次に、事前作成したDBパラメーターグループを指定して、MySQLのDBインスタンスを作成します。

③EC2からRDSのMySQLにログインし、「Launch DB Instance Wizard」で作成したdatabase”testdb”の
文字コードを確認します。


[root@ip-xx-xx-xx-xx ~]# mysql -u root -p -h testdbinstance.xxxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com
Enter password:

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| innodb |
| mysql |
| performance_schema |
| testdb |
+--------------------+
5 rows in set (0.00 sec)

mysql> show create database testdb;
+----------+-------------------------------------------------------------------+
| Database | Create Database |
+----------+-------------------------------------------------------------------+
| testdb | CREATE DATABASE `testdb` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+-------------------------------------------------------------------+
1 row in set (0.00 sec)

文字コードはデフォルトのlatin1になっています。


mysql> create database newdb;
Query OK, 1 row affected (0.00 sec)

mysql> show create database newdb;
+----------+----------------------------------------------------------------+
| Database | Create Database |
+----------+----------------------------------------------------------------+
| newdb | CREATE DATABASE `newdb` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+----------------------------------------------------------------+
1 row in set (0.00 sec)

しかし、新規でdatabaseを作成すると文字コードはutf8となり、DBパラメータグループの設定が
反映されていることが分かります。
DBパラメータグループは、RDSインスタンス起動後でないと有効にならないと思われます。

こちらの記事はなかの人(aloha_net)監修のもと掲載しています。
元記事は、こちら