Amazon RDS for MySQL でのシステム変数(Server System Variables)についてです。
RDSではパラメーターグループを使用して設定値の変更を行います。
このデフォルトグループには、エンジン、コンピューティングクラス、インスタンスの割り当てストレージに基づいて、データベースエンジンのデフォルトと Amazon RDS システムのデフォルトが含まれています。
ここで言う Amazon RDS システムのデフォルトがどういう値なのか気になったので、パラメーターグループでの変更可否と併せて列挙しました。
比較環境
通常版
sudo yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm sudo yum install mysql-community-server /usr/bin/mysql_secure_installation
- 5.6.26 MySQL Community Server
- CentOS 6.6
RDS版
2015年8月現在の最新版
- 5.6.23-log MySQL Community Server
- Instance Class : db.t2.micro
- Parameter Group : default.mysql5.6
- Multi AZ
比較結果
ディレクトリ・ログファイル関連
RDSへのsshログインは不可のため、意識する機会は少なそうですが /rdsdbbin、/rdsdbdata ディレクトリ配下に設定されています。 パラメーターグループによる変更もできません。
Variable_name | Value |
---|---|
basedir | /rdsdbbin/mysql/ |
character_sets_dir | /rdsdbbin/mysql-5.6.23.R1/share/charsets/ |
datadir | /rdsdbdata/db/ |
general_log_file | /rdsdbdata/log/general/mysql-general.log |
innodb_data_home_dir | /rdsdbdata/db/innodb |
innodb_log_group_home_dir | /rdsdbdata/log/innodb |
lc_messages_dir | /rdsdbbin/mysql-5.6.23.R1/share/ |
log_bin_basename | /rdsdbdata/log/binlog/mysql-bin-changelog |
log_bin_index | /rdsdbdata/log/binlog/mysql-bin-changelog.index |
log_error | /rdsdbdata/log/error/mysql-error.log |
pid_file | /rdsdbdata/log/mysql-3306.pid |
plugin_dir | /rdsdbbin/mysql-5.6.23.R1/lib/plugin/ |
relay_log | /rdsdbdata/log/relaylog/relaylog |
relay_log_basename | /rdsdbdata/log/relaylog/relaylog |
relay_log_index | /rdsdbdata/log/relaylog/relaylog.index |
slave_load_tmpdir | /rdsdbdata/tmp |
slow_query_log_file | /rdsdbdata/log/slowquery/mysql-slowquery.log |
ssl_ca | /rdsdbdata/rds-metadata/ca-cert.pem |
ssl_cert | /rdsdbdata/rds-metadata/server-cert.pem |
ssl_key | /rdsdbdata/rds-metadata/server-key.pem |
tmpdir | /rdsdbdata/tmp |
一般ログとスロークエリログはテーブルに出力する設定です。
FILEに変更する事も可能です。その場合はマネジメントコンソール、または、AWS CLIで参照する事になります。
Variable_name | DEFAULT | RDS | Edit |
---|---|---|---|
log_output | FILE (general_log_file、slow_query_log_file) | TABLE (mysql.general_log、mysql.slow_log) | ◯ |
バイナリログ関連
ReadReplicaを作成した場合のレプリケーションに使用される設定です。 尚、RDSの設定でバックアップ保持期間が0の場合、バイナリログは無効化されます。この状態の場合はReadReplicaの作成ができません。
Variable_name | DEFAULT | RDS | Edit |
---|---|---|---|
binlog_format | STATEMENT | MIXED | △(ROWのみ) |
log_bin | OFF | ON | ✕ |
log_bin_basename | /rdsdbdata/log/binlog/mysql-bin-changelog | ✕ | |
log_bin_index | /rdsdbdata/log/binlog/mysql-bin-changelog.index | ✕ | |
max_binlog_size | 1073741824 (1024MB) | 134217728 (128MB) | × |
sync_binlog | 0 | 1 | ◯ |
Replication関連
MySQLを使っていて稀に引っかかるのが名称のアンダースコアとハイフンの混在です。統一して欲しい所です。
Variable_name | DEFAULT | RDS | Edit |
---|---|---|---|
log_slave_updates | OFF | ON | × |
master_info_repository | FILE (master.info) | TABLE (mysql.slave_master_info) | △(master-info-repository) |
relay_log_info_repository | FILE (relay-log.info) | TABLE (mysql.slave_relay_log_info) | ◯ |
relay_log_recovery | OFF | ON | × |
TIMESTAMPデータ型
INSERT時に値を明示的に指定しない場合、自動的に現在日時が挿入されるというMySQL固有のデータ型です。
MySQL 5.6.6 以降では非推奨の動作となっており、OFF(デフォルト)のままだとMySQLの起動時に警告メッセージが出力されます。
RDSでは推奨される設定値である ON になっているため、自動挿入はされません。
Variable_name | DEFAULT | RDS | Edit |
---|---|---|---|
explicit_defaults_for_timestamp | OFF | ON | ◯ |
例
mysql> CREATE TABLE timestamp_test(id int, dt datetime, ts timestamp); mysql> INSERT INTO timestamp_test (id) VALUES (1); mysql> INSERT INTO timestamp_test (id,dt,ts) VALUES (2,NOW(),NOW()); mysql> INSERT INTO timestamp_test (id,dt) VALUES (3,NOW()); mysql> SELECT * FROM timestamp_test;
- OFF(デフォルト)での結果
+------+---------------------+---------------------+ | id | dt | ts | +------+---------------------+---------------------+ | 1 | NULL | 2015-08-08 20:42:30 | | 2 | 2015-08-08 20:42:38 | 2015-08-08 20:42:38 | | 3 | 2015-08-08 20:42:43 | 2015-08-08 20:42:43 | +------+---------------------+---------------------+
- ONでの結果
+------+---------------------+---------------------+ | id | dt | ts | +------+---------------------+---------------------+ | 1 | NULL | NULL | | 2 | 2015-08-08 20:42:38 | 2015-08-08 20:42:38 | | 3 | 2015-08-08 20:42:43 | NULL | +------+---------------------+---------------------+
SSL接続サポート、シンボリックリンクサポート
RDSではSSL接続をサポートする設定となっています。
(have_opensslはhave_sslのエイリアスなので意味は同じです。)
また、ssh接続出来ないため明示的な利用はできませんが、シンボリックリンクサポートも有効化設定がなされています。
Variable_name | DEFAULT | RDS | Edit |
---|---|---|---|
have_openssl | DISABLED | YES | × |
have_ssl | DISABLED | YES | × |
have_symlink | DISABLED | YES | × |
InnoDB
インスタンスクラスにより変動します。
Variable_name | DEFAULT | RDS | Edit |
---|---|---|---|
innodb_flush_method | (fsync) | O_DIRECT | ◯ |
innodb_buffer_pool_size | 134217728 (128MB) | 627048448 (598MB) | △({DBInstanceClassMemory*3/4}) |
innodb_log_file_size | 50331648 (48MB) | 134217728 (128MB) | ◯ |
read_buffer_size | 131072 (128KB) | 262144 (256KB) | ◯ |
read_rnd_buffer_size | 262144 (256KB) | 524288 (512KB) | ◯ |
MyISAM
Variable_name | DEFAULT | RDS | Edit |
---|---|---|---|
key_buffer_size | 8388608 (8MB) | 16777216 (16MB) | ◯ |
Max Connection
インスタンスクラスにより変動します。 また、open_files_limit、thread_cache_sizeのデフォルト値のベースになります。
Variable_name | DEFAULT | RDS | Edit |
---|---|---|---|
max_connections | 151 | 66 | △({DBInstanceClassMemory/12582880}) |
その他
Variable_name | DEFAULT | RDS | Edit |
---|---|---|---|
secure_file_priv | /tmp/ | × | |
socket | /var/lib/mysql/mysql.sock | /tmp/mysql.sock | × |
performance_schema | ON | OFF | ◯ |
table_open_cache_instances | 1 | 16 | ◯ |
system_time_zone | CEST | UTC | × |
time_zone | SYSTEM | UTC | × |