WordPressのDBをRDSに変えてみた

WordPressのDBをRDSに変えてみた

EC2の容量が一杯に!

エラーメッセージ出力

先日、あることをしたくてgoをインストールしていたところ、下記のようなメッセージが出力されました。

tar: go/pkg/tool/linux_amd64/buildid: Cannot write: No space left on device

スペースがない。正直、言ってもそんなに使っていないつもりでしたので正直驚きましたね。とはいえ、現在EC2はEBSの10GiBのみで動いていたのでいづれこの日はくると思ってました。

どのくらい容量使っているのか確認

全体のディスク容量を確認します。今回対象のEBSは/dev/xvda1です。

root@ip-999-99-99-999:/home/user1#  df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            488M     0  488M   0% /dev
tmpfs           100M  3.0M   97M   4% /run
/dev/xvda1      9.7G  9.7G     0 100% /
tmpfs           496M     0  496M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           496M     0  496M   0% /sys/fs/cgroup
tmpfs           100M     0  100M   0% /run/user/1002

100%ですね。この時は他に削除できるものがありましたので、削除して90%まで減らしました。
現在、いつなにもできなくなってしまうか不安で夜も眠れない状態で過ごしております。
(容量増やすとか考えていません。)

改造計画第一弾~DB外だし対応~

容量が少ない→容量を使用している犯人は誰だ→多分WordPressとなりました。(実際は別の犯人がいました。JupiterHubさん。今度捕まえに行くからな。)

WordPressが使用している容量

