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 查詢進行線上配置(無需重新啟動代理)。這是手動和自動配置的有效方法。
作為配置它的第二種方法,我們有設定檔。
若要登入管理介面(使用預設憑證),請使用 mysql 用戶端並在連接埠 (6032) 上使用下列admin
憑證進行本機連線:
$ 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 的詳細教學。
儘管設定檔只應被視為配置代理的次要方式,但我們不能放棄它作為引導全新 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
,作為字串,指向資料目錄。