🦁

WordPressサイトをAWSへ移行する(2)-mysql to RDS-

2022/10/18に公開

はじめに

今回はWordPressサイトをAWSへ移行するの第二弾です。
AWS DMSでの移行-mysql to RDS-
について公式の資料を元に、解説します。

目次

  1. 構成概要
  2. 全体の流れ
  3. 移行元の環境構築-cloudformation-
  4. AWS DMSでの移行-mysql to RDS- ★←本記事ではここまで
  5. AWS MGNでの移行-wordpress to EC2-
  6. 後片づけ

構成おさらい


【移行手順】

  1. セキュリティグループの作成
  2. 移行先のMySQL on RDSの構築
  3. レプリケーションインスタンスの構築
  4. ソースデータベースの修正
    • binary logの有効
    • レプリケーション権限の付与
  5. ソースエンドポイント、ターゲットエンドポイントの作成
  6. 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などネットワーク全般の情報を発信してますので、お互いフォローして情報共有していきましょう!
https://twitter.com/pero_nw

これ以降は個人的に調べたメモ。

★ 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