MYSQLのtempファイルをメモリー上に作成してMYSQLの高速化を行う

STEP1: マウントポイントの作成

[root@colinux ~]# mkdir /usr/local/tmp

STEP2: マウントポイントを起動時にマウントするように/etc/fstabを編集

tempfs1

STEP3:マウント処理

mount -aでマウントしたが、認識されなかったので今回は再起動した。
/var/tmpの方が良いのかな?
tempfs-2

STEP4: 書き込みテストと使用率の確認

tempfs-3

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)

tempfs-4

オプションファイルの変更 (/etc/my.cnf)

# tmpdir
tmpdir=/usr/local/tmp

tempfs-5

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)

tempfs-6

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日目

Comments are closed.

Post Navigation