TiDB を ProxySQL と統合する

このドキュメントでは、例として CentOS 7 を使用してTiDBProxySQLを統合する方法について説明します。他のシステムを使用して統合する場合は、 試してみるセクションを参照してください。このセクションでは、 DockerおよびDocker Composeを使用してテスト統合環境をデプロイする方法を紹介しています。詳細については、次を参照してください。

1.TiDBを起動

テスト環境

  • TiDB Cloud
  • Source compilation
  • TiUP
  1. TiDBのソースコードをダウンロードし、 tidb-serverのフォルダに移動してgo buildのコマンドを実行します。

    git clone git@github.com:pingcap/tidb.git
    cd tidb/tidb-server
    go build
    
  2. 構成ファイルtidb-config.tomlを使用して、TiDB を開始します。コマンドは次のとおりです。

    ${TIDB_SERVER_PATH} -config ./tidb-config.toml -store unistore -path "" -lease 0s > ${LOCAL_TIDB_LOG} 2>&1 &
    

    ノート:

    • 上記のコマンドは、ストレージ エンジンとしてunistoreを使用します。これは、TiDB のテスト ストレージ エンジンです。テスト環境でのみ使用してください。
    • TIDB_SERVER_PATH : go buildを使用したコンパイル済みバイナリのパス。たとえば、前のコマンドを/usr/localの下で実行すると、 TIDB_SERVER_PATH/usr/local/tidb/tidb-server/tidb-serverになります。
    • LOCAL_TIDB_LOG : TiDB のログ ファイル パス。

TiUPは、TiDB パッケージ マネージャーとして、TiDB、PD、TiKV など、TiDB エコシステム内のさまざまなクラスター コンポーネントの管理を容易にします。

  1. TiUP をインストールします。

    curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
    
  2. テスト環境で TiDB を起動します。

    tiup playground
    

本番環境

  • TiDB Cloud
  • Deploy Locally

TiDB サービスをホストする必要がある場合は、 TiDB Cloudを直接使用することをお勧めします (たとえば、自分で管理できない場合や、クラウドネイティブ環境が必要な場合など)。本番環境で TiDB クラスターを構築するには、 TiDB クラスターを作成するを参照してください。

本番環境では、テスト環境よりも多くの手順が必要です。オンプレミスの本番クラスターをデプロイするには、 TiUP を使用して TiDB クラスターをデプロイするを参照して、ハードウェアの条件に基づいてデプロイすることをお勧めします。

2.ProxySQL を開始します。

ProxySQL を yum でインストールする

  1. ProxySQL リポジトリを追加します。

    cat > /etc/yum.repos.d/proxysql.repo << EOF
    [proxysql]
    name=ProxySQL YUM repository
    baseurl=https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/centos/\$releasever
    gpgcheck=1
    gpgkey=https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/repo_pub_key
    EOF
    
  2. ProxySQL をインストールします。

    yum install proxysql
    
  3. ProxySQL を開始します。

    systemctl start proxysql
    

他のインストール方法

他の方法で ProxySQL をインストールするには、 ProxySQL READMEまたはProxySQL インストール ドキュメントを参照してください。

3.ProxySQL を構成する

ProxySQL を TiDB のプロキシとして使用するには、ProxySQL を構成する必要があります。必要な構成項目は、次のセクションにリストされています。その他の構成項目の詳細については、 ProxySQL の公式ドキュメントを参照してください。

簡単な紹介

ProxySQL は、構成を管理するためのポート ( ProxySQL Admin インターフェイス) と、プロキシへのポート ( ProxySQL MySQL Interface ) を使用します。

  • ProxySQL 管理インターフェイス: 管理インターフェイスに接続するには、 adminユーザーを使用して構成の読み取りと書き込みを行うか、 statsユーザーを使用して統計の一部を読み取ることができます (構成の読み取りまたは書き込みはできません)。デフォルトの資格証明はadmin:adminおよびstats:statsです。セキュリティ上の理由から、既定の資格情報を使用してローカルに接続できますが、リモートで接続するには、多くの場合radminという名前の新しいユーザーを構成する必要があります。
  • ProxySQL MySQL Interface : SQL を設定済みのサービスに転送するためのプロキシとして使用されます。

