Amazon RDSへWordPressのDBを移行する方法

with コメントはまだありません

EC2でアプリケーションを動かしていて、ある程度規模が大きくなってきたのでデータベースを別サーバーに分けたいとなる時がある。抜かりないAmazonはRDSでこれに応えてくれる。このサービスを使えばデータベースを分離できる上、データベースだけスケールさせるといったことも可能になる。また、RDSコンソール上からデータベースのパラメーターをいじったりなんてことも出来るため、管理性も向上する。

今回は、WordPressのデータベースをRDSへ分離するという作業をサンプルに、RDSの立ちあげ方、使用方法、RDSへのデータベース移行、WordPressからRDSへの接続方法を解説する。

 

DB Security Groupの作成

まずはRDSで展開するデータベースのセキュリティ設定から。EC2などと同じく、セキュリティはセキュリティで別個に用意し、RDSのインスタンスへ紐付けるという流れだ。

 

VPCダッシュボードへのアクセス

https://console.aws.amazon.com/vpc

ここからAWSのVPCダッシュボードへアクセスし、リージョンを選ぼう。

 

セキュリティグループ一覧へアクセス

ダッシュボードが表示されたら、セキュリティグループの一覧画面へアクセスしよう。

select-security-group-of-vpc.png.formatted

 

セキュリティグループの作成

セキュリティグループの一覧が表示されるから、上方の『セキュリティグループの作成』をクリックする。

create-security-group.png.formatted

 

セキュリティグループ名ほかの設定

セキュリティグループのネームタグやグループ名、グループの説明、グループを作成するVPCを設定するウィンドウが表示されるから入力しよう。

入力を終えて『作成』をクリックするとセキュリティグループが作成される。

 

外部からアクセスできるようにする。

セキュリティグループにひも付けたインスタンス(今回ならRDSインスタンス)にアクセスできるよう、インバウンドルールを設定する。古き良き時代に流行った『ポート開放』ってやつですな。

作成されたグループを選択し、下方にあるタブの『インバウンドルール』を選び、ルールを1つ追加し、タイプを『カスタム TCP ルール』、ポート範囲を『3306』、送信元(RDSインスタンスに対して接続元)のCIDR値(IPアドレス範囲)を入力しよう。EC2からアクセスするならEC2で使っているセキュリティグループの名前を送信元に入力してもいい。

今回はEC2インスタンスに作成したWordPressからRDSへ接続するため、セキュリティグループの名前を設定した。

 

起動せよ!RDS!

RDSインスタンスへ紐付けるセキュリティグループが出来たので、いよいよRDSを使っていこう。

RDSダッシュボードへアクセス

https://console.aws.amazon.com/rds/

まずはここからRDSダッシュボードへアクセスし、リージョンを選ぶ。

 

DBインスタンスの起動

左ペインから『インスタンス』を選び、次いで『DBインスタンスの起動』を選ぶ。

select-instances.png.formatted

 

データベースエンジンの選択

はじめにデータベースエンジンを選ぶ。今回はMySQLを選んだ。

select-db.png.formatted

 

プランの選択

RDSでMySQLを使う上でのプランを選ぶ。

select-mysql-plan.png.formatted

一年間の無料プラン(画像右)も用意されているから、お試しで使ってみたい人はこのプランから始めるといいだろう。

 

データベースの詳細設定

ここからはデータベースの詳細を設定していく。各設定について詳しくはこちら DB Setting Table

ここで設定する『Master Username』と『Master Password』は後ほど使うためメモっておこう。※WordPressからデータベースへの接続設定をする際にデータベースのユーザー名とパスワードとして使う。

 

インスタンスの詳細設定

次にインスタンス自体の設定を行う。

『DB Security Goups』には先程作ったセキュリティグループを選び、『Database Name』を入力し(後ほど使うのでこれもメモ)、『Database Port』にはセキュリティグループ作成の時に指定した3306を入れる。その他の設定はお好みで。各項目について詳しくはこちら RDS Instance Setting Table

 

インスタンスの起動を確認する

インスタンスの詳細設定が終わったらお疲れ様。インスタンスを起動しよう。首尾よく起動できていればインスタンス一覧画面で確認できる。

show-rds-instance.png.formatted

数分はステータスが『作成中』のままだから、これが『利用可能』になるまではコーヒーでも淹れて待とう。

 

データベースの移行

インスタンスが利用可能になったら、データベースを移行していこう。

データベースのエンドポイントの確認

一旦RDSインスタンスの一覧画面へ戻り、作成したインスタンスを選択しよう。画面中ほどにエンドポイントが表示されるからこれをメモしよう。※DBインスタンス名にリージョン名やポート番号などが付いたもの

 

データベースのバックアップ

まずは現行のデータベースのバックアップをダウンロードする。方法は色々あるけれど、ここではsqlファイルを使うため、WordPressにBackWPupなるプラグインをインストールし、sqlファイルをダウンロードする。

BackWPup

 

データベース適用の流れ

sqlファイルの新しいデータベースへの適用は次の2ステップで行う。

  1. RDSインスタンスのMySQLへリモート接続
  2. sqlファイルを送って現行データベースのテーブルを生成する

手順1の接続元はデータベースのセキュリティグループのインバウンドルールで設定した『送信元』だ。

EC2インスタンスで接続する場合、インバウンドルールに設定したセキュリティグループに紐付いたEC2インスタンスなら何でもいい。

 

EC2インスタンスの作成

今回はEC2インスタンスを使ってデータベースを移行する。

インバウンドルールで設定したセキュリティグループを持つEC2インスタンスを作成しよう。

 

EC2インスタンスへのアップロード

今回はEC2インスタンスを使ってリモート接続するため、まずはsqlファイルをインスタンスへアップロードする。

コンソールを開き、次のコマンドを叩こう。(Mac環境)

 

EC2からRDSへリモート接続

アップロードがうまくいったらEC2インスタンスへ接続し、sqlファイルのあるディレクトリへ移動する。

次のコマンドでリモート接続を行う。

 

テーブルの復元

リモート接続できたらデータベースを選択するために次のコマンドを打とう。

 

sqlファイルを適用する。

 

SOURCEコマンドが終わったらSHOW TABLES; を実行してテーブルが再現されたかを確認しておこう。

 

データベースの繋ぎ変え

WordPressが動いているサーバー上のwp-config.phpにあるデータベースの接続情報を書き換える。

wp-config.phpを開き、関係する項目の値を次のように書き換えよう。

  • DB_NAME : RDSインスタンス作成時に設定したデータベース名
  • DB_USER : RDSインスタンス作成時に設定したMaster Username
  • DB_PASSWORD : RDSインスタンス作成時に設定したMaster Password
  • DB_HOST : データベースのエンドポイント

 

ここまで終わったらWordPressサイトへアクセスしてちゃんと動いているかを確認しよう。お疲れさまでした。

 

手を動かして学ぶAWS入門本