1.1 版本
proxysql 版本:1.4.15 #发布时间:2019.2.15
操作系统:CentOS 7.5
1.2 端口预分配
实例1:proxysql 6042 6043
实例2:proxysql 6052 6053
实例3:proxysql 6062 6063
注:其中60x2为管理端口,60x3为应用端口
1.2 系统配置
#关闭selinux
sed -i '/^SELINUX/s/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
setenforce 0
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#安装依赖
yum -y install perl-DBD-MySQL
#优化限制参数
vi /etc/security/limits.conf
* hard nofile 65535
* soft nofile 10240
2.1 下载安装
#下载
wget https://github.com/sysown/proxysql/releases/download/v1.4.15/proxysql-1.4.15-1-centos7.x86_64.rpm
#安装
yum -y install proxysql-1.4.15-1-centos7.x86_64.rpm
#查看
proxysql --version #查看版本
[root@localhost opt]# rpm -ql proxysql #查看安装路径
/etc/init.d/proxysql
/etc/proxysql.cnf
/usr/bin/proxysql
/usr/share/proxysql/tools/proxysql_galera_checker.sh
/usr/share/proxysql/tools/proxysql_galera_writer.pl
2.2 修改配置文件
#增加配置文件
cp /etc/proxysql.cnf /etc/proxysql6042.cnf
cp /etc/proxysql.cnf /etc/proxysql6052.cnf
cp /etc/proxysql.cnf /etc/proxysql6062.cnf
#创建所需目录,并赋予权限
mkdir -p /var/lib/{proxysql6042,proxysql6052,proxysql6062}
chown -R proxysql.proxysql /var/lib/{proxysql6042,proxysql6052,proxysql6062}
#修改proxysql6042.cnf
vi /etc/proxysql6042.cnf #只修改以下3个地方
datadir="/var/lib/proxysql6042"
mysql_ifaces="0.0.0.0:6042"
interfaces="0.0.0.0:6043"
#按照上述方法依次修改proxysql6052.cnf 、proxysql6052.cnf
2.3 配置自启服务
1>生成启动文件ProxySQL6042.service
vi /usr/lib/systemd/system/ProxySQL6042.service
[Unit]
Description=ProxySQL6042 Service
After=syslog.target
After=network.target
[Service]
USER="proxysql"
ulimit -n 102400
ulimit -c 1073741824
Type=simple
Restart=on-abort
PIDFile=/var/lib/ProxySQL6042/proxysql.pid
ExecStart=/usr/bin/ProxySQL6042 -c /etc/proxysql6042.cnf -D /var/lib/ProxySQL6042 PrivateTmp=true
[Install]
WantedBy=multi-user.target
#安装上述方法生成ProxySQL6042.service、ProxySQL6042.service,只需修改端口号
2>配置启动服务
cp /usr/bin/proxysql /usr/bin/proxysql6042
cp /usr/bin/proxysql /usr/bin/proxysql6052
cp /usr/bin/proxysql /usr/bin/proxysql6062
2.4 配置启动文件
借助默认启动文件(/etc/init.d/proxysql)增加:proxysql6042、proxysql6052、proxysql6062
cp /etc/init.d/proxysql /etc/init.d/proxysql6042
cp /etc/init.d/proxysql /etc/init.d/proxysql6052
cp /etc/init.d/proxysql /etc/init.d/proxysql6062
#依次修改三个启动文件脚本,下面列出了需要修的行号和具体内容
vi /etc/init.d/proxysql6042
19 OLDDATADIR="/var/run/proxysql6042" # proxysql 改为 proxysql6042
20 DATADIR="/var/lib/proxysql6042"
21 OPTS="-c /etc/proxysql6042.cnf -D $DATADIR"
84 proxysql6042 $OPTS # 新的启动
107 for i in `pidof proxysql6042` ; do # pgrep proxysql 改为 pidof proxysql6042
144 for i in `pidof proxysql6042` ; do
197 echo "Usage: ProxySQL6042 {start|stop|status|reload|restart|initial}"
#把pgrep改成pidof,这是因为通过pgrep找到了所有的proxysql实例的进程号,会引起误操作,单实例ProxySQL可以不修改。
2.5 设置开机自启
/sbin/chkconfig proxysql6042 on
/sbin/chkconfig proxysql6052 on
/sbin/chkconfig proxysql6062 on
/sbin/chkconfig proxysql off #关闭默认端口服务
[root@localhost opt]# /sbin/chkconfig --list
proxysql 0:关 1:关 2:关 3:关 4:关 5:关 6:关
proxysql6042 0:关 1:关 2:开 3:开 4:开 5:开 6:关
proxysql6052 0:关 1:关 2:开 3:开 4:开 5:开 6:关
proxysql6062 0:关 1:关 2:开 3:开 4:开 5:开 6:关
至此,多实例部署完成!!!
3.1 自启服务启动测试
systemctl daemon-reload
systemctl stop proxysql6042
systemctl start proxysql6042
systemctl status proxysql6042
systemctl daemon-reload
systemctl stop proxysql6052
systemctl start proxysql6052
systemctl status proxysql6052
systemctl daemon-reload
systemctl stop proxysql6062
systemctl start proxysql6062
systemctl status proxysql6062
3.2 手动启动测试
/etc/init.d/proxysql6042 start
/etc/init.d/proxysql6052 start
/etc/init.d/proxysql6062 start
注:如果proxysql使用--idle-threads选项启动,每个worker线程都会伴随启动一个auxiliary线程。每个worker线程以及它的auxiliary线程一起工作:第一个线程处理活动的连接,并将所有的空闲连接派遣到第二个线程上,但第二个线程只要等待到了发生在空闲连接上的一个事件(或超时),就会将连接还给第一个线程。当活动的客户端连接数量远少于空闲客户端连接数量时,强烈建议使用"idle threads"。这使得ProxySQL可以处理几十万个连接(测试时是100W个连接)。
3.3 查看
ps aux|grep proxysql
proxysql 5571 S 16:30 0:00 proxysql6042 -c /etc/proxysql6042.cnf -D /var/lib/proxysql6042
proxysql 5572 Sl 16:30 0:00 proxysql6042 -c /etc/proxysql6042.cnf -D /var/lib/proxysql6042
proxysql 5628 S 16:30 0:00 proxysql6052 -c /etc/proxysql6052.cnf -D /var/lib/proxysql6052
proxysql 5629 Sl 16:30 0:00 proxysql6052 -c /etc/proxysql6052.cnf -D /var/lib/proxysql6052
proxysql 5676 S 16:30 0:00 proxysql6062 -c /etc/proxysql6062.cnf -D /var/lib/proxysql6062
proxysql 5677 Sl 16:30 0:00 proxysql6062 -c /etc/proxysql6062.cnf -D /var/lib/proxysql6062
#查看端口
netstat -nultp |grep proxysql
tcp 0 0 0.0.0.0:6052 0.0.0.0:* LISTEN 5629/proxysql6052
tcp 0 0 0.0.0.0:6053 0.0.0.0:* LISTEN 5629/proxysql6052
tcp 0 0 0.0.0.0:6062 0.0.0.0:* LISTEN 5677/proxysql6062
tcp 0 0 0.0.0.0:6063 0.0.0.0:* LISTEN 5677/proxysql6062
tcp 0 0 0.0.0.0:6042 0.0.0.0:* LISTEN 5819/proxysql6042
tcp 0 0 0.0.0.0:6043 0.0.0.0:* LISTEN 5819/proxysql6042
[root@localhost ~]# pstree |grep proxysql
|-proxysql6042---proxysql6042---18*[{proxysql6042}]
|-proxysql6052---proxysql6052---18*[{proxysql6052}]
|-proxysql6062---proxysql6062---18*[{proxysql6062}]