MySQL · 2 min read · Sep 26, 2025
Debian 11にProxySQLを使用して負荷分散MySQLサーバーをインストールする方法

ProxySQLは、VM、K8s、ベアメタル、Dockerコンテナなどの複数の環境にインストールできる小型の高性能MySQLプロキシです。ProxySQLはオープンソースのソリューションで、接続の多重化をサポートし、書き込みをプライマリにルーティングするクエリルールを提供し、レプリカ間で読み取りを分散させることでMySQLクラスタの高可用性を提供します。
ProxySQLは、AMD64(x86_64)およびARM64に準拠しています。アプリケーション用のアプリケーション層プロキシを提供し、フェイルオーバー検出を伴う高度なクエリも提供します。
このガイドでは、Debian 11サーバー上でProxySQLを介してMySQLクラスタの負荷分散をインストールおよび設定します。Percona XtraDBクライアントを使用してProxySQL v2をインストールし、次にProxySQLにPercona XtraDBクラスタを追加し、ProxySQL監視ユーザーを設定し、アプリケーションで使用するデータベースとユーザーを追加します。
前提条件
このガイドを始めるには、以下の要件が必要です:
- Debian 11システムを実行しているLinuxサーバー - この例では、ホスト名が「 proxysql-deb 」のDebianサーバーを使用します。
- sudo/root管理者権限を持つ非rootユーザー。
- 完全に構成されたMySQLクラスタまたはPercona XtraDBクラスタ。
それだけです。すべての要件が整ったら、ProxySQLのインストールを開始できます。
リポジトリの設定
このガイドの最初のステップは、ProxySQLとPercona XtraDBのリポジトリをサーバーに追加することです。Percona XtraDBリポジトリは、ProxySQLが必要とする「 percona-xtradb-cluster-client 」パッケージをインストールするために使用されます。
まず、以下のaptコマンドを入力して基本的な依存関係をいくつかインストールします。プロンプトが表示されたらyを入力し、ENTERを押して続行します。
sudo apt install wget gnupg2 lsb-release curl apt-transport-https ca-certificates
次に、Percona XtraDBのリポジトリファイルをダウンロードし、以下の「 dpkg 」コマンドを介してインストールします。
wget -q https://repo.percona.com/apt/percona-release_latest.generic_all.deb
sudo dpkg -i percona-release_latest.generic_all.deb
次に、以下のaptコマンドを使用してDebianパッケージインデックスを更新およびリフレッシュします。新しいPercona XdtraDBリポジトリが追加されたことを確認できます。
sudo apt update次に、「 percona-release 」コマンドを入力して、Percona XtraDBクラスタ8.0リポジトリを有効にします。
sudo percona-release setup pxc80
Percona XtraDBリポジトリが追加されたので、次のコマンドを実行してProxySQLのGPGキーとリポジトリを追加します。
wget -q -nv -O /etc/apt/trusted.gpg.d/proxysql-2.4.x-keyring.gpg 'https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/repo_pub_key.gpg'
echo deb https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/$(lsb_release -sc)/ ./ | tee /etc/apt/sources.list.d/proxysql.list新しいリポジトリを適用するために、再度Debianパッケージインデックスを更新およびリフレッシュします。
sudo apt update
Percona XtraDBとProxySQLの両方のリポジトリが追加されたので、ProxySQLとPercona XtraDBクライアントパッケージをインストールできます。
ProxySQLとPercona XtraDBクラスタクライアントのインストール
このセクションでは、Percona XtraDBクライアントパッケージとともにProxySQL v2パッケージをインストールします。以下のaptコマンドを入力して、ProxySQLとPercona XtraDBクライアントパッケージの両方をインストールします。
sudo apt install proxysql2 percona-xtradb-cluster-clientプロンプトが表示されたら、yを入力して確認し、ENTERを押して続行します。

