シンジです。ロードバランスすだちくんといいながら、全くもってElasticな構成じゃ無いブログなすだちくんです。ということで、今回はその第一弾として、既存AMIMOTO-AMIで稼働中のWordPressのデータベースを、Amazon RDSしかもAuroraに持って行きます。タイミング次第ですが稼働中にそのままいけるので、特にダウンは発生しません。
正直このブログでAuroraはオーバースペックですが
こまけぇこたー気にすんなってことよ!
手順概要
- AWSでAurora作る
- セキュリティグループ設定してEC2とAuroraと疎通させてやる
- 既存のMySQLのデータをエクスポートする
- そのデータをAuroraにぶち込む
- WordPress側のMySQL、向け先をAuroraに変えてやる
- AMIMOTO的MySQL死んでも蘇る設定を殺す
- MySQLさようなら
Aurora作る
AWSマネジメントコンソールで、RDSの画面からAuroraを選択します。
DB 詳細の設定は、全部入力します。後からこの辺りの項目は使うので、控えておくか覚えておきます。
下の項目は結構重要です。
VPCはWordPressが動いているEC2と同じVPCにしましょう。パブリックアクセスも不可能にしておいた方が、セキュリティ的に無難です。というか良いです。セキュリティグループは、既存のものにくっつけてもいいですし、新しく作ってからEC2に割り当ててもOK。どちらにしてもあとでEC2側のセキュリティグループをいじります。DBクラスター識別子は無くてもOKですが、データベースの名前は後でいろいろ使うので、分かりやすい名前にしておくと良いです。
セキュリティグループを設定しよう
既存のEC2と「ローカル通信」しますので、アウトバウンドの項目に、EIPとかパブリックなIPアドレスではなく、EC2のローカルIPアドレスで、3306を追加してやります。もしくは、新規でセキュリティグループを作成して、そこに紐付けてあげてもいいです。とにかく、ローカルIPアドレスを空けてやらないとダメです。
そうすると「承認済」になる
これで完成。割と簡単。
既存のMySQLのデータをエクスポート
ここからはSSHログインして作業です。
既存のローカルMySQLのデータをエクスポートしてやります。
wp --path=/var/www/vhosts/インスタンスID/ db export
一瞬ですわ。
Auroraにぶちこめー
AWSマネジメントコンソールでAuroraのエンドポイントが確認出来るので(長いURLみたいなやつ)それを使います。
後はAuroraで作った時のユーザー名、パスワード、データベース名です。
mysql -h Auroraのエンドポイント名(ポートは要らないよん) -P 3306 -u データーベースユーザー名 -p データベース名 < dump.sql
一瞬ですわ。
WordPressを編集する
ローカルのMySQLを使ってますが、これをAuroraに向けてやります。
cd /var/www/vhosts/インスタンスID/ vi wp-config.php
ちょい下に編集点があります。
if ( !$db_data ) { $db_data = array( 'database' => 'Auroraのデータベース名', 'username' => 'Auroraのユーザー名', 'password' => 'Auroraのパスワード', 'host' => 'Auroraのエンドポイント(ポートは要らないよん)', ); }
これ保存して、普通にブログにアクセス出来ていれば、もうAurora使ってます。
既存のMySQLとおさらばする
monitというミドルウェアが、MySQLが死んでも自動で起動させようとします。なので、コイツをいったん止めてから、コイツのコンフィグを書き換えて、mySQLを止めた後に、改めてmonitを起動させます。
service monit stop mv /etc/monit.d/mysql /root/ service mysql stop chkconfig mysql off service monit start
OS再起動してもmysqlが起動してこないようにもしました。
というわけで簡単でした
RDSデビューだぜwww
次はELBを設定、https暗号化通信を維持するために証明書をぶち込んで、更にCloudfrontを使うところをやりたいと思います。