重要
このページは英語版のページを機械翻訳しています。原文はこちらからご覧ください。

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

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

移行データフロー

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

テスト環境をデプロイ

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

性能テスト

テーブルスキーマ

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

CREATE TABLE `sbtest` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `k` int(11) 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-idからsource-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ワーカーのログを確認します。 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のソースを作成します。 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

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

ノート:

さまざまな構成でパフォーマンスをテストするために、 syncersの構成項目でworker-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移行監視メトリックを参照してください。