proxysql config flow

ProxySQL 構成には、 runtimememory 、およびdiskの 3 つのレイヤーがあります。 memoryレイヤーの構成のみを変更できます。構成を変更した後、 LOAD xxx TO runtimeを使用して構成を有効にするか、 SAVE xxx TO DISKを使用してディスクに保存し、構成の損失を防ぐことができます。

proxysql config layer

TiDBサーバーの構成

ProxySQL に複数の TiDB サーバーを追加できます。 TiDB サーバーを追加するには、 ProxySQL 管理インターフェイスで次の手順を実行します。

INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (0, '127.0.0.1', 4000);
LOAD mysql servers TO runtime;
SAVE mysql servers TO DISK;

フィールドの説明:

  • hostgroup_id : ProxySQLはホストグループによってサーバーを管理します。これらのサーバーに SQL を均等に分散するために、負荷分散が必要な複数のサーバーを同じホストグループに構成できます。読み取りと書き込みの分割など、サーバーを区別するために、それらを異なるホストグループに構成できます。
  • hostname : TiDBサーバーの IP またはドメイン。
  • port : TiDBサーバーのポート。

プロキシ ログイン ユーザーの構成

TiDBサーバーユーザーを ProxySQL に追加すると、ProxySQL はこのユーザーがProxySQL MySQL Interfaceにログインして TiDB との接続を作成できるようにします。ユーザーが TiDB で適切な権限を持っていることを確認してください。 TiDBサーバーユーザーを追加するには、 ProxySQL 管理インターフェイスで次の手順を実行します。

INSERT INTO mysql_users(username, password, active, default_hostgroup, transaction_persistent) VALUES ('root', '', 1, 0, 1);
LOAD mysql users TO runtime;
SAVE mysql users TO DISK;

フィールドの説明:

  • username : ユーザー名。
  • password : パスワード。
  • active : ユーザーがアクティブかどうかを制御します。 1がアクティブで、 0が非アクティブです。 active1の場合のみ、ユーザーはログインできます。
  • default_hostgroup : ユーザーが使用する既定のホスト グループ。クエリ ルールがトラフィックを特定のホスト グループにルーティングしない限り、SQL が配布されます。
  • transaction_persistent : 1は永続的なトランザクションを示します。つまり、ユーザーが接続でトランザクションを開始すると、トランザクションがコミットまたはロールバックされるまで、すべてのステートメントが同じホストグループにルーティングされます。

構成ファイルによる ProxySQL の構成

ProxySQL Admin インターフェイスを使用して構成することに加えて、構成ファイルを使用して ProxySQL を構成することもできます。 構成ファイルによる ProxySQL の構成ドキュメントでは、構成ファイルは ProxySQL を初期化するための主要な方法ではなく、二次的な方法としてのみ考慮されるべきです。構成ファイルは、SQLite が作成されていない場合にのみ使用され、SQLite が作成された後は使用されません。構成ファイルを使用して ProxySQL を構成する場合は、最初に次のコマンドを使用して SQLite を削除する必要があります。ただし、これにより、 ProxySQL Admin インターフェイスでの構成の変更が失われます。

rm /var/lib/proxysql/proxysql.db

または、 LOAD xxx FROM CONFIGコマンドを実行して現在の構成を上書きすることもできます。

構成ファイルのパスは/etc/proxysql.cnfです。構成ファイルを使用して、前のセクションで必要な構成項目を構成するには、次の例ではmysql_serversmysql_usersを使用します。他の項目を変更するには、 /etc/proxysql.cnfを参照してください。

mysql_servers =
(
    {
        address="127.0.0.1"
        port=4000
        hostgroup=0
        max_connections=2000
    }
)

