share facebook facebook2 twitter menu hatena pocket slack

2016.02.29 MON

AMIMOTOなWordPressのDBをAuroraにする

WRITTEN BY齊藤 愼仁

amimoto-elastic001

シンジです。ロードバランスすだちくんといいながら、全くもってElasticな構成じゃ無いブログなすだちくんです。ということで、今回はその第一弾として、既存AMIMOTO-AMIで稼働中のWordPressのデータベースを、Amazon RDSしかもAuroraに持って行きます。タイミング次第ですが稼働中にそのままいけるので、特にダウンは発生しません。

正直このブログでAuroraはオーバースペックですが

こまけぇこたー気にすんなってことよ!

手順概要

  • AWSでAurora作る
  • セキュリティグループ設定してEC2とAuroraと疎通させてやる
  • 既存のMySQLのデータをエクスポートする
  • そのデータをAuroraにぶち込む
  • WordPress側のMySQL、向け先をAuroraに変えてやる
  • AMIMOTO的MySQL死んでも蘇る設定を殺す
  • MySQLさようなら

Aurora作る

AWSマネジメントコンソールで、RDSの画面からAuroraを選択します。

amimoto-elastic002

DB 詳細の設定は、全部入力します。後からこの辺りの項目は使うので、控えておくか覚えておきます。

amimoto-elastic003

下の項目は結構重要です。
VPCはWordPressが動いているEC2と同じVPCにしましょう。パブリックアクセスも不可能にしておいた方が、セキュリティ的に無難です。というか良いです。セキュリティグループは、既存のものにくっつけてもいいですし、新しく作ってからEC2に割り当ててもOK。どちらにしてもあとでEC2側のセキュリティグループをいじります。DBクラスター識別子は無くてもOKですが、データベースの名前は後でいろいろ使うので、分かりやすい名前にしておくと良いです。

amimoto-elastic004

セキュリティグループを設定しよう

既存のEC2と「ローカル通信」しますので、アウトバウンドの項目に、EIPとかパブリックなIPアドレスではなく、EC2のローカルIPアドレスで、3306を追加してやります。もしくは、新規でセキュリティグループを作成して、そこに紐付けてあげてもいいです。とにかく、ローカルIPアドレスを空けてやらないとダメです。

そうすると「承認済」になる

これで完成。割と簡単。

amimoto-elastic005

既存の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を使うところをやりたいと思います。

元記事はこちら

AMIMOTOなWordPressのDBをAuroraにする

齊藤 愼仁

cloudpack 社内インフラ担当、情報セキュリティ責任者。HPCを経て現職に至る。無類の猫好きで、すだち君という名の猫を飼っている。