DBの速度がネックで問題が生じているんだけどもはやチューニングで何とかならないレベルになったので
DBのデータ領域をSSDに移してみた。
単にコピーして動くという記憶だったんだけどエラーが出てはまったので備忘録です。
環境は下記の通り
Ubuntu 12.04.2 LTS
MySQL 5.5.31
まずはMySQLを停止してファイルをがっつりコピーします。(ssdは/mnt/ssdにマウントしていると仮定。)
# sudo service mysql stop
# cp -rp /var/lib/mysql /mnt/ssd/path/mysql
my.cnfでdatadirを変更して起動すると失敗して悲しいです。
# vim /etc/mysql/my.cnf
#datadir = /var/lib/mysql
datadir = /mnt/ssd/path/mysql
# sudo service mysql start
failed
# sudo tail /var/log/mysql/error.log -f
130605 15:29:01 [Note] Plugin 'FEDERATED' is disabled.
^G/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
130605 15:29:01 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
130605 15:29:01 InnoDB: The InnoDB memory heap is disabled
130605 15:29:01 InnoDB: Mutexes and rw_locks use GCC atomic builtins
130605 15:29:01 InnoDB: Compressed tables use zlib 1.2.3.4
130605 15:29:01 InnoDB: Initializing buffer pool, size = 128.0M
130605 15:29:01 InnoDB: Completed initialization of buffer pool
130605 15:29:01 InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
原因は下記でした。
MySQLのdata_dirをシンボリックリンクに変更したらplugin.frmが無いと言われて起動できなくなる問題の対処方法 | TechRacho
下記のように設定を追加してMySQLを起動します。
# vim /etc/apparmor.d/usr.sbin.mysqld
/mnt/ssd/path/mysql/ r,
/mnt/ssd/path/mysql/** rwk,
# sudo service mysql start
無事起動!
※この挙動はselinuxだ!とおもってselinuxの情報をいろいろ調べたんですけど
Ubuntuだと強制アクセス制御にAppArmorというのを使っているんですね。勉強になりました。
Popular Posts:
- None Found