移行理由
小さいインスタンス上で 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.28 | 5系のできるだけ大きいもの | |
テンプレート | 無料利用枠 | ||
接続 | 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 ファイルなどはしっかり消しておくこと。