ProxySQLがインストールされると、自動的に実行され、システム起動時に自動的に開始されます。以下のsystemctlコマンドユーティリティを入力して、ProxySQLサービスのステータスを確認します。
sudo systemctl is-enabled proxysql
sudo systemctl start proxysql出力「 enabled 」は、ProxySQLがシステム起動時に自動的に開始されることを確認します。そして、出力「 active (running) 」は、ProxySQLが実行中であることを確認します。

次に、以下のmysqlコマンドを入力して、デフォルトのユーザーとパスワード「 admin 」でProxySQLサーバーにログインします。
mysql -u admin -padmin -h 127.0.0.1 -P 6032 --prompt='proxysql-deb> '成功すると、次のようにProxySQLシェルが表示されます。Percona XtraDBクライアントを介してProxySQL管理モジュールに接続しました。

次に、以下のクエリを入力してProxySQLサーバー上のデータベースのリストを取得します。ProxySQLサーバー上に複数のデータベースが利用可能であることが確認できます。
SHOW DATABASES;
ProxySQLサーバーとPercona XtraDBクラスタクライアントがインストールされたので、MySQLまたはPercona XtraDBクラスタをProxySQLサーバーに追加し、負荷分散を設定する準備が整いました。
MySQLクラスタ/Percona XtraDBクラスタをProxySQLに追加
ProxySQLサーバーをインストールした後に行う最初のステップは、MySQLまたはPercona XtraDBクラスタをProxySQLサーバーに追加することです。これはProxySQLシェルを介して実現できます。この例では、以下の詳細を持つPercona XtraDBクラスタを使用します:
ホスト名 IPアドレス ポート
---------------------------------
pxc01 192.168.5.15 3306
pxc02 192.168.5.16 3306
pxc03 192.168.5.17 3306始める前に、ProxySQLシェルにログインしていることを確認してください。次に、以下のクエリを入力してMySQLサーバーをProxySQLに追加します。IPアドレスとポートの詳細をMySQLクラスタの詳細に変更してください。
INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (0,'192.168.5.15',3306);
INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (0,'192.168.5.16',3306);
INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (0,'192.168.5.17',3306);出力「 Query OK, 1 row affected 」は、MySQLサーバーがProxySQLサーバーに追加されたことを確認します。

以下のクエリを入力して、ProxySQLで利用可能なMySQLサーバーのリストを確認します。ProxySQLサーバーに3つのMySQLサーバーが追加されたことが確認できます。
SELECT * FROM mysql_servers;MySQLまたはPercona XtraDBクラスタがProxySQLに追加されたので、次にProxySQLでPercona XtraDBクラスタの監視を設定する必要があります。
ProxySQL監視ユーザーの設定
MySQLまたはPercona XtraDBクラスタが正常であることを確認するために、ProxySQLはすべての利用可能なMySQLサーバーのバックエンドを継続的に監視します。これを実現するには、Percona XtraDBクラスタに新しいユーザーを作成し、次にProxySQLサーバーで監視ユーザーを定義する必要があります。
Percona XtraDBクラスタサーバーにログインし、「mysql」コマンドを介してMySQLシェルにアクセスし、以下のMySQLクエリを実行して、新しいユーザー「monitor」をパスワード「monitor」で作成します。
CREATE USER 'monitor'@'%' IDENTIFIED WITH mysql_native_password by 'monitor';
GRANT USAGE ON *.* TO 'monitor'@'%';
FLUSH PRIVILEGES;SELECT USER,host FROM mysql.user;
SHOW GRANTS FOR 'monitor'@'%';次に、ProxySQLサーバーに移動し、以下のクエリを実行してPercona XtraDBクラスタの監視に使用されるユーザーを定義します。これにより、デフォルトの変数「 mysql-monitor_username 」がユーザー「monitor」に、変数「 mysql-monitor_password 」がパスワード「 monitor 」に変更されます。
UPDATE global_variables SET variable_value='monitor' WHERE variable_name='mysql-monitor_username';
UPDATE global_variables SET variable_value='monitor' WHERE variable_name='mysql-monitor_password';以下のクエリを入力して、ProxySQLサーバーでPercona XtraDBクラスタの監視のための追加のパラメータを更新します。
UPDATE global_variables SET variable_value='2000' WHERE variable_name IN ('mysql-monitor_connect_interval','mysql-monitor_ping_interval','mysql-monitor_read_only_interval');ProxySQLサーバー内の「 global_variables 」で行った変更を保存するために、以下のクエリを実行します。
LOAD MYSQL VARIABLES TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;このような出力が得られるはずです。
次に、以下のクエリを実行して、ProxySQLサーバーの「 global_variables 」の「 mysql-monitor_ 」のリストを確認します。
SELECT * FROM global_variables WHERE variable_name LIKE 'mysql-monitor_%';次のような出力が得られるはずです - 変数「mysql-monitor_username」はユーザー「monitor」として値を持ち、変数「mysql-monitor_password」はパスワード「monitor」として値を持ちます。また、変数「mysql-monitor_connect_interval」、「mysql-monitor_ping_interval」、「mysql-monitor_read_only_interval」の値が「 2000 」に変更されていることも確認できます。

