MySQL中间件之ProxySQL(1):简介和安装
程序员文章站
2022-04-06 17:10:39
1.ProxySQL简介 之前的文章里,介绍了一个MySQL的中间件:MySQL Router。详细内容参见: "MySQL Router实现MySQL的读写分离" 。 这里准备用一个系列来详细介绍一个能实实在在用在生产环境的MySQL中间件:ProxySQL。它有两个版本:官方版和percona版 ......
1.ProxySQL简介
之前的文章里,介绍了一个MySQL的中间件:MySQL Router。详细内容参见:。
这里准备用一个系列来详细介绍一个能实实在在用在生产环境的MySQL中间件:ProxySQL。它有两个版本:官方版和percona版,percona版是在官方版的基础上修改的,添加了几个比较实用的工具。在我这个系列文章中,我使用的是官方版。
官方站点:
官方github:
官方手册:
percona ProxySQL手册:
我已经将ProxySQL的官方手册进行了翻译,请参见我的github wiki: 。我也将翻译版的markdown文件导出为了pdf,各位可下载: 。
ProxySQL是用C++语言开发的,虽然也是一个轻量级产品,但性能很好(据测试,能处理千亿级的数据),功能也足够,能满足中间件所需的绝大多数功能,包括:
- 最基本的读/写分离,且方式有多种。
- 可定制基于用户、基于schema、基于语句的规则对SQL语句进行路由。换句话说,规则很灵活。基于schema和与语句级的规则,可以实现简单的sharding。
- 可缓存查询结果。虽然ProxySQL的缓存策略比较简陋,但实现了基本的缓存功能,绝大多数时候也够用了。此外,作者已经打算实现更丰富的缓存策略。
- 监控后端节点。ProxySQL可以监控后端节点的多个指标,包括:ProxySQL和后端的心跳信息,后端节点的read-only/read-write,slave和master的数据同步延迟性(replication lag)。
2.安装ProxySQL
以 CentOS 的 rpm 包为例。
cat <<EOF | tee /etc/yum.repos.d/proxysql.repo [proxysql_repo] name= ProxySQL baseurl=http://repo.proxysql.com/ProxySQL/proxysql-1.4.x/centos/\$releasever gpgcheck=1 gpgkey=http://repo.proxysql.com/ProxySQL/repo_pub_key EOF
然后直接安装即可。
yum -y install proxysql
或者直接去github上下载rpm包或源码包:
默认情况下,rpm安装的ProxySQL只提供了SysV风格的服务脚本/etc/init.d/proxysql
。所以,可通过该脚本管理ProxySQL的启动、停止等功能。
[root@xuexi ~]# /etc/init.d/proxysql --help Usage: ProxySQL {start|stop|status|reload|restart|initial}
例如:
service proxysql start # 启动proxysql service proxysql stop # 停止proxysql service proxysql status # 查看proxysql状态
如果想要通过systemd管理ProxySQL,可在/usr/lib/systemd/system/proxysql.service
中写入如下内容:
[root@xuexi ~]# vim /usr/lib/systemd/system/proxysql.service [Unit] Description=High Performance Advanced Proxy for MySQL After=network.target [Service] Type=simple User=mysql Group=mysql PermissionsStartOnly=true LimitNOFILE=102400 LimitCORE=1073741824 ExecStartPre=/bin/mkdir -p /var/lib/proxysql ExecStartPre=/bin/chown mysql:mysql -R /var/lib/proxysql /etc/proxysql.cnf ExecStart=/usr/bin/proxysql -f Restart=always
一般来说,ProxySQL很少停止或重启,因为绝大多数配置都可以在线修改。
上一篇: DB设计工具——dbschema