ProxySQL は、MySQL およびフォーク (Percona Server や MariaDB など) 用の高性能、高可用性、プロトコル対応プロキシです。その間、GPL ライセンスに伴う無制限の自由が得られます。
その開発は、高いパフォーマンスを提供するオープンソース プロキシの欠如によって推進されています。
リリースされたパッケージはここにあります: https://github.com/sysown/proxysql/releases
パッケージをダウンロードし、システム パッケージ マネージャーを使用してインストールするだけです。
wget https://github.com/sysown/proxysql/releases/download/v2.4.2/proxysql_2.4.2-ubuntu20_amd64.deb
dpkg -i proxysql_2.4.2-ubuntu20_amd64.deb
あるいは、利用可能なリポジトリを使用することもできます。
リポジトリの追加:
apt-get update && apt-get install -y --no-install-recommends lsb-release wget apt-transport-https ca-certificates
wget -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
インストール:
apt-get update
apt-get install proxysql OR apt-get install proxysql=version
リポジトリの追加:
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
インストール:
yum install proxysql OR yum install proxysql-version
リポジトリの追加:
cat > /etc/yum.repos.d/proxysql.repo << EOF
[proxysql]
name=ProxySQL YUM repository
baseurl=https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/centos/8
gpgcheck=1
gpgkey=https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/repo_pub_key
EOF
インストール:
yum install proxysql OR yum install proxysql-version
リポジトリの追加:
cat > /etc/yum.repos.d/proxysql.repo << EOF
[proxysql]
name=ProxySQL YUM repository
baseurl=https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/almalinux/ $ releasever
gpgcheck=1
gpgkey=https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/repo_pub_key
EOF
インストール:
yum install proxysql OR yum install proxysql-version
リポジトリの追加:
cat > /etc/zypp/repos.d/proxysql.repo << EOF
[proxysql]
name=ProxySQL Zypper repository
enabled=1
autorefresh=0
baseurl=https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/opensuse/ $ releasever_major
gpgcheck=1
EOF
または
zypper addrepo -g -n ' ProxySQL Zypper repository ' ' https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/opensuse/$releasever_major ' proxysql
インストール:
yum install proxysql OR yum install proxysql-version
インストール (pkg 経由):
pkg install proxysql
インストール (ポート経由):
cd /usr/ports/databases/proxysql/ && make install clean
ソフトウェアがインストールされたら、 service
コマンドを使用してプロセスを制御できます。
service proxysql start
service proxysql stop
または、管理インターフェイス経由でも次のようになります。
$ mysql -u admin -padmin -h 127.0.0.1 -P6032 --prompt='Admin> '
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 4
Server version: 5.5.30 (ProxySQL Admin Module)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
Admin> proxysql stop
service proxysql restart
または、管理インターフェイス経由でも次のようになります。
$ mysql -u admin -padmin -h 127.0.0.1 -P6032 --prompt='Admin> '
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 4
Server version: 5.5.30 (ProxySQL Admin Module)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
Admin> proxysql restart
# If you are using the init script run:
/etc/init.d/proxysql initial
# or
service proxysql initial
# If you are using the systemd unit file run:
systemctl start proxysql-initial
# or
service proxysql-initial start
新しいパッケージをインストールして ProxySQL を再起動するだけです。
wget https://github.com/sysown/proxysql/releases/download/v2.1.0/proxysql_2.1.0-ubuntu16_amd64.deb
dpkg -i proxysql_2.1.0-ubuntu16_amd64.deb
service proxysql restart
$ proxysql --version
ProxySQL version 2.1.0-544-g17a4b4a7, codename Truls
デバッグ バージョンのバージョン文字列には_DEBUG
が含まれます。非デバッグ バージョンよりも遅くなりますが、失敗した場合のデバッグが容易です。
$ proxysql --version
Main init phase0 completed in 0.000146 secs.
ProxySQL version 2.1.0-544-g17a4b4a7_DEBUG, codename Truls
admin interface
を介した ProxySQL の構成まず、ProxySQL を構成する最良の方法は、管理インターフェイスを使用することであることに留意してください。これは、管理データベースへの SQL クエリを介したオンライン構成 (プロキシを再起動する必要なし) に役立ちます。これは、手動でも自動でも構成できる効果的な方法です。
設定する 2 番目の方法として、設定ファイルがあります。
管理インターフェイス (デフォルトの認証情報で) にログインするには、mysql クライアントを使用し、次のadmin
認証情報を使用してポート (6032) でローカルに接続します。
$ mysql -u admin -padmin -h 127.0.0.1 -P6032 --prompt= ' Admin> '
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or g .
Your MySQL connection id is 4
Server version: 5.5.30 (ProxySQL Admin Module)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ' help; ' or ' h ' for help. Type ' c ' to clear the current input statement.
Admin >
注: MySQL クライアントのバージョンがバージョン 8.04 以降の場合、管理インターフェイスに接続するには、上記のコマンドに--default-auth=mysql_native_password
を追加します。
管理インターフェイスに接続すると、SQL 言語を使用してクエリできるデータベースとテーブルのリストが表示されます。
Admin > SHOW DATABASES;
+ -- ---+---------+-------------------------------+
| seq | name | file |
+ -- ---+---------+-------------------------------+
| 0 | main | |
| 2 | disk | / var / lib / proxysql / proxysql . db |
| 3 | stats | |
| 4 | monitor | |
+ -- ---+---------+-------------------------------+
4 rows in set ( 0 . 00 sec)
これにより、バックエンド サーバーのリスト、バックエンド サーバーへのトラフィックのルーティング方法、およびその他の重要な設定 (キャッシュ、アクセス制御など) を制御できるようになります。メモリ内のデータ構造を変更したら、新しい設定をランタイムにロードするか、新しい設定をディスクに保存する必要があります (プロキシの再起動後も設定が保持されるようになります)。管理インターフェイスを介して ProxySQL を構成する方法に関する詳細なチュートリアルは、ここから入手できます。
構成ファイルはプロキシを構成するための 2 番目の方法としてのみ見なされるべきですが、新しい ProxySQL インストールをブートストラップする有効な方法としてその値を破棄してはなりません。
構成ファイルの主要なセクションを簡単に見てみましょう (この概要は、ProxySQL 構成の非常に高レベルの概要として機能します)。
最上位のセクション:
admin_variables
: 管理インターフェースの機能を制御するグローバル変数が含まれます。
mysql_variables
: 受信する MySQL トラフィックを処理する機能を制御するグローバル変数が含まれています。
mysql_servers
: 管理インターフェースからのmysql_servers
テーブルの行が含まれます。基本的に、これらは、受信 MySQL トラフィックがルーティングされるバックエンド サーバーを定義します。行は.cfg
ファイル形式に従ってエンコードされます。例を次に示します。
mysql_servers =
(
{
address= " 127.0.0.1 "
port=3306
hostgroup=0
max_connections=200
}
)
mysql_users
: 管理インターフェースからのmysql_users
テーブルの行が含まれます。基本的に、これらはプロキシに接続できるユーザーと、プロキシがバックエンド サーバーに接続できるユーザーを定義します。行は.cfg
ファイル形式に従ってエンコードされます。例を次に示します。
mysql_users:
(
{
username = " root "
password = " root "
default_hostgroup = 0
max_connections=1000
default_schema= " information_schema "
active = 1
}
)
mysql_query_rules
: 管理インターフェースからのmysql_query_rules
テーブルの行が含まれます。基本的に、これらは、さまざまな基準 (一致したパターン、クエリの実行に使用されたユーザーなど) に従って、着信 MySQL トラフィックを分類およびルーティングするために使用されるルールを定義します。行は.cfg
ファイル形式に従ってエンコードされます。例を次に示します (注: この例は非常に一般的なクエリ ルーティング ルールであり、このような一般的なルールを使用するのではなく、クエリに対して特定のルールを作成することをお勧めします)。
mysql_query_rules:
(
{
rule_id=1
active=1
match_pattern= " ^SELECT .* FOR UPDATE$ "
destination_hostgroup=0
apply=1
},
{
rule_id=2
active=1
match_pattern= " ^SELECT "
destination_hostgroup=1
apply=1
}
)
最上位の構成項目: データ ディレクトリを指す文字列としてのdatadir
。