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
,作为字符串,指向数据目录。