mysql_users:
(
    {
        username = "root"
        password = ""
        default_hostgroup = 0
        max_connections = 1000
        default_schema = "test"
        active = 1
        transaction_persistent = 1
    }
)

上記の変更を有効にするには、 systemctl restart proxysqlコマンドを使用して ProxySQL を再起動します。その後、SQLite データベースが自動的に作成され、構成ファイルは無視されません。

その他の設定項目

上記の構成アイテムは必須です。オプションの設定項目については、 グローバル変数を参照してください。

4. 試してみる

テスト環境をすばやく開始するには、Docker と Docker Compose を使用できます。ポート40006033が割り当てられていないことを確認します。

git clone https://github.com/Icemap/tidb-proxysql-integration-test.git
cd tidb-proxysql-integration-test && docker-compose pull # Get the latest Docker images
sudo setenforce 0 # Only on Linux
docker-compose up -d

上記のコマンドは、TiDB と ProxySQL を統合した環境を開始し、2 つのコンテナーを実行します。 ProxySQL 6033ポートにログインするには、ユーザー名rootと空のパスワードを使用できます。コンテナーの構成の詳細については、 docker-compose.yamlを参照してください。 ProxySQL の構成の詳細については、 proxysql-docker.cnfを参照してください。

TiDB に接続するには、次のコマンドを実行します。

mysql -u root -h 127.0.0.1 -P 6033 -e "SELECT VERSION()"

結果の例は次のとおりです。

+--------------------+
| VERSION()          |
+--------------------+
| 5.7.25-TiDB-v6.1.2 |
+--------------------+

5.Configuration / コンフィグレーション例

依存関係:

  • ドッカー
  • Docker Compose
  • MySQL クライアント

サンプル コード リポジトリのクローンを作成し、サンプル ディレクトリに移動します。

git clone https://github.com/Icemap/tidb-proxysql-integration-test.git
cd tidb-proxysql-integration-test

次のセクションでは、ルート ディレクトリとしてtidb-proxysql-integration-testを使用します。

管理インターフェイスを使用して負荷分散を構成する

サンプル ディレクトリに移動します。

cd example/load-balance-admin-interface

スクリプトで実行

ProxySQL Admin Interfaceを使用して負荷分散を構成するには、次のコマンドを使用してtest-load-balance.shスクリプトを実行します。

./test-load-balance.sh

ステップバイステップで実行

