短期的なビジネスのピークやデータベーススキーマの変更 (特にインデックスの変更) に備えるために、トラフィックリプレイとストレステスト機能を使用できます。この機能は、データベースインスタンスのスケールアウトが必要かどうかを判断し、実際のビジネスシナリオでのパフォーマンスを検証するのに役立ちます。これにより、デプロイ後の障害リスクを低減します。さらに、データベースに障害が発生して原因を特定できない場合に、この機能を使ってクローンデータベース上で障害を再現し、原因を究明することも可能です。
前提条件
-
サポートされるソースデータベース:
-
RDS MySQL
-
PolarDB for MySQL
説明PolarDB for MySQL Enterprise Edition のシングルノードインスタンスはサポートされていません。
-
-
サポートされるターゲットデータベースインスタンス:
-
RDS MySQL。
-
PolarDB for MySQL。
-
PolarDB-X 2.0。
-
-
ソースデータベースインスタンスとターゲットデータベースインスタンスが Database Autonomy Service (DAS) に接続されていること。詳細については、「Alibaba Cloud データベースインスタンスの DAS への接続」をご参照ください。
-
ソースデータベースインスタンスでは、DAS Enterprise Edition と SQL Explorer 機能を有効にする必要があります。ログインデックスの保存期間は 7 日間に設定する必要があります。
-
ターゲットデータベースインスタンスでは、DAS Enterprise Edition と SQL Explorer 機能を有効にする必要があります。ログインデックスの保存期間は 7 日間に設定する必要があります。
シナリオ
ピーク時にワークロードを処理するために、データベースインスタンスをスケールアップまたはスケールアウトする必要があるかどうかを確認します。
データベースのスキーマ、特にインデックスが変更されたら、実際のビジネスシナリオでデータベースのパフォーマンスを確認して、障害のリスクを軽減します。
データベース障害が発生した後、この機能を使用して、ソースデータベースの複製データベースで障害を再発させ、障害の原因を特定します。
注意事項
-
ストレステストに対するネットワークレイテンシの影響を低減するため、ストレステストクライアントとターゲットインスタンスは同じリージョンに配置する必要があります。
説明ストレステストクライアントとターゲットインスタンスを同じ VPC に配置することを推奨します。
-
ストレステストを実行する前に、ストレステストクライアントとターゲットインスタンス間の接続を検証し、トラフィックが送信できることを確認してください。
課金
-
DAS Enterprise Edition の料金については、「課金」をご参照ください。
-
ストレステストタスクを作成すると、次の項目が課金されます:
-
データ移行に [バックアップからの復元] を選択すると、選択したターゲットデータベースエンジンに基づいて、従量課金のデータベースインスタンスが自動的に作成されます。また、この新しいインスタンスでは最新の DAS Enterprise Edition が有効になり、SQL ログは 30 日間、ログインデックスは 7 日間保存されます。
-
詳細設定 セクションで DAS 自動購入および自動デプロイ を選択すると、ソースデータベースの QPS と再生速度の倍率に基づいて、適切なインスタンスタイプの従量課金 Elastic Compute Service (ECS) インスタンスが購入されます。詳細については、「ECS の課金の概要」をご参照ください。
説明システムは従量課金インスタンスを購入するため、不要な料金が発生しないよう、ストレステストタスクの終了後に手動で削除する必要があります。
-
手順
にログインします。DASコンソール.
-
トラフィックリプレイとストレステストページに移動します。
次のいずれかの方法で、トラフィックリプレイとストレステストページに移動できます:
-
左側メニューで、ツールボックス > トラフィックのリプレイとストレステスト をクリックします。
-
インスタンス詳細ページから移動します。
左側のナビゲーションウィンドウで、インスタンスモニター.
表示されるページで、管理するデータベースインスタンスを見つけ、インスタンスIDをクリックします。 インスタンス詳細ページが表示されます。
-
左側メニューで、リクエスト分析 > SQL Explorer and Audit をクリックします。次に、表示されたページで トラフィック再生とストレステスト をクリックします。
-
-
タスク一覧ページで、右上の タスクの作成 をクリックします。
-
タスクの作成 ダイアログボックスで、次のパラメーターを設定します。
-
タスクタイプ を クラウドインスタンスの再生 に設定し、タスク名 を入力します。
-
移行元情報 セクションで、次のパラメーターを設定し、[次へ] をクリックします。
設定
説明
[インスタンスソース]
Alibaba Cloud データベース を選択します。
[データベースエンジン]
データベースインスタンスのエンジンです。オプションは次のとおりです:
-
MySQL:RDS MySQL インスタンス。
-
PolarDB for MySQL:PolarDB for MySQL インスタンス。
-
PolarDB-X:PolarDB-X 2.0 インスタンス。
[移行元インスタンス]
移行元インスタンス の ID を選択します。
[詳細設定]
[一括ストレステスト]
準備フェーズの後、タスクは一時停止します。その後、タスク一覧から複数のタスクを選択し、すべてのタスクのストレステストを同時に開始できます。
[SQL Type]
テストする SQL タイプを 1 つ以上選択します。
[データベースアカウント]、[Password]
ソースデータベースのアカウントとパスワードです。
説明データベースの取得 をクリックしてデータベース一覧を取得します。すべてのデータベースでストレステストを実行する場合は、何も選択する必要はありません。特定のデータベースをテストする場合は、最大 5 つのデータベースを選択できます。
-
-
移行先データベースのスキーマとデータの生成方法 セクションで、次のパラメーターを設定します。
設定
説明
[データベースエンジン]
ターゲットデータベースインスタンスのエンジンです。次のタイプがサポートされています:
-
MySQL:RDS MySQL インスタンス。
-
PolarDB for MySQL:PolarDB for MySQL インスタンス。
-
PolarDB-X:PolarDB-X 2.0 インスタンス。
説明PolarDB-X 2.0 は、中国 (杭州)、中国 (上海)、中国 (北京)、中国 (深圳)、シンガポールリージョンでのみサポートされています。
[ベンチマークデータの移行]
ソースインスタンスのベンチマークデータがターゲットインスタンスに移行されたかどうかに基づいて、移行方法を選択します:
-
[バックアップからの復元]:ターゲットインスタンスは、特定の時点またはバックアップセットに基づいてソースインスタンスからクローンされます。
説明DAS は、ソースインスタンスと同じ仕様の従量課金インスタンスを自動的に購入します。このインスタンスでは、デフォルトで最新の DAS Enterprise Edition と SQL Explorer 機能が有効になります。ログインデックスの保存期間は 7 日間に設定され、バックアップデータがインスタンスに復元されます。
-
データ移行が完了しました:トラフィックリプレイの時間範囲内のソースインスタンスのテーブルスキーマとデータが、ターゲットインスタンスに同期されています。
説明ストレステストのトラフィックが期待どおりに実行されるように、ターゲットインスタンスのスキーマとデータはソースインスタンスのものと一致させる必要があります。
-
DTS タスク ID を入力してください:Data Transmission Service (DTS) コンソールで、ソースインスタンスからターゲットインスタンスにデータを同期するためのデータ移行タスクが作成されています。
説明DTS を使用したデータ移行の詳細については、「データ移行」をご参照ください。
-
DTS 移行タスクの作成:DTS コンソールに移動せずに、データ移行タスクを直接作成します。
説明-
ソースインスタンスが Alibaba Cloud データベースの場合は、4 つの方法のいずれかを選択できます。[バックアップからの復元] を選択することを推奨します。この方法を選択すると、ストレステストタスクの作成後に、システムがソースインスタンスと同じ仕様の従量課金インスタンスを自動的に購入し、そのインスタンスにデータを復元します。
-
ソースインスタンスが自己管理型データベースの場合は、データ移行が完了しました、DTS タスク ID を入力してください、または DTS 移行タスクの作成 のみを選択できます。
[復元モード]
復元モードを選択します。必要に応じて、次のいずれかのモードを選択できます:
-
[時点別]
-
[バックアップセット別]
説明-
このパラメーターは、ベンチマークデータの移行 が [バックアップからの復元] に設定されている場合に必要です。
-
復元モード を バックアップセット別 に設定する場合、DAS サービスにリンクされたロール に権限を付与する必要があります。表示されるダイアログボックスで 決定 をクリックします。
[復元時刻を選択してください]/[バックアップセット]
選択した 復元モード に基づいて、復元時間またはバックアップセットを選択します。
説明このパラメーターは、ベンチマークデータの移行 が [バックアップからの復元] に設定されている場合に必要です。
[移行タスク ID]
ソースインスタンスからターゲットインスタンスにデータを同期する DTS データ移行タスクの ID です。
説明このパラメーターは、ベンチマークデータの移行 が DTS タスク ID を入力してください に設定されている場合に必要です。
[DTS 移行タスクの仕様]
DTS 移行タスクの仕様を選択します。
説明このパラメーターは、ベンチマークデータの移行 が DTS 移行タスクの作成 に設定されている場合に必要です。
[移行先インスタンス]
ターゲットインスタンスを選択します。デフォルトでは、システムはターゲットインスタンスのプライマリエンドポイントにアクセスします。
説明このパラメーターは、ベンチマークデータの移行 が データ移行が完了しました、DTS タスク ID を入力してください、または DTS 移行タスクの作成 に設定されている場合に必要です。
[移行先インスタンスの特権アカウント]
ターゲットインスタンスの特権アカウントのユーザー名とパスワードです。
説明このパラメーターは、ベンチマークデータの移行 が データ移行が完了しました、DTS タスク ID を入力してください、または DTS 移行タスクの作成 に設定されている場合に必要です。
[移行元インスタンスの特権アカウント]
ソースインスタンスの特権アカウントのユーザー名とパスワードです。
説明このパラメーターは、ベンチマークデータの移行 が [バックアップからの復元] または DTS 移行タスクの作成 に設定されている場合に必要です。
-
-
ストレステストの基本設定 セクションで、次のパラメーターを設定します。
設定
説明
[再生トラフィックを選択してください]
トラフィックリプレイの時間範囲を選択します。
説明この時間範囲では、ソースインスタンスに対して [SQL Explorer と監査] 機能を有効にする必要があります。
[再生速度]
ソースインスタンスのトラフィックがターゲットインスタンスでリプレイされるレートです。たとえば、値 1 は元の速度を示します。再生速度は 1 から 10 までの正の整数である必要があります。
説明設定した再生速度がターゲットインスタンスタイプでサポートされている最大速度を超えた場合、ストレステストタスクはサポートされている最大速度で実行されます。
-
詳細設定 セクションで、ストレステストプログラムをデプロイする ECS を選択します。
-
DAS 自動購入および自動デプロイ を選択できます。システムは、ソースインスタンスの QPS と再生速度の倍率に基づいて、適切なインスタンスタイプの従量課金 ECS インスタンスを購入します。
-
追加 をクリックして既存の ECS インスタンスを選択し、デプロイコマンドを生成してそのインスタンスで実行することもできます。
-
-
-
[次へ] をクリックします。
-
検証が成功したら、決定 をクリックしてストレステストタスクを作成します。
結果の表示
-
ストレステストタスクが作成されたら、タスク一覧ページに戻ってタスクの詳細を表示します。
-
操作 列で、次の操作を実行できます:
-
詳細 をクリックして 基本タスク情報 ページに移動し、ストレステストタスクの実行ステータスとレポートを表示します。
-
ストレステストタスクを早期に終了するには、終了 をクリックします。
-
削除 をクリックして、作成したストレステストタスクを削除します。
-
セクションでは、タスクの実行中にパラメーターを動的に調整できます。次の表にパラメーターを示します。
パラメーター
説明
Threads
リプレイスレッドの数です。この値は、リプレイホストの CPU に基づいて自動的に計算されます:max(3, 2 * runtime.NumCPU() - 5)。
BatchSize
解析のバッチサイズです。SQL ステートメントは解析中にバッチ処理されます。メモリ不足エラーが発生した場合は、このパラメーターを調整できます。デフォルト値は 100000 です。
Debug
デバッグログを出力するかどうかを指定します。
ConnectPoolSize
コネクションプールのサイズです。
ConnectTimeout
接続タイムアウト期間です。単位は秒です。デフォルト値は 3 です。
SocketTimeout
実行タイムアウト期間です。単位は秒です。デフォルト値は 10 です。
SkipDuplicateErrorSql
有効にすると、システムは繰り返し実行に失敗したりタイムアウトしたりする SQL ステートメントテンプレートをスキップします。
SqlCountLimit
スレッド分散サイズです。値を小さくするとスレッドのマージは減少しますが、読み取りプレッシャーが高くなり、タイムアウトが発生してリプレイの進行に影響する可能性があります。
-
次のステップ
-
ストレステストタスクが完了したら、インテリジェントストレステストの詳細 ページに移動します。これ以上のテストが不要な場合は、対応する ECS インスタンスとデータベースインスタンスを解放し、不要な料金が発生しないようにしてください。
-
ソースインスタンスの SQL Explorer and Audit を手動で有効にした場合は、ストレステストの完了後に無効にしてください。詳細については、「SQL Explorer と監査の無効化」をご参照ください。
-
今後の短期的なビジネスピークに備えてデータベースインスタンスをスケールアウトする必要がある場合は、インスタンスタイプに基づいて性能自動スケーリングまたはスケジュールされた自動スケーリングを有効にできます。