最後に、以下のクエリを入力して、ProxySQLサーバーでのPercona XtraDBクラスタの監視ステータスを確認します。これにより、ProxySQLサーバーからすべての利用可能なPercona XtraDBクラスタサーバーへの最後のログステータスと最後のpingのログが表示されます。
SELECT * FROM monitor.mysql_server_connect_log ORDER BY time_start_us DESC LIMIT 6;
SELECT * FROM monitor.mysql_server_ping_log ORDER BY time_start_us DESC LIMIT 6;成功すると、次のような出力が得られるはずです。
ProxySQLサーバーからPercona XtraDBクラスタへの最後の接続ログ。

ProxySQLサーバーからPercona XtraDBクラスタへの最後のpingログ。

MySQLまたはPercona XtraDBクラスタがProxySQLサーバーによって監視されているので、次にアプリケーションが使用する新しいユーザーを設定する準備が整いました。
アプリケーション用のデータベースユーザーの設定
ProxySQLサーバーがインストールおよび構成され、MySQLまたはPercona XtraDBクラスタがデータベースバックエンドとして追加されたので、アプリケーションが使用する新しいユーザーを設定します。したがって、アプリケーションはMySQLサーバーに直接接続するのではなく、デフォルトでポート「 6033 」で実行されているProxySQLサーバーに接続する必要があります。
アプリケーション用の新しいユーザーを設定するには、以下の手順を実行する必要があります:
- MySQLクラスタまたはPercona XtraDBクラスタに新しいユーザーを作成し、権限を設定します。
- Percona XtraDBクラスタのユーザーをProxySQLサーバーに追加します - テーブル「 mysql_users 」に挿入します。
まず、Percona XtraDBクラスタサーバーに戻り、rootユーザーを介してMySQLシェルにログインします。次に、新しいMySQLユーザーを作成し、そのユーザーにすべてのデータベースにアクセスする権限を付与します。以下のクエリを入力します。この例では、新しいユーザー「 sbuser 」をパスワード「 sbpass 」で作成します。また、IPアドレス「 192.168.5.85 」をProxySQLサーバーのIPアドレスに変更してください。
CREATE USER 'sbuser'@'192.168.5.85' IDENTIFIED WITH mysql_native_password by 'sbpass';
GRANT ALL PRIVILEGES ON *.* TO 'sbuser'@'192.168.5.85';
FLUSH PRIVILEGES;次に、ProxySQLサーバーに戻り、以下のクエリを実行して新しいMySQLユーザーをProxySQLサーバーに追加します。MySQLユーザーはProxySQLサーバーの「 mysql_users 」テーブルに追加される必要があります。また、この記事執筆時点では、ProxySQLサーバーはまだ暗号化されたパスワードをサポートしていません。
INSERT INTO mysql_users (username,password) VALUES ('sbuser','sbpass');次に、以下のクエリを入力してProxySQLサーバーでの変更を確認し、保存します。これで、新しいユーザーが準備完了となり、アプリケーションでこのMySQLユーザーを使用できます。
LOAD MYSQL USERS TO RUNTIME;
SAVE MYSQL USERS TO DISK;
これで、アプリケーションはユーザー「 sbuser 」とパスワード「 sbpass 」を使用してProxySQLサーバーに接続し、ポート 6033 を使用する必要があります。
データベースとユーザーの確認
このセクションでは、作成したユーザーとパスワードを使用してProxySQLサーバーに接続することで、ProxySQLのインストールを確認します。
以下の「mysql」コマンドを入力して、新しいユーザー「sbuser」とパスワード「sbpass」でProxySQLサーバーにログインします。成功すると、ProxySQLサーバーシェルが表示されます。
mysql -u sbuser -psbpass -h 127.0.0.1 -P 6033 --prompt='proxysql-deb> '
以下のクエリを入力して、Percona XtraDBクラスタ上のデータベースのリストを確認します。この例では、Percona XtraDBクラスタに「 percona 」という1つのデータベースがあります。
show databases;「 percona 」データベースに「 USE 」クエリを介して切り替えます。
use percona
次に、以下のクエリを入力して「 percona 」データベース上のテーブルのリストを確認します。その後、現在作業中のデータベースの利用可能なデータを取得します。
show tables;
select * from example;次のような出力が得られるはずです - Percona XtraDBクラスタに保存されているデータベースはProxySQLサーバーからアクセス可能です。これは、Percona XtraDBクラスタの負荷分散用にProxySQLをインストールすることが成功したことを意味します。

