ダミーデータの追加

DBを移行する前に、移行元DBにテーブルとダミーデータを追加します。

現状ではDBへの書き込みは散発的、かつほとんどDBにはデータが入っていないため、その負荷を確認しづらいためです。

ダミーデータの追加

2つの WordPressアプリケーションが実行されている EC2インスタンス のどちらか に Session Manager で接続し、シェル上で下記のコマンドを実行します。

これらのコマンドはダミーデータ生成用なので、特にその処理内容を理解する必要はありません。

  • DB_HOST 変数は WordPress にも設定した RDS インスタンス の ホスト名 を上書きして指定してください。
  • DBに接続するためのパスワードが wordpress 以外の場合は、下記スクリプトの DB_PASS 変数の値を書き換えて実行してください。
DB_HOST='<your-rds-host.com>'

続けてDBパスワードとデータベース名はハンズオン手順で共通の以下を設定します。(もし変更している場合は適切な値に変更してください)

DB_PASS='wordpress'
DB_DATABASE='wordpress'
  • 以下は Session Manager でのシェルでの実行画面イメージです 00

  • 上の変数 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インスタンス上の現在のディレクトリ に生成されているはずです。
  • 続けて、以下のコマンドを実行して下さい。
    • このコマンドは、生成した 約 2.5MB の CSVファイルを利用して RDS for MySQL の dataテーブル に レコードを INSERT します。
mysql -h ${DB_HOST} -p${DB_PASS} -uadmin ${DB_DATABASE} < schema.sql
  • 正常に実行が完了すると、dataテーブルには レコードが 10,000,000 件登録された状態となります。

データの確認

  • ダミーデータが作成されると、wordpress データベースの data テーブルに次のようなレコードが複数(多数)登録されています。
id ts value
primary key 2020/11/01までのタイムスタンプ ランダムな値

mysqlクライアントを利用して接続し、確認してみましょう。

  • 下記のコマンドを、Systems Manager で接続している EC2 インスタンス上で実行します (接続情報は先ほどのスクリプトと同じ変数を利用しています)
mysql -h ${DB_HOST} -p${DB_PASS} -uadmin ${DB_DATABASE}
  • DBにadminユーザーで接続し、プロンプトが表示されたら、以下のクエリを実行し、dataテーブルのレコード件数のカウントを行います。
select count(*) from data;
  • 所定の件数(10,000,000)が取得できていることを確認してください。
+----------+
| count(*) |
+----------+
| 10000000 |
+----------+
1 row in set (2.35 sec)

次のセクションに進んで下さい。