在这篇文章中,我们将看看如何部署ProxySQL。
ProxySQL是一个高性能的代理,目前MySQL和叉子(如raybetapp 和MariaDB)。它充当一个中间人的客户机请求从数据库中寻找资源。它被Rene Cannao为dba创建,解决复杂的复制拓扑问题的一种手段。在抚养ProxySQL我的客户时,我总是在哪里适用于架构问题。这篇文章应该澄清这一点。
在继续之前,您可能想知道为什么你应该使用这个软件。感兴趣的特性包括:
- MySQL防火墙
- 连接池
- 碎片查找和自动路由
- 读/写分裂的能力
- 自动切换到另一个主人的活跃主人失败
- 查询缓存
- 性能指标
- 其他的功能!
初始配置
一般来说,你将它安装在节点没有运行MySQL数据库。你通过MySQL命令行管理它在另一个端口,通常6032。一旦开始在不使用/ etc的配置,在CLI和你所做的一切。后端数据库实际上是SQLite,并存储在/var/lib/proxysql. db文件
初始化上有很多指导和安装它,所以我不会讨论这些细节。它可以很简单,比如:
|
1
|
恰当的
- - - - - -
得到
安装
proxysql
|
ProxySQL架构
虽然大多数第一次觉得ProxySQL安装在一个独立的应用程序和数据库之间的节点,这有可能影响查询性能由于额外的延迟从网络跃点。

对性能的影响最小(和避免额外的网络跃点),许多建议在应用程序服务器上安装ProxySQL。然后,应用程序连接到ProxySQL localhost(作为一个MySQL服务器),使用Unix域套接字,避免额外的延迟。它将使用路由规则伸手跟实际的MySQL服务器的连接池。应用程序不知道之后会发生什么ProxySQL的连接。

减少网络攻击表面
另一个考虑是减少网络攻击表面。这意味着试图控制所有可能的漏洞在网络的硬件和软件,可让未经身份验证的用户。
雷竞技下载官网Percona通常表明你把每个应用程序主机上ProxySQL实例,就像第二个上图。这个建议的确是有效减少延迟在数据库环境中(通过限制网络跳跃)。虽然这对性能是好的,它可以对安全不利。
每个实例必须能够跟:
- 每一个主
- 每一个奴隶
你可以想象,这是一个安全的噩梦。每一个实例,你有x更多的连接生成您的网络。这是x攻击者可能利用更多的连接。
相反,最好可以有一个或多个应用程序和MySQL服务器之间ProxySQL实例(如第一次上图)。这提供了一个合理的DMZ-type设置,防止通过网络打开太多的连接。
也就是说,体系结构是有效的生产配置,这取决于您的需求。





问题从安东尼Affee在facebook上“你有一个好的HA设置ProxySQL吗?我希望它有一个本地的解决方案,而不是建议我有见过的。”
现在keepalive等使其HA是最好的方法。
Proxysql现在支持集群。
你能解释一下如何让应用程序层说proxysql集群?
嗨Manjot proxysql支持windows ? ?
嗨,阿卜杜拉
谢谢你的问题。
不,没有windows支持…当前版本是列在这里https://github.com/sysown/proxysql/releases
关于安全问题,
如果你把一切都在一个私人局域网(只创建一个VLAN-tagged网络服务器)之间,ProxySQL之间的连接和MySQL实例将隐藏与外界的联系。所以图片# 2所有连接在VLAN将做这项工作。