Amazon Elastic Block Store(EBS)でmysqlを動かしてみたよ
Good job, Amazonということで、実際にやってみました。
詳しくは
http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1663&categoryID=100
を参照していただければと思いますが、日本語の方が良いという方はこちらをご参考までに。
$で始まるコマンドはクライアントのterminalから。
#で始まるコマンドはECサーバーで実行。
とりあえず、テスト目的なので、ゼロからEC2インスタンスを作るところからやっています。
インスタンス起動とポート確認
とりあえず、僕自身は一番centosが慣れているのですが、Amazonオフィシャルのイメージにcentosが無いので、rightscaleが提供しているイメージを使うことに。
詳しくは
http://vividtone.seesaa.net/article/97841106.html
を参照の上、自分に最適なイメージを使ってください。
僕の場合は、ami-5c08ed35を使いました。
$ ec2-describe-images -x all | grep rightscale
$ ec2-run-instances ami-5c08ed35 -k mymachine
$ ec2-authorize default -p 22
$ ec2-describe-instances
inctance idをメモる。i-xxxxxxと書きます。
zoneもメモる。us-east-1bみたいなもの。
EBS volumeを作ってattachする
$ ec2-create-volume -z us-east-1b -s 1
us-east-1bの部分はEC2が起動しているzoneを指定した方がいいかと。
最後の1は1GB分のvolumeを作るという意味です。
vol idをメモる。vol-xxxxxxと書きます。
$ ec2-describe-volumes vol-xxxxxx
$ ec2-attach-volume -d /dev/sdh -i i-xxxxxx vol-xxxxxx
マウントする
# mkfs.xfs /dev/sdh
# echo "/dev/sdh /vol xfs noatime 0 0" >> /etc/fstab
# mkdir /vol
# mount /vol
mysqlのデータを移動して、設定ファイルを書き換えてコピー
mysqlが動いている場合はmysqlを一旦止めて、mysqlのdatadirを全部/vol/log/mysql/にコピー。
# /etc/init.d/mysqld stop
# mkdir /vol/log /vol/log/mysql
# mv /var/lib/mysql/* /vol/log/mysql
設定ファイルを書き換え。
以下の2行は本当に最小限度のものであって、bin-logとかslow-query-logとかは同じ感じで書き換えてください。
# vi /etc/my.cnf
- -
再起動して、DBが作れることを確認。
# /etc/init.d/mysqld start
# mysql -p -e 'CREATE DATABASE tutorial_sample'
# mysql -p -e 'SHOW DATABASES'
EBS volumeをdelete(作ったままだとお金かかっちゃうから)
# /etc/init.d/mysqld stop
# umount /vol
$ ec2-detach-volume vol-xxxxxx
$ ec2-delete-volume vol-xxxxxx
EC2インスタンスをdelete
$ ec2-terminate-instances i-xxxxxx
確認
$ ec2-describe-instances
$ ec2-describe-volumes