お世話になっております、鈴木と申します。
今回はEC2で運用しているWordpressのデータベースをRDSのMySQLへ移行する手順について解説していきます。
目次
- 前提
- 構成図
- 手順
- 終わりに
1.前提
EC2上でBitnamiを用いてセットアップしたWordpressを運用しており、そのEC2上にある(今回はMariaDB)をRDS for MySQLに移行する方法についての手順説明になります。
また今回はイミュータブルデプロイ形式で移行しましたので、予めご了承ください。
2.構成図
3.手順
3-1.手順概要
構成図に従いざっくりとした手順は以下のようになります。
- 旧VPCのALBにてメンテナンスページへ誘導するようにリスナールールを設定 ※必要に応じて
- 旧VPCのEC2を停止してAMIを取得し、新VPCでAMIよりEC2を構築
- 新ALBのターゲットグループでEC2を登録
- MariaDBのダンプを作成してEC2→RDSへデータを移行する。
- 設定ファイルの編集(wp-config・ctlscript)
- MariaDBの中身を削除
- Route53にてAレコードのエイリアスで新ALBを指定
上記の手順となります。
今回は4~6についてのEC2上での手順について解説します。
3-2.コード
上記でいうと4~6の部分となります。
RDSへログインしてデータベースを作成
# RDSへログイン
mysql -h <RDSのエンドポイント> -P 3306 -u <ユーザー名> -p
# RDS上の操作
CREATE DATABASE <作成したいDB名>;
MariaDBのダンプを作成してRDSへ出力する
# localDb→EC2
mysqldump -u root -p <移行元DB名> > <移行先>.sql
# EC2→RDS
mysql -h <RDSのエンドポイント> -P 3306 -u root -p <移行先DB名> < <上記で作成したダンプ>.sql
wp-configファイルの編集
wp-configファイルは環境によってディレクトリが異なる場合がありますので、事前に確認の上編集するようにしましょう。
下記のようにDBリソースをRDSへ変更します。
/** Database hostname */
define( 'DB_HOST', 'RDSのエンドポイント' );
ctlscriptの編集
当方の環境ではBitnamiスタックで提供されるコントロールスクリプトで、Apache、PHP-FPM、MySQLなどのサービスを管理していたためDBの記述を消す必要があります。
下記はそのファイルの一部分になります。
編集前
get_status_from_gonit() {
gonit summary $1 | awk '
BEGIN { IGNORECASE=1 }
/Process/ {
printf $2 " "
if ( $NF == "Running" ) {
print "already running"
}
else {
print "not running"
}
}
'
}
編集後
get_status_from_gonit() {
gonit summary $1 | awk '
BEGIN { IGNORECASE=1 }
/Process/ {
if ($2 != "mariadb") {
printf $2 " "
if ( $NF == "Running" ) {
print "already running"
}
else {
print "not running"
}
}
}
'
}
MariaDBの中身を削除
ダンプで出力したデータベースを削除します。
# Mariadbへログイン
mysql -u <ユーザー名> -p
# DBを削除
DROP DATABASE <データベース名>;
上記を実施出来たらRoute53のAレコードを編集して完了です。
4.最後に
手順自体はそんなに多くありませんが、あらかじめテストの実施、またバックアップを取得して実施しましょう。