📣
TiDB Cloud Essential はパブリックプレビュー中です。このページは自動翻訳されたものです。原文はこちらからご覧ください。

DMクラスタパフォーマンステスト

このドキュメントでは、データ移行に関する速度テストやレイテンシーテストなど、DM クラスターでパフォーマンス テストを実行するためのテスト シナリオの構築方法について説明します。

移行データフロー

MySQL -> DM -> TiDB という単純な移行データフローを使用して、DM クラスターのデータ移行パフォーマンスをテストできます。

テスト環境をデプロイ

  • すべてのデフォルト構成で、 TiUPを使用して TiDB テスト クラスターをデプロイ。
  • MySQL サービスをデプロイ。binlogのROWモードを有効にし、その他の設定項目はデフォルト設定を使用します。
  • DM ワーカーと DM マスターを使用して DM クラスターをデプロイ。

パフォーマンステスト

テーブルスキーマ

パフォーマンス テストには、次のスキーマを持つテーブルを使用します。

CREATE TABLE `sbtest` ( `id` int NOT NULL AUTO_INCREMENT, `k` int NOT NULL DEFAULT '0', `c` char(120) CHARSET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '', `pad` char(60) CHARSET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `k_1` (`k`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin

完全輸入ベンチマークケース

テストデータを生成する

sysbench使用してアップストリームにテストテーブルを作成し、フルインポート用のテストデータを生成します。テストデータを生成するには、以下のsysbenchコマンドを実行します。

sysbench --test=oltp_insert --tables=4 --mysql-host=172.16.4.40 --mysql-port=3306 --mysql-user=root --mysql-db=dm_benchmark --db-driver=mysql --table-size=50000000 prepare

データ移行タスクを作成する

  1. アップストリームMySQLソースを作成し、 source-idsource-1に設定します。詳細はデータソース構成をロードする参照してください。

  2. 移行タスクを作成します(モードfull )。タスク設定テンプレートは次のとおりです。

--- name: test-full task-mode: full # Configure the migration task using the TiDB information of your actual test environment. target-database: host: "192.168.0.1" port: 4000 user: "root" password: "" mysql-instances: - source-id: "source-1" block-allow-list: "instance" mydumper-config-name: "global" loader-thread: 16 # Configure the name of the database where sysbench generates data. block-allow-list: instance: do-dbs: ["dm_benchmark"] mydumpers: global: rows: 32000 threads: 32

移行タスクの作成方法の詳細については、 データ移行タスクを作成する参照してください。

注記:

  • マルチスレッドを使用して単一のテーブルから同時にデータをエクスポートするには、設定項目mydumpersのオプションrows使用します。これにより、データのエクスポートが高速化されます。
  • 異なる構成でのパフォーマンスをテストするには、 mysql-instances構成のloader-threadと、 mydumpers構成項目のrowsthreads調整できます。

テスト結果を取得する

DM-worker のログを確認してください。1 all data files have been finished表示されている場合は、すべてのデータがインポートされたことを意味します。この場合、データのインポートにかかった時間を確認できます。サンプルログは次のとおりです。

[INFO] [loader.go:604] ["all data files have been finished"] [task=test] [unit=load] ["cost time"=52.439796ms]

テスト データのサイズとデータのインポートにかかる時間に応じて、完全なデータの移行速度を計算できます。

増分レプリケーションのベンチマークケース

テーブルを初期化する

アップストリームにテスト テーブルを作成するにはsysbench使用します。

データ移行タスクを作成する

  1. アップストリームMySQLのソースを作成します。1をsource-id source-1設定します( 完全輸入ベンチマークケースでソースを作成済みの場合は、再度作成する必要はありません)。詳細はデータソース構成をロードする参照してください。

  2. DM移行タスク(モードall )を作成します。タスク設定ファイルの例を以下に示します。

--- name: test-all task-mode: all # Configure the migration task using the TiDB information of your actual test environment. target-database: host: "192.168.0.1" port: 4000 user: "root" password: "" mysql-instances: - source-id: "source-1" block-allow-list: "instance" syncer-config-name: "global" # Configure the name of the database where sysbench generates data. block-allow-list: instance: do-dbs: ["dm_benchmark"] syncers: global: worker-count: 16 batch: 100

データ移行タスクの作成方法の詳細については、 データ移行タスクを作成する参照してください。

注記:

さまざまな構成でのパフォーマンスをテストするには、構成項目syncersworker-countbatch調整できます。

増分データを生成する

アップストリームで増分データを継続的に生成するには、 sysbenchコマンドを実行します。

sysbench --test=oltp_insert --tables=4 --num-threads=32 --mysql-host=172.17.4.40 --mysql-port=3306 --mysql-user=root --mysql-db=dm_benchmark --db-driver=mysql --report-interval=10 --time=1800 run

注記:

異なるsysbenchのステートメントを使用して、さまざまなシナリオでのデータ移行のパフォーマンスをテストできます。

テスト結果を取得する

DMの移行ステータスを確認するには、コマンドquery-status実行してください。DMの監視メトリクスを確認するには、Grafanaを使用してください。ここでの監視メトリクスとは、 finished sqls jobs (単位時間あたりに完了したジョブ数)およびその他の関連メトリクスを指します。詳細については、 Binlog移行監視メトリクス参照してください。

このページは役に立ちましたか?