Ubuntu上でMySQLデータをtmpfs上に配置する
テストが増えてRspecフル実行が10分以上かかる。何とかしたい。
→MySQLデータメモリ上に置いて速くすれば良いんじゃね?
ということで、MySQLのデータファイルをtmpfsに置くことで速度向上を計ってみた。
前提
- Ubuntu11.10
- MySQL5.1
手順
tmpfsのマウント
sudo mount -t tmpfs -o size=512m tmpfs /mnt/mysql_tmpfs/
MySQLデータのバックアップ
sudo service mysql stop sudo mv /var/lib/mysql /var/lib/mysql_backup
MySQLデータをコピー&シンボリックリンク作成
sudo mkdir /mnt/mysql_tmpfs/mysql sudo cp -rf /var/lib/mysql_backup/* /mnt/mysql_tmpfs/mysql sudo ln -s /mnt/mysql_tmpfs/mysql /var/lib/mysql
AppArmor設定
このままMySQLを起動したところ起動しないので、/var/log/mysql/error.logを見たところ「Plugin 'FEDERATED' is disabled.〜」とか言われている。
これはAppArmorにより許可されていない場所にデータが配置されているためであり、以下のように該当フォルダの許可設定を追加する必要がある。
sudo vi /etc/apparmor.d/usr.sbin.mysqld
# 追加 /mnt/mysql_tmpfs/mysql/ r, /mnt/mysql_tmpfs/mysql/** rwk,
MySQL起動
sudo service mysql start