次に、以下のクエリを入力して「 percona 」データベースと「 example 」テーブルに新しいデータを挿入します。
INSERT INTO percona.example VALUES (4, 'pxc04');
INSERT INTO percona.example VALUES (5, 'pxc05');次に、以下のクエリを使用して新しく更新されたデータを再確認します。成功すると、「 example 」テーブルに新しいデータが利用可能であることが確認できます。これにより、ユーザーがPercona XtraDBクラスタのデータベースに読み取りと書き込みができることが確認されます。
select * from example;
最後に、新しいデータがPercona XtraDBクラスタに更新されていることを確認するために、Percona XtraDBクラスタサーバーから直接確認する必要があります。
Percona XtraDBクラスタサーバーにログインし、rootユーザーを介してMySQLシェルにアクセスし、次のクエリを実行して「 percona 」データベースの「 example 」テーブルからデータを取得します。
select * from percona.example;成功すると、ProxySQLサーバーを介して追加した新しいデータが得られるはずです。

このことを考慮すると、MySQLクラスタまたはPercona XtraDBクラスタの負荷分散用にProxySQLサーバーをインストールすることが成功しました。
結論
このガイドでは、Debian 11サーバー上でProxySQLを介してMySQLクラスタまたはPercona XtraDBクラスタの負荷分散を構成しました。ProxySQLv2をインストールし、Percona XtraDBクラスタをProxySQLに追加し、ProxySQLでPercona XtraDBクラスタの監視を構成しました。
さらに、アプリケーションで使用できるMySQLまたはPercona XtraDBクラスタユーザーを作成および構成しました。また、ProxySQLを介してMySQLクラスタまたはPercona XtraDBクラスタの負荷分散を確認し、データベースサーバーとアプリケーションの高可用性とフォールトトレランスを実現しました。
これにより、負荷分散データベースサーバーにさらにPercona XtraDBクラスタノードを追加できます。また、ProxySQLを介して読み取り/書き込みの分割を設定し、ProxySQLシャーディングを設定し、ProxySQLからPercona XtraDBクラスタへのSSL接続を設定できます。ProxySQLの詳細については、ProxySQLの公式ドキュメントを参照してください。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。