MySQL 5.6 パラメータ検討会

7月29日にMyNA(日本MySQLユーザ会)会 2013年7月が行われ、Oracle ACE Directorの@sheeriさん、MyNA会長の@tmtmsさんに混ざって発表をしてきました。運営のみなさま、当日お越しいただいたみなさま、いつもありがとうございます。

今回は@yoku0825さん、@yyamasaki1さんがライトニングトークをされました。@yoku0825さんアイスごちそうさまでした。

私は発表内容について懇親会でいろいろ宿題をもらってしまい、しばらく復習をしていました。ようやく修正が終わりましたのでRevision 2として公開します。


復習のついでに、パラメータファイルの叩き台を作成しました。

このパラメータファイルは一部のディレクトリ名、hostname、server_id、server_uuidとssl_cipherを除き、Amazon RDS t1.smallの設定を再現したものです。これをベースにカスタマイズしていくと時間を節約できるのではないかと思います。インスタンスサイズが異なる場合はinnodb_buffer_pool_sizeとmax_connectionsを増減させます。オンプレミスの環境でしたらdefault_time_zoneはSYSTEMの方がよいかもしれません。

コメントアウトされているところは私が独断で追加したパラメータです。新機能を積極的に活用する、また極力詳細なログを出力するという方針で選んでいます。設定値はあくまでも一例ですが、ご参考になればと思います。リファレンスマニュアルにリンクしたものを以下に貼り付けておきます。

[mysqld]
## File Location
datadir                   = /rdsdbdata/db
innodb_data_home_dir      = /rdsdbdata/db/innodb
pid-file                  = /rdsdbdata/log/mysql-3306.pid
log_bin                   = /rdsdbdata/log/binlog/mysql-bin-changelog
log_error                 = /rdsdbdata/log/error/mysql-error.log
general_log_file          = /rdsdbdata/log/general/mysql-general.log
innodb_log_group_home_dir = /rdsdbdata/log/innodb
relay_log                 = /rdsdbdata/log/relaylog/relaylog
slow_query_log_file       = /rdsdbdata/log/slowquery/mysql-slowquery.log
slave_load_tmpdir         = /rdsdbdata/tmp
tmpdir                    = /rdsdbdata/tmp
secure_file_priv          = /tmp
socket                    = /tmp/mysql.sock

## SSL
ssl_ca   = /rdsdbdata/rds-metadata/ca-cert.pem
ssl_cert = /rdsdbdata/rds-metadata/server-cert.pem
ssl_key  = /rdsdbdata/rds-metadata/server-key.pem

## InnoDB
#innodb_buffer_pool_dump_at_shutdown = ON
#innodb_buffer_pool_load_at_startup  = ON
innodb_buffer_pool_size              = 1092M
#innodb_checksum_algorithm           = crc32
#innodb_file_format                  = Barracuda
#innodb_flush_method                 = O_DIRECT
#innodb_io_capacity                  = 2000
#innodb_io_capacity_max              = 4000
#innodb_large_prefix                 = ON
innodb_log_file_size                 = 128M
#innodb_online_alter_log_max_size    = 1G
#innodb_print_all_deadlocks          = ON

## MyISAM
key_buffer_size = 16M

## Memory
#max_heap_table_size = 64M
#tmp_table_size      = 64M

## Binary Log
binlog_format             = MIXED
#enforce_gtid_consistency = ON
#expire_logs_days         = 14
#gtid_mode                = ON
log_slave_updates         = ON
master_info_repository    = TABLE
#master_verify_checksum   = ON
max_binlog_size           = 128M
relay_log_info_repository = TABLE
relay_log_recovery        = ON
#report_host              = 
#report_port              = 3306
server_id                 = 12345
#slave_net_timeout        = 30
sync_binlog               = 1

## Slow Query Log
log_output                              = TABLE
#log_queries_not_using_indexes          = ON
#log_slow_slave_statements              = ON
#log_throttle_queries_not_using_indexes = 60
#long_query_time                        = 1.0
#slow_query_log                         = ON

## Connection Management
#log_warnings              = 2
#max_allowed_packet        = 16M
#max_connect_errors        = 999999999
max_connections            = 121
#table_open_cache          = 10000
table_open_cache_instances = 16

## Memory Allocation per Connection
read_buffer_size     = 256K
read_rnd_buffer_size = 512K
#sort_buffer_size    = 2M

## SQL Behavior
#character_set_server           = utf8mb4
#collation_server               = utf8mb4_general_ci
default_time_zone               = UTC
explicit_defaults_for_timestamp = ON
#sql_mode                       = TRADITIONAL
#transaction_isolation          = READ-COMMITTED

[client]
#loose_default_character_set = utf8mb4
socket                       = /tmp/mysql.sock