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みたいなもの。

sshで接続

$ ssh -i mymachine.id root@ec2-xx-xxx-xxx-xx.compute-1.amazonaws.com

install系

とりあえずmysqlファイルシステムを作るためにxfsも。
本当ならソースからちゃんと入れるんですが、面倒なのでyumで逃げる。あくまでテスト目的。

# yum -y install mysql-server
# yum -y install xfsprogs

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

              • -

old: datadir=/var/lib/mysql
new: datadir=/vol/lib/mysql

再起動して、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

テストにかかった費用

以下の通り、25セント。途中でタバコすったりいろいろパラレルで作業してたりしたから、ec2が2時間つかってることになっていたり、ムダが多いので実際はもっと安くなるかと。