vm上にMySQLの開発環境作った時のメモ
MySQLのバージョン
Server version: 5.1.37-1ubuntu5-log (Ubuntu)
my.cnfに追記したもの
default-character-set = utf8
general-log = 1
general-log-file = /var/log/mysql/mysqld.log
slow-query-log = 1
log-slow-queries = /var/log/mysql/mysqld-slow.log
long-query-time = 0.01
default-storage-engine = InnoDB
transaction-isolation = READ-COMMITTED
log-bin = mysql-bin
binlog-format = mixed
innodb_buffer_pool_size = 134217728
- default-character-set
デフォルトのキャラセット
show variables like '%char%';の出力が以下になるように設定することが多い。
[mysqld]の箇所のみだと下記のようにならないので注意
Variable_name | Value |
character_set_client | utf8 |
character_set_connection | utf8 |
character_set_database | utf8 |
character_set_filesystem | binary |
character_set_results | utf8 |
character_set_server | utf8 |
character_set_system | utf8 |
character_sets_dir | /usr/share/mysql/charsets/ |
- general-log
一般クエリログを使用するか 1 = YES, 0 = NO
- general-log-file
一般クエリログのパス
- slow-query-log
スロークエリログを使用するか 1 = YES, 0 = NO
- log-slow-queries
スロークエリログのパス
- long-query-time
ここで設定した値よりコストの大きいものをスロークエリとして記録
5.0以下のバージョンでは少数点以下の設定は出来ない
- default-storage-engine
デフォルトストレージエンジンの設定
設定しない場合MyISAM
- transaction-isolation
トランザクション分離レベルの設定
InnoDBの場合デフォルトでREPEATABLE-READとなっている
速度重視でトランザクション内の読み込みの一貫性を必要としない場合はこちらの方が早い。
※後でベンチとります
- log-bin
バイナリログ名
- binlog-format
READ-COMMITTEDの場合STATEMENTだとエラーが出るのでmixedにする
エラーはこんな感じ
Binary logging not possible. Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'
- innodb_buffer_pool_size
DB単体でサーバ立ててる場合物理メモリ数の3/4を割り当てる。
そうでない場合は少なめで2割程度?
参照
- ログについて
http://ftp.ku.ac.th/pub/mirror/mysql/doc/refman/5.1/ja/log-files.html
ログは開発時、またはサービスの開始初期等に出力するようにし
ローテートさせるのがいいと思う。
[20100630]追記
binlog-format = ROW
に変更。
理由はこの辺。
http://dev.mysql.com/doc/refman/5.1/ja/replication-sbr-rbr.html
あとこの辺も変更した。
innodb_support_xa = 0
innodb_flush_log_at_trx_commit = 0
innodb_flush_method = O_DIRECT
skip-innodb_doublewrite
ACIDでなくてもいいならこれで。
binlog-format = ROWにした事以外は激速。