前のtest-load-balance.shのスクリプトは、次のように段階的に実行できます。

  1. 3 つの TiDB コンテナーと 1 つの ProxySQL インスタンスを開始します。

    docker-compose up -d
    
    • docker-composeを使用して 3 つの TiDB コンテナーを開始します。コンテナ内のすべてのポートは4000で、ホスト ポートは40014002 、および4003です。
    • TiDB コンテナーを開始すると、ProxySQL インスタンスが開始されます。コンテナー内のProxySQL MySQL Interfaceのポートは6033で、ホスト ポートは6034です。
    • ProxySQL Admin Interfaceのポートはコンテナ内でしかアクセスできないため公開されていません。
    • プロセスの詳細については、 docker-compose.yamlを参照してください。
  2. 3 つの TiDB コンテナーで、TiDB インスタンスを区別するために、異なるデータ ( 'tidb-0''tidb-1' 、および'tidb-2' ) を使用して同じテーブル スキーマを作成します。

    mysql -u root -h 127.0.0.1 -P 4001 << EOF
    DROP TABLE IF EXISTS test.test;
    CREATE TABLE test.test (db VARCHAR(255));
    INSERT INTO test.test (db) VALUES ('tidb-0');
    EOF
    
    mysql -u root -h 127.0.0.1 -P 4002 << EOF
    DROP TABLE IF EXISTS test.test;
    CREATE TABLE test.test (db VARCHAR(255));
    INSERT INTO test.test (db) VALUES ('tidb-1');
    EOF
    
    mysql -u root -h 127.0.0.1 -P 4003 << EOF
    DROP TABLE IF EXISTS test.test;
    CREATE TABLE test.test (db VARCHAR(255));
    INSERT INTO test.test (db) VALUES ('tidb-2');
    EOF
    
  3. ProxySQL Admin Interfaceproxysql-prepare.sqlを実行するには、次のようにdocker-compose execコマンドを実行します。

    docker-compose exec proxysql sh -c "mysql -uadmin -padmin -h127.0.0.1 -P6032 < ./proxysql-prepare.sql"
    

    上記の SQL ファイルが実行され、次の操作がトリガーされます。

    1. 3 つの TiDB サーバーのホストを追加し、すべてhostgroup_id0に設定します。
    2. TiDb サーバーの構成を有効にして、ディスクに保存します。
    3. 空のパスワードを持つrootユーザーを追加し、 default_hostgroup0として設定します。これは、前のhostgroup_idの TiDB サーバーに対応します。
    4. ユーザーの構成を有効にし、ディスクに保存します。
  4. rootのユーザーでProxySQL MySQL Interfaceにログインし、次のステートメントを使用して 5 回クエリを実行します。予想される出力には、 'tidb-0''tidb-1' 、および'tidb-2'の 3 つの異なる値が含まれます。

    mysql -u root -h 127.0.0.1 -P 6034 -t << EOF
    SELECT * FROM test.test;
    SELECT * FROM test.test;
    SELECT * FROM test.test;
    SELECT * FROM test.test;
    SELECT * FROM test.test;
    EOF
    
  5. コンテナーとネットワークを停止して削除するには、次のコマンドを使用できます。

    docker-compose down
    

期待される出力

予想される出力には 3 つの異なる結果 ( 'tidb-0''tidb-1' 、および'tidb-2' ) がありますが、正確な順序は予想できません。以下は、予想される出力の 1 つです。

# ./test-load-balance.sh
Creating network "load-balance-admin-interface_default" with the default driver
Creating load-balance-admin-interface_tidb-1_1 ... done
Creating load-balance-admin-interface_tidb-2_1 ... done
Creating load-balance-admin-interface_tidb-0_1 ... done
Creating load-balance-admin-interface_proxysql_1 ... done
+--------+
| db     |
+--------+
| tidb-2 |
+--------+
+--------+
| db     |
+--------+
| tidb-0 |
+--------+
+--------+
| db     |
+--------+
| tidb-1 |
+--------+
+--------+
| db     |
+--------+
| tidb-1 |
+--------+
+--------+
| db     |
+--------+
| tidb-1 |
+--------+
Stopping load-balance-admin-interface_proxysql_1 ... done
Stopping load-balance-admin-interface_tidb-0_1   ... done
Stopping load-balance-admin-interface_tidb-2_1   ... done
Stopping load-balance-admin-interface_tidb-1_1   ... done
Removing load-balance-admin-interface_proxysql_1 ... done
Removing load-balance-admin-interface_tidb-0_1   ... done
Removing load-balance-admin-interface_tidb-2_1   ... done
Removing load-balance-admin-interface_tidb-1_1   ... done
Removing network load-balance-admin-interface_default

管理インターフェイスを使用してユーザー分割を構成する

サンプル ディレクトリに移動します。

cd example/user-split-admin-interface

スクリプトで実行

ProxySQL Admin Interfaceを使用してユーザー分割トラフィックを構成するには、次のコマンドを使用してtest-user-split.shスクリプトを実行します。

./test-user-split.sh

ステップバイステップで実行

