MYSQLのtempファイルをメモリー上に作成してMYSQLの高速化を行う
STEP1: マウントポイントの作成
[root@colinux ~]# mkdir /usr/local/tmp
STEP2: マウントポイントを起動時にマウントするように/etc/fstabを編集
STEP3:マウント処理
mount -aでマウントしたが、認識されなかったので今回は再起動した。
/var/tmpの方が良いのかな?
STEP4: 書き込みテストと使用率の確認
STEP5: mysqlのオプションファイルの変更 (my.cnf)
既存設定の確認
mysql> show variables like '%tmp%'; +-------------------+----------+ | Variable_name | Value | +-------------------+----------+ | max_tmp_tables | 32 | | slave_load_tmpdir | /tmp | | tmp_table_size | 16777216 | | tmpdir | /tmp | +-------------------+----------+ 4 rows in set (0.01 sec)
オプションファイルの変更 (/etc/my.cnf)
# tmpdir
tmpdir=/usr/local/tmp
MYSQLの再起動
[root@colinux tmp]# /etc/init.d/mysql.server restart
Shutting down MySQL. SUCCESS!
Starting MySQL.. SUCCESS!
[root@colinux tmp]#
設定が反映された事を確認。
mysql> show variables like '%tmp%'; +-------------------+----------------+ | Variable_name | Value | +-------------------+----------------+ | max_tmp_tables | 32 | | slave_load_tmpdir | /usr/local/tmp | | tmp_table_size | 16777216 | | tmpdir | /usr/local/tmp | +-------------------+----------------+ 4 rows in set (0.02 sec)
STEP6:MYSQLの動作確認をして完了。
ReplicationなどのSlaveの場合は以下の設定を忘れずに変更しておくと良い。
slave_load_tmpdir
Extra useful hint from Harrison: if you are using replication, you will also want
slave_load_tmpdir=/tmp on your slave (real disk which survives a restart).
The issue is that with statement based binary logging, there are many
events which create a file for a replicated LOAD DATA INFILE. If you stop
your server after some of these events have occurred, but not all,
it will break after you restart.
-
参考サイト
MySQL tmpdir on tmpfs
tmpfs は本当に容量が動的なのか
Linux のページキャッシュ
容量が動的に変化するRAMディスクを使うには
tmpfsにMySQLデータを移動する
/dev/shm に参照系DBを持っていくと I/O 負荷が激減した件
第6回:データベースの負荷分散とまとめ
YAPC::Asia Tokyo 2日目