WordPressサイトをAWSへ移行する(2)-mysql to RDS-
はじめに
今回はWordPressサイトをAWSへ移行するの第二弾です。
AWS DMSでの移行-mysql to RDS-
について公式の資料を元に、解説します。
目次
- 構成概要
- 全体の流れ
- 移行元の環境構築-cloudformation-
- AWS DMSでの移行-mysql to RDS- ★←本記事ではここまで
- AWS MGNでの移行-wordpress to EC2-
- 後片づけ
構成おさらい
【移行手順】
- セキュリティグループの作成
- 移行先のMySQL on RDSの構築
- レプリケーションインスタンスの構築
- ソースデータベースの修正
- binary logの有効
- レプリケーション権限の付与
- ソースエンドポイント、ターゲットエンドポイントの作成
- DMSタスクの作成、移行の実行
AWS DMSでの移行-mysql to RDS-
セキュリティグループの作成
まずは、レプリケーションインスタンス(RI)用とRDS用のセキュリティグループ(SG)を作成していきます。
EC2コンソールより、RIセキュリティグループの作成
【入力情報】
Item | Value |
---|---|
Name | RI-SG |
Description | RI-SG |
VPC | TargetVPC |
inbound | default |
outbound | default |
続いて、RDS用のSGを作成
【入力情報】
Item | Value |
---|---|
Name | DB-SG |
Description | DB-SG |
VPC | TargetVPC |
inbound | RI-SG |
outbound | default |
inbound :
DMS RIからのMySQL通信を許可するため、RIのSGを指定します。
MySQL on RDSの作成
ターゲットデータベースのサブネットグループの作成
RDSコンソールへ移動します。左ペインより、サブネットグループをクリックします。
【入力情報】
Item | Value |
---|---|
名前 | targetRDB |
説明 | targetRDB |
VPC | TargetVPC |
アベイラビリティーゾーン | us-west-2a , us-west-2b |
サブネット | 10.0.101.0/24 , 10.0.201.0/24 |
MySQL on RDSの作成
RDSコンソールへ移動します。左ペインより、データベースをクリックします。
【入力情報】
Item | Value |
---|---|
DB | MySQL |
Version | 5.7.39 |
テンプレート | 無料利用枠 |
マスターユーザ名 | admin |
マスターパスワード | +++++(任意の値) |
ストレージの自動スケーリング | 無効 |
Virtual Private Cloud (VPC) | TargetVPC |
DBサブネットグループ | targetRDB |
セキュリティグループ | RDS-SG |
アベイラビリティーゾーン | us-west-2a |
AWS DMSの作成
レプリケーションインスタンスのサブネットグループの作成
DMSコンソールへ移動します。左ペインより、レプリケーションインスタンスをクリックします。
【入力情報】
Item | Value |
---|---|
名前 | ReplicationGroup |
説明 | ReplicationGroup |
VPC | TargetVPC |
サブネット | 10.0.0.0/24(public-a) , 10.0.1.0/24(public-b) |
レプリケーションインスタンスの作成
DMSコンソールへ移動します。左ペインより、レプリケーションインスタンスをクリックします。
【入力情報】
Item | Value |
---|---|
名前 | ReplicationInstance |
説明 | ReplicationInstance |
エンジンバージョン | 3.4.6 |
VPC | TargetVPC |
マルチAZ | シングルAZ |
アベイラビリティゾーン | us-west-2a |
VPC セキュリティグループ | RI-SG |
レプリケーションインスタンス作成後、Public IPを控えておきます。
次のソースデータベースのセキュリティグループにこのPublic IPからの通信を許可するよう修正します。
ソースデータベースの修正
EC2コンソールへ移動します。Source-DBServerのセキュリティグループを修正します。
Source-DBServerを選択し、下のセキュリティタブからセキュリティグループを選択します。
inboundにて先ほどのレプリケーションインスタンスのPublic IPからのアクセスを許可するよう以下のように設定します。
Source-DBServerを選択し、接続をクリックします。
SSMのセッションマネージャから接続します。
以下、mysqlにアクセスし、レプリケーション権限をwordpress-userに付与します。
sudo mysql -u root -pAWSRocksSince2006
GRANT REPLICATION CLIENT ON *.* to 'wordpress-user';
GRANT REPLICATION SLAVE ON *.* to 'wordpress-user';
GRANT SUPER ON *.* to 'wordpress-user';
exit
binlogsのフォルダを作成します。
sudo su -
mkdir /var/lib/mysql/binlogs
chown -R mysql\:mysql /var/lib/mysql/binlogs
/etc/mysql/my.cnf file を作成し修正します。
sudo su -
cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my.cnf
chown -R mysql\:mysql /etc/mysql/my.cnf
vim /etc/mysql/my.cnf
server_id=1
log-bin=/var/lib/mysql/binlogs/log
binlog_format=ROW
expire_logs_days=1
binlog_checksum=NONE
binlog_row_image=FULL
log_slave_updates=TRUE
performance_schema=ON
mysqlの設定を反映させます。
sudo service mysql restart
一応、以下のように出てくればOK
sudo mysql -u root -pAWSRocksSince2006
select variable_value as "BINARY LOGGING STATUS (log-bin) :: "
from performance_schema.global_variables where variable_name='log_bin';
select variable_value as "BINARY LOG FORMAT (binlog_format) :: "
from performance_schema.global_variables where variable_name='binlog_format';
exit
ソースエンドポイント、ターゲットエンドポイントの作成
DMSコンソールのエンドポイントをクリックする。
・ソースエンドポイントについて以下を入力する
【入力情報】
Item | Value |
---|---|
エンドポイントタイプ | ソースエンドポイント |
エンドポイント識別子 | Source-endpoint |
ソースエンジン | MySQL |
エンドポイントデータベースへのアクセス | 手動にchecked |
サーバー名 | xx.xx.xx.xx |
ポート | 3306 |
ユーザー名 | wordpress-user |
パスワード | AWSRocksSince2006 |
接続テストがsuccessfulであること
・ターゲットエンドポイントについて以下を入力する
【入力情報】
Item | Value |
---|---|
エンドポイントタイプ | ターゲットエンドポイント |
RDS DBインスタスの選択 | checked |
RDSインスタンス | database-1 |
エンドポイント識別子 | target-endpoint |
ソースエンジン | MySQL |
エンドポイントデータベースへのアクセス | 手動にchecked |
ポート | 3306 |
ユーザー名 | admin |
パスワード | +++++(任意の値) |
ターゲットDBへの負荷を鑑みて、アップロード数を1にする。
DBの移行
DMSのデータベース移行タスクから、タスクの作成をクリックします。
【入力情報】
Item | Value |
---|---|
タスク識別子 | SourceToRDS |
レプリケーションインスタンス | ReplicationInstance |
ソースデータベースエンドポイント | source-endpoint |
ターゲットデータベースエンドポイント | target-endpoint |
移行タイプ | 既存のデータを移行し、継続的な変更をレプリケートする |
検証の有効化 | checked |
Amazon CloudWatch Logs | checked |
テーブルマッピングの選択ルールから、新しい選択ルールの追加をクリックし、
【入力情報】
Item | Value |
---|---|
スキーマ | スキーマの入力 |
ソース名 | wordpress-db |
後は、レプリケーション完了を待ちます。
以上、お疲れさまでした。
次回は『5. AWS MGNでの移行-wordpress to EC2-』 について記事にします。
日々、Twitterにて検証を通してAWSなどネットワーク全般の情報を発信してますので、お互いフォローして情報共有していきましょう!
これ以降は個人的に調べたメモ。
★ source databaseのmysqlの修正
GRANT REPLICATION CLIENT ON . to 'wordpress-user';
GRANT REPLICATION SLAVE ON . to 'wordpress-user';
GRANT SUPER ON . to 'wordpress-user';
レプリケーション権限の付与
★ binlogの作成
mkdir /var/lib/mysql/binlogs
chown -R mysql:mysql /var/lib/mysql/binlogs
継続的なレプリケーションを実行するために、
フルロード中のデータをすべて移行した後、その間の変更履歴を上のフォルダに格納し、DMSがこの中身のログファイルを解析し、SQLを生成してターゲットDBと連携しデータをレプリケーションする。
★ mysqlコマンド
mysqlへのアクセス
mysql -u <username> -p -h <宛先ip or dns>
データベースの参照
show databases;
データベースを使用
use <database名>;
テーブル一覧
show tables;
カラム一覧
show columns from <table名>;
show columns from address where Field='address';
テーブル一覧
show tables;
Discussion