前のtest-user-split.shのスクリプトは、次のように段階的に実行できます。

  1. 2 つの TiDB コンテナーと 1 つの ProxySQL インスタンスを開始します。

    docker-compose up -d
    
    • docker-composeを使用して 2 つの TiDB コンテナーを開始します。コンテナー内のすべてのポートは4000で、ホスト ポートは40014002です。
    • TiDB コンテナーを開始すると、ProxySQL インスタンスが開始されます。コンテナー内のProxySQL MySQL Interfaceのポートは6033で、ホスト ポートは6034です。
    • ProxySQL Admin Interfaceのポートはコンテナ内でしかアクセスできないため公開されていません。
    • プロセスの詳細については、 docker-compose.yamlを参照してください。
  2. 2 つの TiDB コンテナーで、TiDB インスタンスを区別するために、異なるデータ ( 'tidb-0''tidb-1' ) を使用して同じテーブル スキーマを作成します。

    mysql -u root -h 127.0.0.1 -P 4001 << EOF
    DROP TABLE IF EXISTS test.test;
    CREATE TABLE test.test (db VARCHAR(255));
    INSERT INTO test.test (db) VALUES ('tidb-0');
    EOF
    
    mysql -u root -h 127.0.0.1 -P 4002 << EOF
    DROP TABLE IF EXISTS test.test;
    CREATE TABLE test.test (db VARCHAR(255));
    INSERT INTO test.test (db) VALUES ('tidb-1');
    EOF
    
  3. tidb-1つのインスタンスで ProxySQL の新しいユーザーを作成します。

    mysql -u root -h 127.0.0.1 -P 4002 << EOF
    CREATE USER 'root1' IDENTIFIED BY '';
    GRANT ALL PRIVILEGES ON *.* TO 'root1'@'%';
    FLUSH PRIVILEGES;
    EOF
    
  4. ProxySQL Admin Interfaceproxysql-prepare.sqlを実行するには、次のようにdocker-compose execコマンドを実行します。

    docker-compose exec proxysql sh -c "mysql -uadmin -padmin -h127.0.0.1 -P6032 < ./proxysql-prepare.sql"
    

    上記の SQL ファイルが実行され、次の操作がトリガーされます。

    1. 2 つの TiDB サーバーのホストを追加します。 hostgroup_id of tidb-00で、 hostgroup_id of tidb-11です。
    2. TiDb サーバーの構成を有効にして、ディスクに保存します。
    3. 空のパスワードでrootユーザーを追加し、 default_hostgroup0に設定します。これは、SQL がデフォルトでtidb-0にルーティングされることを示しています。
    4. 空のパスワードでユーザーroot1を追加し、 default_hostgroup1に設定します。これは、SQL がデフォルトでtidb-1にルーティングされることを示しています。
    5. ユーザーの構成を有効にし、ディスクに保存します。
  5. rootユーザーとroot1ユーザーでProxySQL MySQL Interfaceにログインします。予想される出力には、 'tidb-0''tidb-1'の 2 つの異なる値が含まれます。

    mysql -u root -h 127.0.0.1 -P 6034 -e "SELECT * FROM test.test;"
    mysql -u root1 -h 127.0.0.1 -P 6034 -e "SELECT * FROM test.test;"
    
  6. コンテナーとネットワークを停止して削除するには、次のコマンドを使用できます。

    docker-compose down
    

期待される出力

以下は、予想される出力の 1 つです。

# ./test-user-split.sh
Creating network "user-split-admin-interface_default" with the default driver
Creating user-split-admin-interface_tidb-1_1 ... done
Creating user-split-admin-interface_tidb-0_1 ... done
Creating user-split-admin-interface_proxysql_1 ... done
+--------+
| db     |
+--------+
| tidb-0 |
+--------+
+--------+
| db     |
+--------+
| tidb-1 |
+--------+
Stopping user-split-admin-interface_proxysql_1 ... done
Stopping user-split-admin-interface_tidb-0_1   ... done
Stopping user-split-admin-interface_tidb-1_1   ... done
Removing user-split-admin-interface_proxysql_1 ... done
Removing user-split-admin-interface_tidb-0_1   ... done
Removing user-split-admin-interface_tidb-1_1   ... done
Removing network user-split-admin-interface_default

管理インターフェイスを使用してプロキシ ルールを構成する

サンプル ディレクトリに移動します。

