はろー。 は、はろー。まとめノート書いてますよ。

AWS EC2インストールDB運用からRDS運用へ変更した話

AWS EC2インストールDB運用からRDS運用へ変更した話 アイキャッチ

AWS EC2にApache、PHP、データベースをまとめてインストールしてEC2のみでWordPressのサイト運用をしていましたが、データベースがたびたび落ちていることがありました。

サイトの画面には「Error establishing a database connection」の文章。

データベース接続エラー表示画面

WordPressサイトでデータベース接続エラーが発生すると上のような画面が表示されます。

このような現象の一つとしてRDBMS(ここではMariaDBを使用)が何らかの要因で落ちてしまったことがあげられます。

その場合MariaDBを再び起動すれば元どおりになりますが、その都度データベースを起動し直すのも結構手間ですし、その間サイトにアクセスした人からすれば何コレ?ってことになります。

そこでEC2のみの運用からデータベースを分けて運用する方法をとることにしました。

AWSにはRDS(Relational Database Service)と呼ばれるデータベースを貸し出すサービスがあります。このサービスを利用することによって、EC2にインストールしたデータベースで運用するよりも可用性や保守性などで優れるデータベース運用ができるようです。

それならとEC2で運用していたデータベースを移し替えてAWS RDSでデータベース運用を始めてみよう!というお話に至りました。

目的

運用中のWordPressサイトの現行データベースをAWS RDSに移し替えて、データベース運用をAWS RDSで行います。

RDSに新規データベース作成とデータベース詳細表示

データべースの新規作成

AWS RDSで運用するためのデータベースを新規作成します。ここでは、MariaDBの無料利用枠でインスタンス作成します。

画面下部「データベースの作成」ボタンを押すとデータベース作成を開始します。

AWS RDS新規データベース作成

認証情報の詳細の表示

データベースの作成が完了してサイドメニューより「データベース」を選択すると、以下の画面が表示されます。画面上部のポップ表示より「認証情報の詳細の表示」をクリックします。

認証情報の詳細の表示

ユーザ名、パスワード、エンドポイントの取得

「認証情報の詳細の表示」ボタンをクリックすると下のような画面がポップウィンドウで開きます。マスターユーザー名、マスターパスワード、エンドポイントの項目がそれぞれ表示されます。

これらの項目を用いて後述のAWS EC2からAWS RDSへデータベース接続するときに必要になりますので忘れずメモします。

認証情報表示

AWS EC2からAWS RDSに接続

AWS EC2にSSH接続したのちAWS RDSにデータベース接続を行います。

RDSに接続

RDSに接続します。ここで、ポート番号はセキュリティグループのデータベース接続のためのポート番号を指定します。デフォルト値は「3306」で設定されています。

$ mysql -h 'エンドポイント' -P 'ポート番号' -u 'マスターユーザー名' -p

WordPress用データベース作成

RDSに接続できたらはじめにWordPress用のデータベースを作成します。ここでは「wordpressrds」という名前でデータベースを作成します。

> create database wordpressrds;

WordPress用ユーザ作成とアクセス権限の付与

作成したデータベースにアクセスするためのユーザ作成およびアクセス権限を付与していきます。

> create user 'RDSのwordpress用ユーザ名' identified by 'RDSのwordpress用ユーザのパスワード';
> grant all on wordpressrds.* to 'RDSのwordpress用ユーザ名';

AWS EC2で運用中の現行データベースをダンプ

次に、WordPressで使用している現行データベースをダンプします。現行データベース名を「wordpressec2」とし、ダンプ先のファイル名は「wordpress.dump」としました。

$ mysqldump --single-transaction -u '現行データベースのユーザ名' -p wordpressec2 > ./wordpress.dump

ダンプしたデータベースをEC2からRDSにコピー

ダンプしたデータベースをRDSにコピーします。

$ mysql -h 'エンドポイント' -P 'ポート番号' -u 'RDSのwordpress用ユーザ名' -p wordpressrds < ./wordpress.dump

これで、RDSに作成したデータベース「wordpressrds」に現行データベースのコピーが完了しました。

WordPressコンフィグを編集してRDSデータベースに接続

次にWordPressからRDSのデータベースに接続できるようにするため設定ファイルを編集します。操作するのは「wp-config.php」です。

// 27行目あたりから
// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define( 'DB_NAME', 'wordpressrds' );

/** MySQL データベースのユーザー名 */
define( 'DB_USER', 'RDSのwordpress用ユーザ名' );

/** MySQL データベースのパスワード */
define( 'DB_PASSWORD', 'RDSのwordpress用ユーザのパスワード' );

/** MySQL のホスト名 */
define( 'DB_HOST', 'エンドポイント' );

EC2のMariaDB停止、自動起動設定解除

AWS RDSにデータベースの移行が完了しましたので、AWS EC2内にインストールしているMariaDBのサービス停止、および自動起動設定解除(設定している場合)を行います。

$ sudo systemctl stop mariadb
$ sudo systemctl disable mariadb

さいごに

AWS EC2内で運用していたデータベースをAWS RDSに移行してみました。

データベース運用をEC2から切り離してEC2の負荷低減および可用性の高いRDSでのデータベース運用を行うことで記事冒頭のデータベース接続エラーの発生を抑止できるようになりました。

これで落ちなくなるはず!

スポンサーリンク
back to top