MySQL5.5 インストールと初期設定

CentOS/RHELに MySQL5.5 を yum でインストールする方法と、いつもやる最低限の初期設定を書きます。

■ MySQL5.5インストール (yum配布版rpm)

yum で rpmパッケージをインストールするには標準のリポジトリでなく remi を使います。
(2012/9月現在では標準のリポジトリでは配布されていません)

remi リポジトリをまだ入れていない場合は入れておきます。

# cd /etc/yum.repos.d
# wget http://rpms.famillecollet.com/enterprise/remi.repo

(1) インストール

# yum --enablerepo=remi -y install mysql-server

(2) ファイル構成

/usr/bin/mysql*         ... プログラム諸々
/etc/my.cnf             ... 設定ファイル
/usr/share/mysql        ... 設定ファイルの雛形など
/var/lib/mysql          ... データベースが配置される
/var/lib/mysql/mysql.sock ... ソケットファイル
/var/log/mysqld.log     ... ログ
/var/lock/subsys/mysqld    ... 実行中のロックファイル
/var/run/mysqld/mysqld.pid ... 実行中のPIDファイル
/etc/init.d/mysqld      ... サービス起動シェル


この中で重要なのは設定ファイルの /etc/my.cnf くらい。
あとは変更しないので気にしなくてよい。

(3) 設定

/etc/my.cnf


[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1

# まず文字エンコードのデフォルト設定
# 今時、utf8 以外ありえない

# 5.5では不要(書くとエラー)
#default-character-set = utf8

# 5.0以降のサーバー文字コード
character-set-server = utf8

# ここから、いつもの最低限のチューニング =============
# サーバーのスペックや状況によって多少変える

# MySQLクライアントの同時接続最大数
max_connections=100

# スレッドの作成・削除は負荷重いのでキャッシュ必要
thread_cache_size=20

# テーブルキャッシュ。I/O減らすのに有効
table_open_cache=1024

# MyISAMインデックスをバッファに保存するサイズ
key_buffer_size=32M

# メモリ内に生成されるテンポラリテーブルのサイズ
# max_heap_table_size とセットで考える
tmp_table_size=64M
max_heap_table_size=64M

# InnnoDBのバッファのプールサイズ
# よく多めにと言われるけどhttpdも動いているなら慎重に
innodb_buffer_pool_size=256M

# ログファイルのサイズ。増やすとパフォーマンスアップ
# これも多めにと言われるけど大きすぎると障害時復旧が大変
innodb_log_file_size=64M

# テーブルごとにファイルを分ける。鉄板。
innodb_file_per_table

# タイムアウト値を設定しないとデフォルトは8時間だから
wait_timeout=240

# ここまで、いつもの最低限のチューニング =============

# 5.5では不要
#[mysql]
#default-character-set = utf8

# 5.0以降のクライアント設定
[client]
default-character-set = utf8

MySQLを再起動

# /etc/rc.d/init.d/mysqld start

(4) 運用中のMySQLの設定ファイルを変更したときの注意

innodb_buffer_pool_size
innodb_log_file_size
あたりを変更したときは、

MySQLを停止
#/etc/rc.d/init.d/mysqld stop

トランザクションログファイルを削除して
# rm -rf /var/lib/mysql/ib_logfile0
# rm -rf /var/lib/mysql/ib_logfile1
# ls -l /var/lib/mysql

MySQLを再起動
# /etc/rc.d/init.d/mysqld start

コメントを残す