cd example/proxy-rule-admin-interface

スクリプトで実行

ProxySQL Admin Interfaceを使用して、異なる TiDB サーバーを使用して読み取りおよび書き込み SQL を実行する (一致しない場合はdefault_hostgroupを使用する) ようにプロキシ ルールを構成するには、次のコマンドを使用してproxy-rule-split.shを実行します。

./proxy-rule-split.sh

ステップバイステップで実行

前のproxy-rule-split.shのスクリプトは、次のように段階的に実行できます。

  1. 2 つの TiDB コンテナーと 1 つの ProxySQL インスタンスを開始します。

    docker-compose up -d
    
    • docker-composeを使用して 2 つの TiDB コンテナーを開始します。コンテナー内のすべてのポートは4000で、ホスト ポートは40014002です。
    • TiDB コンテナーを開始すると、ProxySQL インスタンスが開始されます。コンテナー内のProxySQL MySQL Interfaceのポートは6033で、ホスト ポートは6034です。
    • ProxySQL Admin Interfaceのポートはコンテナ内でしかアクセスできないため公開されていません。
    • プロセスの詳細については、 docker-compose.yamlを参照してください。
  2. 2 つの TiDB コンテナーで、TiDB インスタンスを区別するために、異なるデータ ( 'tidb-0''tidb-1' ) を使用して同じテーブル スキーマを作成します。

    mysql -u root -h 127.0.0.1 -P 4001 << EOF
    DROP TABLE IF EXISTS test.test;
    CREATE TABLE test.test (db VARCHAR(255));
    INSERT INTO test.test (db) VALUES ('tidb-0');
    EOF
    
    mysql -u root -h 127.0.0.1 -P 4002 << EOF
    DROP TABLE IF EXISTS test.test;
    CREATE TABLE test.test (db VARCHAR(255));
    INSERT INTO test.test (db) VALUES ('tidb-1');
    EOF
    
  3. ProxySQL Admin Interfaceproxysql-prepare.sqlを実行するには、次のようにdocker-compose execコマンドを実行します。

    docker-compose exec proxysql sh -c "mysql -uadmin -padmin -h127.0.0.1 -P6032 < ./proxysql-prepare.sql"
    

    上記の SQL ファイルが実行され、次の操作がトリガーされます。

    1. 2 つの TiDB サーバーのホストを追加します。 hostgroup_id of tidb-00で、 hostgroup_id of tidb-11です。

    2. TiDB サーバーの構成を有効にして、ディスクに保存します。

    3. 空のパスワードでユーザーrootを追加し、 default_hostgroup0に設定します。これは、SQL がデフォルトでtidb-0にルーティングされることを示しています。

    4. ユーザーの構成を有効にし、ディスクに保存します。

    5. rule_id1として、 destination_hostgroup0として、ルール^SELECT.*FOR UPDATE$を追加します。 SQL ステートメントがこのルールに一致する場合、 hostgroup0として TiDB サーバーを使用しました (このルールは、書き込まれたデータベースにSELECT ... FOR UPDATEを転送します)。

    6. rule_id2として、 destination_hostgroup1として、ルール^SELECTを追加します。 SQL ステートメントがこのルールに一致する場合、 hostgroup1として TiDB サーバーを使用します。

    7. ルールの構成を有効にして、ディスクに保存します。

    ノート:

    一致ルールの詳細:

    • ProxySQL は、最小から最大の順にrule_idつずつルールを照合しようとします。

    • ^は SQL ステートメントの先頭に一致し、 $は末尾に一致します。

    • match_digestは、パラメーター化された SQL ステートメントに一致します。詳細については、 query_processor_regexを参照してください。

    • 重要なパラメータ:

      • digest : パラメータ化されたハッシュ値と一致します。
      • match_pattern : 生の SQL ステートメントに一致します。
      • negate_match_pattern : 値を1に設定すると、 match_digestまたはmatch_patternの一致が逆になります。
      • log : クエリをログに記録するかどうか。
      • replace_pattern : 空でない場合、これは一致したパターンを置き換えるパターンです。
    • 完全なパラメーターについては、 mysql_query_rulesを参照してください。

  4. rootユーザーでProxySQL MySQL Interfaceにログインします。

    mysql -u root -h 127.0.0.1 -P 6034
    

    次のステートメントを実行できます。

    • SELECTステートメント:

      SELECT * FROM test.test;
      

      ステートメントは、 rule_id of 2でルールに一致し、 hostgroup of 1でステートメントを TiDBサーバーtidb-1に転送することが期待されます。

    • SELECT ... FOR UPDATEステートメント:

      SELECT * FROM test.test for UPDATE;
      

      ステートメントは、 rule_id of 1でルールに一致し、 hostgroup of 0でステートメントを TiDBサーバーtidb-0に転送することが期待されます。

    • 取引:

      BEGIN;
      INSERT INTO test.test (db) VALUES ('insert this and rollback later');
      SELECT * FROM test.test;
      ROLLBACK;
      

      BEGINステートメントは、すべてのルールに一致しないことが予想されます。ユーザーのdefault_hostgroup (It is 0 ) を使用して、TiDBサーバーtidb-0 ( hostgroup is 0 ) に転送します。また、ProxySQL はデフォルトでユーザーtransaction_persistentを有効にします。これにより、同じトランザクション内のすべてのステートメントが同じhostgroupで実行されます。したがって、 INSERTステートメントとSELECT * FROM test.test;も TiDB サーバーtidb-0に転送されます ( hostgroup0です)。

  5. コンテナーとネットワークを停止して削除するには、次のコマンドを使用できます。

    docker-compose down
    

