AWS EC2 WordPress Nginx 環境のRDS移行記録

移行理由

小さいインスタンス上で mysql も含めて稼働させていたが、mysql のプロセスがそれなりにリソースを食ってしまう状態だったので、分離して管理したほうが良いだろうというのがまず1点

# メモリ使用順にプロセスを並べてみると mysql が最初にきた
$ ps aux | sort -n -k 6 -r | head -n 1
 mysql     3917  0.0  5.5 747868 56248 ?        Sl   Feb03   0:30 /usr/libexec/mysql55/mysqld *****

また、冗長構成を検討したとき、インスタンス内にDBを持ってしまうとインスタンスの数だけDBも必要となり、しかもそれぞれを同期させなくてはならない。運用の手間もかかりやすくなってしまうので、DBをWordPressのインスタンスと分離して管理することで冗長化しやすく、それでいて運用コストも上がりにくい状態にする

RDS によるデータベース作成

AWS のサービスよりRDSを選び、データベースの作成を実施する。基本的にはMySQL5系の最新版を使用する感じで設定。設定内容の中で気にするところは今回はネットワークの設定

以下の設定項目は主要なところだけ抜粋したもの

大項目小項目設定内容備考
データベース作成方法を選択 標準作成
エンジンのオプションエンジンのタイプMySQL
エディションMySQL Community
バージョンMySQL5.7.285系のできるだけ大きいもの
テンプレート無料利用枠
接続Virtual Private Cloud (VPC) 既存Webサーバインスタンスと同じVPCを選ぶ
セキュリティグループ新規に作成Webサーバインスタンスと分けて管理し今後の冗長構成などに備える
DB(or ストレージ)最初のデータベースwordpress既存のものと同じ名前のDBを用意

セキュリティグループの設定修正

セキュリティグループの設定は、DBに設定したものはインバウンド/アウトバウンドともに 3306ポートを Webサーバインスタンスに設定されているセキュリティグループに許可する形で設定する。それ以外の接続は不要

また、Webサーバインスタンス側に設定されているセキュリティグループに対して、インバウンドのところに 3306ポートをDBのセキュリティグループに対して許可してあげる設定にする

サービスの停止

移行作業中に更新が走らないように php-fpm, nginx のプロセスを止める

$ sudo service nginx stop
 Stopping nginx:                                            [  OK  ]
$ sudo service php-fpm stop
 Stopping php-fpm-7.3:                                      [  OK  ]

DB 移行

ローカルのmysqlからデータを dump

$ mysqldump -u *** wordpress > mysqldump_wordpress.sql

RDSで用意したDBにつっこむ

mysql -h <DBのエンドポイント> -u *** wordpress < mysqldump_wordpress.sql

show tables などでテーブルが入った状態になっていることを確認しておく

wp-config.php 中のDBに関する以下の設定を新しいものに修正する

define('DB_NAME', 'wordperss');
define('DB_USER', '***');
define('DB_PASSWORD', '***');
define('DB_HOST', '***');

ローカルで動いているmysqlを停止する

$ sudo service mysqld stop
 Stopping mysqld:                                           [  OK  ]

サービス再開

php-fpm, nginx を再開させ、サイトが正常に動作するかどうかを確認する

$ sudo service php-fpm restart
 Stopping php-fpm-7.3:                                      [FAILED]
 Starting php-fpm-7.3:                                      [  OK  ]
$ sudo service nginx restart
 Stopping nginx:                                            [FAILED]
 Starting nginx:                                            [  OK  ]

自分の場合は以上の操作で問題なく動作した。

この状態でメモリを確認し、mysql に使うメモリについては削除されたことを確認

$ ps aux | sort -n -k 6 -r | head -n 10
 apache   10475  0.4  6.3 475792 64288 ?        S    00:10   0:01 php-fpm: pool www
 apache   10479  0.3  5.2 465596 52868 ?        S    00:11   0:01 php-fpm: pool www

メモリの全体の利用料については大きな変動はなしサイトを開いた状態だと大体7割ほどは常に使う状態になる

$ free -m
              total       used       free     shared    buffers     cached
 Mem:           985        711        274          0         95        414
 -/+ buffers/cache:        201        784
 Swap:            0          0          0

移行が済んだら途中で作成した dump ファイルなどはしっかり消しておくこと。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です