万字详述 MySQL ProxySQL


万字详述 MySQL ProxySQL

文章插图
 
ProxySQL是用C++语言开发的,一个轻量级开源软件,性能和功能满足读写中间件所需的绝大多数功能,其配置数据基于SQLite存储,目前已到v2.0.13版本 。
功能方面如下:
  • 最基本的读/写分离,且方式有多种 。
  • 可定制基于用户、基于schema、基于语句的规则对SQL语句进行路由 。换句话说,规则很灵活 。基于schema和与语句级的规则,可以实现简单的sharding 。
  • 不支持分表,可以分库,但利用规则配置实现分表 。
  • 可缓存查询结果 。基本ProxySQL的缓存策略实现了基本的缓存功能,绝大多数时候够用 。支持动态加载配置,即一般可以在线修改配置,但有少部分参数还是需要重启来生效 。支持query cache 。支持对query的路由,可以针对某个语句进行分配执行实例 。
  • 监控后端节点 。ProxySQL可以监控后端节点的多个指标,包括:ProxySQL和后端的心跳信息,后端节点的read-only/read-write,slave和master的数据同步延迟性 (replication lag) 。
特性方面:
  • 连接池,而且是 multiplexing;
  • 主机和用户的最大连接数限制;
  • 自动下线后端DB;延迟超过阀值ping 延迟超过阀值网络不通或宕机
  • 强大的规则路由引擎;实现读写分离查询重写sql流量镜像
  • 支持prepared statement;
  • 支持Query Cache;
  • 支持负载均衡,与gelera结合自动failover;
  • 将所有配置保存写入到SQLit表中 。
  • 支持动态加载配置,即一般可以在线修改配置,但有少部分参数还是需要重启来生效 。
  • 支持query cache 。
  • 支持对query的路由 。
  • 不支持分表,可以分库,但是利用规则配置实现分表 。
ProxySQL:
官方站点
官方github
percona ProxySQL手册
下面基于2.0.10版本所有操作 。
安装部署安装地址
官方说明
proxysql服务器上安装MySQL客户端,用于在本机连接到ProxySQL的管理接口
一、tar.gz安装
[root@ss30 proxysql-2.0.10]# tar -xvf proxysql-2.0.10.tar.gz.gz [root@ss30 proxysql-2.0.10]# cd proxysql-2.0.10/[root@ss30 proxysql-2.0.10]# make -j 4[root@ss30 proxysql-2.0.10]# make install DESTDIR=/opt/idc/proxysql-2.0.10make[1]: Leaving directory `/opt/idc/softwares/proxysql-2.0.10/src'[root@ss30 proxysql-2.0.10]# make install DESTDIR=/opt/idc/proxysql-2.0.10install -m 0755 src/proxysql /usr/bininstall -m 0600 etc/proxysql.cnf /etcif [ ! -d /var/lib/proxysql ]; then mkdir /var/lib/proxysql ; fiCreating proxysql user and groupuseradd -r -U -s /bin/false proxysqlinstall -m 0644 systemd/system/proxysql.service /usr/lib/systemd/system/systemctl enable proxysql.serviceCreated symlink from /etc/systemd/system/multi-user.target.wants/proxysql.service to /usr/lib/systemd/system/proxysql.service.卸载:make uninstall
二、rpm包安装
rpm解压即可,会在/usr/local/proxysql 生成文件
[root@ss30 softwares]# rpm -ivh proxysql-2.0.10-1-centos7.x86_64.rpm Preparing...################################# [100%]Updating / installing...1:proxysql-2.0.10-1warning: group proxysql does not exist - using rootwarning: group proxysql does not exist - using root################################# [100%]Created symlink from /etc/systemd/system/multi-user.target.wants/proxysql.service to /etc/systemd/system/proxysql.service.三、启动服务
[root@ss30 softwares]# systemctl start proxysql[root@ss30 softwares]# ps -ef | grep proxyproxysql396410 21:01 ?00:00:00 /usr/bin/proxysql -c /etc/proxysql.cnfproxysql396539647 21:01 ?00:00:00 /usr/bin/proxysql -c /etc/proxysql.cnfroot3989774200 21:01 pts/200:00:00 grep --color=auto proxy服务命令:systemctl start | stop | restart | statu proxysql
四、配置信息
ProxySQL很少停止或重启,因为绝大多数配置都可以在线修改 。
服务启动配置文件
[root@ss30 proxysql-2.0.10]# vim /etc/systemd/system/proxysql.service [Unit]Description=High Performance Advanced Proxy for MySQLAfter=network.target[Service]Type=forkingRuntimeDirectory=proxysql#PermissionsStartOnly=true#ExecStartPre=/usr/bin/mkdir -p /var/run/proxysql /var/run/proxysql#ExecStartPre=/usr/bin/chown -R proxysql: /var/run/proxysql/ExecStart=/usr/bin/proxysql -c /etc/proxysql.cnf#PIDFile=/var/lib/proxysql/proxysql.pid#StandardError=null# all output is in stderrSyslogIdentifier=proxysqlRestart=noUser=proxysqlGroup=proxysqlPermissionsStartOnly=trueUMask=0007LimitNOFILE=102400LimitCORE=1073741824ProtectHome=yesNoNewPrivileges=trueCapabilityBoundingSet=CAP_SETGID CAP_SETUID CAP_SYS_RESOURCERestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX AF_ALGProtectSystem=fullPrivateDevices=yes[Install]WantedBy=multi-user.target


推荐阅读