MySQLをインストールした後に設定する項目
自分がMySQLをインストールしたあとに行う設定を備忘録がてら書いてみます。サーバのスペックによって若干変動するところもありますが、チューニングする項目というのは大体こんなもんでしょう。
user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp language = /usr/share/mysql/english skip-external-locking # ここまではわりとお決まりの設定。環境によってファイルのパスは適宜変えます。 # サーバ側で使用する文字コードの設定 default-character-set = utf8 # クライアント/サーバ側での文字コード変換を行わない skip-character-set-client-handshake # CREATE TABLE する際に ENGINE=InnoDB の指定をしなくてもInnoDBにする default-table-type = InnoDB # クライアント/サーバがやり取りすることのできるパケットサイズを指定 # 巨大なデータをやり取りする場合は指定した方がよい max_allowed_packet = 16M # MyISAMで使用するINDEXのキャッシュサイズ key_buffer = 64M # スレッドのスタック領域のサイズ thread_stack = 128K # 生成されたコネクション用のスレッドをキャッシュしておく数 thread_cache_size = 16 # 最大同時接続数。メモリ搭載量にもよるが100〜300ぐらいが良いらしい max_connections = 150 # MyISAMで一度開いたテーブルをキャッシュしておく数 table_cache = 128 # 同時に実行できるスレッド数。CPUのコア数の2倍を設定 thread_concurrency = 2 # query cacheの設定 # 0: OFF, 1:ON, 2:DEMAND query_cache_type = 1 # キャッシュするクエリ結果の最大サイズ query_cache_limit = 1M # クエリキャッシュに割り当てるメモリ量 query_cache_size = 16M # slow logの設定 log_slow_queries = /var/log/mysql/mysql-slow.log # 3秒以上かかったクエリは上記ログファイルに出力 long_query_time = 3 # ここからレプリケーションの設定 # MySQLサーバごとに固有のID server-id = 1 # バイナリログ出力先 log_bin = /var/log/mysql/mysql-bin.log # データ書き込み(トランザクションのコミット)を何回行ったらバイナリログを # フラッシュするかの回数。0の場合はデータ書き込みがあってもバイナリログをフラッシュしない sync_binlog = 0 # バイナリログを保持しておく日数 expire_logs_days = 60 # バイナリログの1ファイルあたりの最大サイズ max_binlog_size = 1024M # バイナリログを出力する対象のDB binlog_do_db = hoge # バイナリログの出力対象外とするDB binlog_ignore_db = mysql information_schema # Berkley DBは使わない skip-bdb # InnoDBのデータファイルの名前とどのぐらいで自動拡張するか innodb_data_file_path = ibdata1:128M:autoextend # テーブルごとに.ibdのデータファイルを作成するかどうか innodb_file_per_table = 1 # InnoDBの内部データなどを保持するための領域 innodb_additional_mem_pool_size = 20M # InnoDBのデータやインデックスをキャッシュするためのメモリ上の領域 # DBサーバ専用のマシンの場合はメモリの50%-80%を指定 innodb_buffer_pool_size = 256M # InnoDBの更新ログを記録するメモリ上の領域 innodb_log_buffer_size = 8M # InnoDBの更新ログを記録するディスク上のファイルのサイズ # 大きくするとパフォーマンスはあがるがクラッシュ時のリカバリに時間がかかるようになる innodb_log_file_size = 64M # データをファイルに書き込む際のメソッド。 # Linuxの場合は O_DIRECTがパフォーマンス的にはよい innodb_flush_method = O_DIRECT # InnoDBのログバッファをInnoDBログファイルに書き込むタイミングを決める # 基本的には1 innodb_flush_log_at_trx_commit = 1 # 2相コミットを行うかどうか innodb_support_xa = OFF # クラッシュ対策としてデータの二重書き込みを無効にする skip-innodb_doublewrite
innodb_で始まるInnoDB関連の設定項目の詳細についてはMySQL5開拓団 ストレージエンジンの吟味 (2)にとても詳しく載っているので一読してみた方がよいです。あとはDSAS開発者の部屋:5分でできる、MySQLのメモリ関係のチューニング!も非常に参考になるでしょう。MySQLの設定はなかなか奥が深いですが、設定項目の意味を理解していればよいパフォーマンスを引き出せると思います。
こちらもあわせてどうぞ
コメント