DBを移行する前に、移行元DBにテーブルとダミーデータを追加します。
現状ではDBへの書き込みは散発的、かつほとんどDBにはデータが入っていないため、その負荷を確認しづらいためです。
2つの WordPressアプリケーションが実行されている EC2インスタンス のどちらか に Session Manager で接続し、シェル上で下記のコマンドを実行します。
これらのコマンドはダミーデータ生成用なので、特にその処理内容を理解する必要はありません。
DB_HOST
変数は WordPress にも設定した RDS インスタンス の ホスト名 を上書きして指定してください。wordpress
以外の場合は、下記スクリプトの DB_PASS
変数の値を書き換えて実行してください。DB_HOST='<your-rds-host.com>'
続けてDBパスワードとデータベース名はハンズオン手順で共通の以下を設定します。(もし変更している場合は適切な値に変更してください)
DB_PASS='wordpress'
DB_DATABASE='wordpress'
以下は Session Manager でのシェルでの実行画面イメージです
上の変数 DB_HOST の値を正しく設定していることを再度確認して下さい。
その後、以下のコマンド群を コピー & ペースト して実行します。
cd ~
cat <<EOF > schema.sql
DROP TABLE IF EXISTS data;
CREATE TABLE IF NOT EXISTS data (
id INT AUTO_INCREMENT PRIMARY KEY,
ts TIMESTAMP NOT NULL,
value INT NOT NULL
);
LOAD DATA LOCAL INFILE 'dataset.csv' REPLACE INTO TABLE data FIELDS TERMINATED BY ','
(@1,@2)
SET ts=@1,value=@2
;
EOF
echo -n '' > dataset.csv
cat <<'EOF' > batch_data_gen.sh
#!/bin/bash
set -eu
NUM=10000
NUM2=1000
echo -n '' > dataset-elem.csv
for _ in `seq 1 ${NUM}`; do
UNIX_TIME=$(( $(od -vAn -N4 -tu4 < /dev/random) % 1604188800 ))
TS=$(date --date @${UNIX_TIME} +"%Y-%m-%d %H:%M:%S")
VALUE=$(( ${UNIX_TIME} % 100000 ))
echo "${TS},${VALUE}" >> dataset-elem.csv
done
for _ in `seq 1 ${NUM2}`; do cat dataset-elem.csv >> dataset.csv; done
EOF
bash ./batch_data_gen.sh
(シェルにペーストを行ったら最後にエンターキーを入力してください。 これにより、生成した batch_data_gen.sh を実行します)
dataset.csv
が EC2インスタンス上の現在のディレクトリ に生成されているはずです。mysql -h ${DB_HOST} -p${DB_PASS} -uadmin ${DB_DATABASE} < schema.sql
wordpress
データベースの data
テーブルに次のようなレコードが複数(多数)登録されています。id | ts | value |
---|---|---|
primary key | 2020/11/01までのタイムスタンプ | ランダムな値 |
mysqlクライアントを利用して接続し、確認してみましょう。
mysql -h ${DB_HOST} -p${DB_PASS} -uadmin ${DB_DATABASE}
select count(*) from data;
+----------+
| count(*) |
+----------+
| 10000000 |
+----------+
1 row in set (2.35 sec)
次のセクションに進んで下さい。