公司新的MYSQL 架构即将上架,而使用什么中间件来解决开发和运维在以前传统MYSQL 搭建中遇到的问题,为什么使用PROXYSQL 来解决以前解决不了的问题。
Q&A
Why ProxySql ?
1 免费
2 功能包含故障转移,读写分离,对MYSQL MGR 属于原生支持 (1.4版本后)
3 目前版本更新较快
4 MYSQL 三大厂商之一, Percona 支持
5 配置简单,可以后期维护可以考虑嵌入DOCKER,减少运维压力(MYSQL 集群扩张)
6 后续的延展和支持,已经在GITHUB页面有相关MYSQL 8 支持
Function:
1 查询路由,通过PROXYSQL 可以将不同的语句发送到不同的MYSQL集群的机器中去起到读写分离,根据内定在PROXYSQL的规则,以及HOSTGROUP 概念将复杂的语句进行分类发送到不同的MYSQL机器上达到其他预定的功能。
2 支持Failover, 本身PROXYSQL 并没有内置相关的功能,但可以通过探测当前数据库集群的状态来判断集群中那个机器失效,并自动阻断客户程序访问到这台机器,保证
3 某些中间件在重新设置规则后,需要重新启动才能生效,PROXYSQL 可以直接设置后FLash到内存和本地,保证7*24的service
4 ProxxySQL支持应用层的上的代理,不存在底层的设置造成的配置困难和不必要的麻烦
5 语句防火墙,可以根据某些规则的指定,将某些例如 没有where的 select语句弹出执行队列,以强制性的方法来规范开发某些语句的撰写。
performance:
根据PROXYSQL 官方网站的简短的介绍,根据不同的硬件配置,PROXYSQL 可以支持成百上千的同时的连接。
Compare:
以下是对PROXYSQL 与其他中间件对比
Haproxy 是目前最常用的各种数据库的代理软件
Mysql router 官方的mysql 代理软件
Item | proxysql | HAproxy | mysql router |
mysql Group replication | yes | no | yes |
mysql master/slave | yes | yes | no |
mysql native protocols | yes | no | no |
remote control | yes | no | no |
connection pooling | yes | no | no |
sql firewall | yes | no | no |
caching by query | yes | no | no |
Streaming to Kafka | no | no | no |