2013-07-16 22:20:31
正確に云えば、このインスタンスもEBSベースなので、そもそも全部EBSなのだが、別のEBSに移すということである。ここでは、/mnt/volとしてマウントした別のEBSにMySQLのデータ・ディレクトリを移すことを考える。データのみである。Logとか、設定とかはそのままである。
話は簡単で、/var/lib/mysqlを/mnt/vol/mysqlに移せばよい。所有権の設定なども変えないために、cp -a か何かでコピーする。そして、/etc/mysql/my.cnのデータの場所を書き換える。
datadir = /var/lib/mysql ↓ datadir = /mnt/vol/mysqlとして、sudo service mysql restartとするだけでいいはず。ところが、エラーが出てしまう。/var/log/mysql/error.log を見てみると、ibdata1に対する権限がないという。どういうことだ? どうやら、設定を書き換えるのがmy.cnfだけでは足りないらしい。/etc/apparmor.d/usr.sbin.mysqld も書き換えなくてはならないのだ。
/var/lib/mysql/ r, /var/lib/mysql/** rwk, ↓ /mnt/vol/mysql/ r, /mnt/vol/mysql/** rwk,とするのだ。そして、sudo service mysql start としてやれば、正常に動き出す。まあ、少なくとも私の場合は。やれやれ。
この貴重な情報は、Twiwt:Blog 「EC2 で MySQL のデータの保存先を EBS ボリューム(/mnt)に変更する」で知った。