TiDB を ProxySQL と統合する
このドキュメントでは、例として CentOS 7 を使用してTiDBとProxySQLを統合する方法について説明します。他のシステムを使用して統合する場合は、 試してみるセクションを参照してください。このセクションでは、 DockerおよびDocker Composeを使用してテスト統合環境をデプロイする方法を紹介しています。詳細については、次を参照してください。
1.TiDBを起動
テスト環境
TiDBのソースコードをダウンロードし、
tidb-serverのフォルダに移動してgo buildのコマンドを実行します。git clone git@github.com:pingcap/tidb.git cd tidb/tidb-server go build構成ファイル
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 エコシステム内のさまざまなクラスター コンポーネントの管理を容易にします。
TiUP をインストールします。
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | shテスト環境で TiDB を起動します。
tiup playground
本番環境
TiDB サービスをホストする必要がある場合は、 TiDB Cloudを直接使用することをお勧めします (たとえば、自分で管理できない場合や、クラウドネイティブ環境が必要な場合など)。本番環境で TiDB クラスターを構築するには、 TiDB クラスターを作成するを参照してください。
本番環境では、テスト環境よりも多くの手順が必要です。オンプレミスの本番クラスターをデプロイするには、 TiUP を使用して TiDB クラスターをデプロイするを参照して、ハードウェアの条件に基づいてデプロイすることをお勧めします。
2.ProxySQL を開始します。
ProxySQL を yum でインストールする
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 EOFProxySQL をインストールします。
yum install proxysqlProxySQL を開始します。
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 構成には、 runtime 、 memory 、およびdiskの 3 つのレイヤーがあります。 memoryレイヤーの構成のみを変更できます。構成を変更した後、 LOAD xxx TO runtimeを使用して構成を有効にするか、 SAVE xxx TO DISKを使用してディスクに保存し、構成の損失を防ぐことができます。

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が非アクティブです。activeが1の場合のみ、ユーザーはログインできます。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_serversとmysql_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 を使用できます。ポート4000と6033が割り当てられていないことを確認します。
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のスクリプトは、次のように段階的に実行できます。
3 つの TiDB コンテナーと 1 つの ProxySQL インスタンスを開始します。
docker-compose up -ddocker-composeを使用して 3 つの TiDB コンテナーを開始します。コンテナ内のすべてのポートは4000で、ホスト ポートは4001、4002、および4003です。- TiDB コンテナーを開始すると、ProxySQL インスタンスが開始されます。コンテナー内のProxySQL MySQL Interfaceのポートは
6033で、ホスト ポートは6034です。 - ProxySQL Admin Interfaceのポートはコンテナ内でしかアクセスできないため公開されていません。
- プロセスの詳細については、
docker-compose.yamlを参照してください。
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'); EOFProxySQL Admin Interfaceで
proxysql-prepare.sqlを実行するには、次のようにdocker-compose execコマンドを実行します。docker-compose exec proxysql sh -c "mysql -uadmin -padmin -h127.0.0.1 -P6032 < ./proxysql-prepare.sql"上記の SQL ファイルが実行され、次の操作がトリガーされます。
- 3 つの TiDB サーバーのホストを追加し、すべて
hostgroup_idを0に設定します。 - TiDb サーバーの構成を有効にして、ディスクに保存します。
- 空のパスワードを持つ
rootユーザーを追加し、default_hostgroupを0として設定します。これは、前のhostgroup_idの TiDB サーバーに対応します。 - ユーザーの構成を有効にし、ディスクに保存します。
- 3 つの TiDB サーバーのホストを追加し、すべて
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コンテナーとネットワークを停止して削除するには、次のコマンドを使用できます。
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のスクリプトは、次のように段階的に実行できます。
2 つの TiDB コンテナーと 1 つの ProxySQL インスタンスを開始します。
docker-compose up -ddocker-composeを使用して 2 つの TiDB コンテナーを開始します。コンテナー内のすべてのポートは4000で、ホスト ポートは4001と4002です。- TiDB コンテナーを開始すると、ProxySQL インスタンスが開始されます。コンテナー内のProxySQL MySQL Interfaceのポートは
6033で、ホスト ポートは6034です。 - ProxySQL Admin Interfaceのポートはコンテナ内でしかアクセスできないため公開されていません。
- プロセスの詳細については、
docker-compose.yamlを参照してください。
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'); EOFtidb-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; EOFProxySQL Admin Interfaceで
proxysql-prepare.sqlを実行するには、次のようにdocker-compose execコマンドを実行します。docker-compose exec proxysql sh -c "mysql -uadmin -padmin -h127.0.0.1 -P6032 < ./proxysql-prepare.sql"上記の SQL ファイルが実行され、次の操作がトリガーされます。
- 2 つの TiDB サーバーのホストを追加します。
hostgroup_idoftidb-0は0で、hostgroup_idoftidb-1は1です。 - TiDb サーバーの構成を有効にして、ディスクに保存します。
- 空のパスワードで
rootユーザーを追加し、default_hostgroupを0に設定します。これは、SQL がデフォルトでtidb-0にルーティングされることを示しています。 - 空のパスワードでユーザー
root1を追加し、default_hostgroupを1に設定します。これは、SQL がデフォルトでtidb-1にルーティングされることを示しています。 - ユーザーの構成を有効にし、ディスクに保存します。
- 2 つの TiDB サーバーのホストを追加します。
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;"コンテナーとネットワークを停止して削除するには、次のコマンドを使用できます。
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のスクリプトは、次のように段階的に実行できます。
2 つの TiDB コンテナーと 1 つの ProxySQL インスタンスを開始します。
docker-compose up -ddocker-composeを使用して 2 つの TiDB コンテナーを開始します。コンテナー内のすべてのポートは4000で、ホスト ポートは4001と4002です。- TiDB コンテナーを開始すると、ProxySQL インスタンスが開始されます。コンテナー内のProxySQL MySQL Interfaceのポートは
6033で、ホスト ポートは6034です。 - ProxySQL Admin Interfaceのポートはコンテナ内でしかアクセスできないため公開されていません。
- プロセスの詳細については、
docker-compose.yamlを参照してください。
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'); EOFProxySQL Admin Interfaceで
proxysql-prepare.sqlを実行するには、次のようにdocker-compose execコマンドを実行します。docker-compose exec proxysql sh -c "mysql -uadmin -padmin -h127.0.0.1 -P6032 < ./proxysql-prepare.sql"上記の SQL ファイルが実行され、次の操作がトリガーされます。
2 つの TiDB サーバーのホストを追加します。
hostgroup_idoftidb-0は0で、hostgroup_idoftidb-1は1です。TiDB サーバーの構成を有効にして、ディスクに保存します。
空のパスワードでユーザー
rootを追加し、default_hostgroupを0に設定します。これは、SQL がデフォルトでtidb-0にルーティングされることを示しています。ユーザーの構成を有効にし、ディスクに保存します。
rule_idを1として、destination_hostgroupを0として、ルール^SELECT.*FOR UPDATE$を追加します。 SQL ステートメントがこのルールに一致する場合、hostgroupを0として TiDB サーバーを使用しました (このルールは、書き込まれたデータベースにSELECT ... FOR UPDATEを転送します)。rule_idを2として、destination_hostgroupを1として、ルール^SELECTを追加します。 SQL ステートメントがこのルールに一致する場合、hostgroupを1として TiDB サーバーを使用します。ルールの構成を有効にして、ディスクに保存します。
ノート:
一致ルールの詳細:
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を参照してください。
rootユーザーでProxySQL MySQL Interfaceにログインします。mysql -u root -h 127.0.0.1 -P 6034次のステートメントを実行できます。
SELECTステートメント:SELECT * FROM test.test;ステートメントは、
rule_idof2でルールに一致し、hostgroupof1でステートメントを TiDBサーバーtidb-1に転送することが期待されます。SELECT ... FOR UPDATEステートメント:SELECT * FROM test.test for UPDATE;ステートメントは、
rule_idof1でルールに一致し、hostgroupof0でステートメントを TiDBサーバーtidb-0に転送することが期待されます。取引:
BEGIN; INSERT INTO test.test (db) VALUES ('insert this and rollback later'); SELECT * FROM test.test; ROLLBACK;BEGINステートメントは、すべてのルールに一致しないことが予想されます。ユーザーのdefault_hostgroup(It is0) を使用して、TiDBサーバーtidb-0(hostgroupis0) に転送します。また、ProxySQL はデフォルトでユーザーtransaction_persistentを有効にします。これにより、同じトランザクション内のすべてのステートメントが同じhostgroupで実行されます。したがって、INSERTステートメントとSELECT * FROM test.test;も TiDB サーバーtidb-0に転送されます (hostgroupは0です)。
コンテナーとネットワークを停止して削除するには、次のコマンドを使用できます。
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 ノードに伝搬します。