タイトルが長いですが,そのままの内容.Ubuntu 10.04のMySQL環境において,MySQLのdata_dir(/var/lib/mysql)を別diskに移したいと思い,以下の手順で作業を行った.
- MySQLを止める: # service mysql stop
- MySQLのdata_dirを新パーティションにコピー: # cp -rp /var/lib/mysql /mnt/fasterdisk/mysql
- 元のMySQLデータディレクトリをリネーム: # mv /var/lib/mysql /var/lib/mysql.old
- /var/lib/mysqlからコピーしたパーティションへシンボリックリンク: # ln -s /mnt/fasterdisk/mysql /var/lib/mysql
- MySQLを起動: # service mysql start
- 起動しない\(^o^)/
このときのエラーメッセージ(/var/log/mysql/error.log)の内容は以下の通り.
111124 15:25:46 [Note] Plugin 'FEDERATED' is disabled.
^G/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
111124 15:25:46 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
111124 15:25:46 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.
plugin.frmが無いとか色々言っているが,結局原因はapparmorだったので,最終的には/etc/apparmor.d/usr.sbin.mysqlに以下の行を追加したら動いた.ちなみに「mysql_upgradeしてね」的なメッセージが出ているが,そもそもMySQLdが正常に起動できていないのでmysql_upgradeできない.
/mnt/fasterhdd/mysql/ r,
/mnt/fasterhdd/mysql/** rwk,
参考: http://serverfault.com/questions/168957/changing-mysql-data-directory-in-ubuntu-server-10-04
この手の問題はRedhat系ディストリビューションではSELinuxで良く発生していたが,Debian系のディストリでもあるんだなあ.ということで.