期待される出力

# ./proxy-rule-split.sh
Creating network "proxy-rule-admin-interface_default" with the default driver
Creating proxy-rule-admin-interface_tidb-1_1 ... done
Creating proxy-rule-admin-interface_tidb-0_1 ... done
Creating proxy-rule-admin-interface_proxysql_1 ... done
+--------+
| db     |
+--------+
| tidb-1 |
+--------+
+--------+
| db     |
+--------+
| tidb-0 |
+--------+
+--------------------------------+
| db                             |
+--------------------------------+
| tidb-0                         |
| insert this and rollback later |
+--------------------------------+
Stopping proxy-rule-admin-interface_proxysql_1 ... done
Stopping proxy-rule-admin-interface_tidb-0_1   ... done
Stopping proxy-rule-admin-interface_tidb-1_1   ... done
Removing proxy-rule-admin-interface_proxysql_1 ... done
Removing proxy-rule-admin-interface_tidb-0_1   ... done
Removing proxy-rule-admin-interface_tidb-1_1   ... done
Removing network proxy-rule-admin-interface_default

構成ファイルを使用して負荷分散を構成する

構成ファイルを使用して負荷分散を構成するには、次のコマンドを使用してtest-load-balance.shを実行します。

cd example/load-balance-config-file
./test-load-balance.sh

期待される出力は管理インターフェイスを使用して負荷分散を構成するの出力と同じです。唯一の変更点は、構成ファイルを使用して ProxySQL 構成を初期化することです。

ノート:

  • ProxySQL の構成は SQLite に格納されます。構成ファイルは、SQLite が作成されていない場合にのみ使用されます。

  • ProxySQL 管理インターフェイスを介した構成では次の機能がサポートされているため、構成ファイルは初期化のみに使用し、構成アイテムの変更には使用しないことをお勧めします。

    • 入力検証。
    • 任意の MySQL クライアントによるリモート構成。
    • アップタイムを最大化するためのランタイム構成 (再起動する必要はありません)。
    • ProxySQLクラスタが構成されている場合、構成を他の ProxySQL ノードに伝搬します。
エコシステム
TiDB
TiKV
TiSpark
Chaos Mesh
© 2022 PingCAP. All Rights Reserved.