まずはどのディレクトリで多く使用しているか確認しました。
(/* の箇所で調べたいディレクトリーを指定し、容量が大きい順に並べる)

root@ip-10-0-1-10:/# sudo du -s /* | sort -nr
du: cannot access '/home/hoge/s3_jupternotebook': Permission denied
du: cannot access '/proc/5094/task/5094/fd/4': No such file or directory
du: cannot access '/proc/5094/task/5094/fdinfo/4': No such file or directory
du: cannot access '/proc/5094/fd/4': No such file or directory
du: cannot access '/proc/5094/fdinfo/4': No such file or directory
4873344 /opt
1871688 /home
1168968 /usr
650008  /mnt
279188  /var
94896   /lib
31232   /boot
(略)

optのの容量が大きいみたいでした。optの中にはWordPress、JupiterHubが入っています。

WordPressのデータ

WordPressは大きく分けて3つのデータが増えていくはずです。

  • 画像以外のブログ内容(可変のもの)等
  • ブログで使用している画像
  • プラグインやスキン

単純に考えれば、ブログで使用している画像の保存場所を変更することである程度は容量を減らせると思いました。最初はS3に移動させようと思ってたんですが、AWSを勉強している自分にとっていろんなサービスを使ってみたくなります。ということでS3は使ったことあるので、画像以外のブログ内容(可変のもの)等が保存されいているDBの場所を変更しようと思ってしまいました。改造計画第一弾~DB外だし対応~を実施することにしました。

今まで

AMIを使用してWordPress環境を作成しました。EC2のみを使用している状態です。尚、「WordPress ウェブサイトを立ち上げる」の方法で作成すれば手順さえ把握すれば5分もあればWordPress環境はできてしまいます。AWS触ったことないかたは是非やってみるといいと思います。(キーペアなしでの手順になっていますが、キーペアは作ったほうがよいです。理由はこちら。)

概要図


EBSがどのくらい容量使っているのか確認した時の/dev/xvda1になります。

これから

AWSにはRDS(Amazon Relational Database Service)というものがあります。簡単にいうとDB専用のサーバです。 簡単にクラウド内でリレーショナルデータベースを簡単に設定、運用、およびスケールできるようです。おいしそうですね。正直、こんな誰もアクセスが来ないブログで使うようなサービスではないかと思います。ただ、使いたくなってしまったので、やってみました。

概要図

元々はEBS内にあったDBをRDSに移動させます。このDBにはEC2インスタンス以外からはアクセスできないようにしました。無駄におしゃれな感じになってますね。

手順

Amazon RDSへWordPressのDBを移行する方法を参考にさせて頂きながらやりました。概要と補足のみ書きます。全てを新たに作り直したイメージです。DB部分だけ外だしでもよかったんですが、いろいろ整理したかったので。。。AWSなんでできることですね。

1.VPC領域、サブネットの作成

インターネットからアクセスできるパブリックサブネットとインターネットからはアクセスできないプライベートサブネットを作成します。プライベートサブネットは2つ作る必要があります。DBのサブネットグループを作成する際、最低2つ以上のAvailabillity Zoneの指定が必須となる為です。(Multi-AZ構成時に必要となるため。Multi-AZを使用しない場合でも必須設定となります。)

2.現在のAMI作成、新EC2作成、WEBセキュリティグループ設定

現在のAMIを取得し、そのAMIからEC2を作ります。WEB用セキュリティグループはHTTPとSSHが使えるようにします。キーペアは過去と同じものを使用すれば今までと同じようにログインできます。このタイミングでIPアドレスからブラウザより一通り動くか確認しました。

3.関連サービスの設定変更

自分の場合はRoute53、CloudWatchを使用していたので向き先を変更しました。Route53は反映に時間がかかりますのでドキドキしましたが、AレコードのIPアドレスを変更したら30分程で独自ドメインからアクセスできるようになりました。CloudWatchはそこまで使っていなかったので最初から登録し直しました。このタイミングでドメインからアクセスできるか確認、監視がOKになっていることを確認しました。

4.DBセキュリティグループの設定

WordPressはMySQL を使用していましたのでポート範囲を『3306』で指定します。ソース(接続元)にはパブリックサブネットのCIDR値(IPアドレス範囲)を指定します。

5.DBサブネットグループを作成

DBサブネットグループを作成します。先にDBインスタンスを作成しようとしたらうまくできませんでした。

6.RDSインスタンスを作成

先ほど作成したVPC領域の指定、DBサブネットグループやセキュリティグループを設定します。Master Passwordを万が一忘れてしまった場合はインスタンス設定画面から変更できます。ステータスの作成中の時間は5分くらいでした。

7.データベースの移行

エンドポイント(接続先)を確認し、EC2から接続してsqlを実行してDBを復元させます。BackWPupはWordPressバックアップを行うで触れています。よければご覧ください。バックアップしたsqlファイルをWinSCPとかでEC2にもってきてそのディテクトリで下記を実行すると復元できます。

mysql -h <エンドポイント> -port=3306 -u -p
USE <RDSインスタンス作成時に入力したデータベース名>;
SOURCE <sqlファイル名>;

実行の確認は出力されているログをざっと見てselectでもしてみてください。脱出はexitです。

8.データベースの繋ぎ変え

「wp-config.php」という設定ファイルのDB_NAME、DB_USER、DB_PASSWORD、DB_HOSTの値を変更します。尚、同じディレクトリにwp-config.php_20180714というファイルを作成して置いておいたらBackWPupのジョブがこけました。

wp-config.php格納場所:/opt/bitnami/apps/wordpress/htdocs/

変更後はブラウザからWordPressのサイトにアクセスして動くか確認。

9.データベース削除

問題なくRDSのDBが動いているか確認した後は、今回の目的であるEBSにあるWordPressデータを削除します。”drop database bitnami_wordpress;”を実行。

結果

これで少しはWordPressの容量が減って空きができたかな。。

root@ip-10-0-1-10:/opt/bitnami# sudo du -s /* | sort -nr
du: cannot access '/proc/2572/task/2572/fd/4': No such file or directory
du: cannot access '/proc/2572/task/2572/fdinfo/4': No such file or directory
du: cannot access '/proc/2572/fd/4': No such file or directory
du: cannot access '/proc/2572/fdinfo/4': No such file or directory
4842792 /opt
1873056 /home
1168968 /usr
650008  /mnt
278352  /var
94896   /lib
31232   /boot
(略)

ほとんど変わってないじゃないかー!!!まぁ、やる前にmysqlのデータの容量見たんで知ってましたが。。。まぁ、今後沢山の記事を作っても問題ない状態になったということで前向きに考えています。どんなことも目的を明確にし、必要なことをやっていきましょう。