所以当涉及到路由你的MySQL流量时,存在几个选项。
现在我已经看到HAproxy更经常地与客户使用,这是非常简单的设置。 Percona为那些感兴趣的人提供了一个例子:
我个人喜欢ProxySQL。 Percona也很少有这方面的博客
- https://github.com/sysown/proxysql/wiki/ProxySQL-Configuration
- https://www.percona.com/blog/2017/01/19/setup-proxysql-for-high-availability-not-single-point-failure/
- https://www.percona.com/blog/2017/01/25/proxysql-admin-configuration/
- https://www.percona.com/blog/2016/09/15/proxysql-percona-cluster-galera-integration/
Percona也有ProxySQL版本可用
我想我会写一些例子,但是整个Percona已经很好地解释了这一点。 我不想从这些帖子中拿走任何东西,而是指出通过这些网址可以获得很多好的信息。 因此,我不会重写已写入的内容,而会为感兴趣的人创建一组信息。
首先比较并决定你自己需要和想要什么。 当然,下面的链接会偏向ProxySQL,但它给你一个全面的范围供你考虑。
如果您拥有一个群集或主控要掌握,并且您不关心写vs vs读取到哪个服务器,只要您有连接; 那么HAproxy可能是一个简单的快速设置。
ProxySQL的优势在于能够以加权的方式对流量进行分类,简单易行。 所以你可以写入节点1,并从节点2和节点3选择拉。有关这方面的文档可以在这里找到:
是的,它可以通过HAproxy完成,但您必须相应地指导应用程序。
这是根据您的查询规则在ProxySQL中处理的。
现在显而易见的问题是:好的,那么如何让ProxySQL不会成为单点故障?
你可以投资是一个强大的负载平衡器等等等等......抛硬件......或者让自己容易,支持开源并使用KeepAlive d。 这是非常容易设置,所有这些都记录在这里:
- https://www.percona.com/blog/2017/01/19/setup-proxysql-for-high-availability-not-single-point-failure/
- http://www.keepalived.org/doc/
- 公平地说,keepalived和HAproxy也是一个例子
- https://andyleonard.com/2011/02/01/haproxy-and-keepalived-example-configuration/
如果你曾经处理lua和mysql-proxy ,ProxySQL和Keepalived应该对你来说非常简单。 如果您仍然希望出于某种原因: https : //launchpad.net/mysql-proxy
无论您选择HAproxy,ProxySQL还是其他解决方案,您都需要确保一旦发生单点故障而不会更换另一个故障点,并且keepalived非常适合。 如果你正在使用代理,那么没有这么做的理由是没有的。
所以ProxySQL上还有更多的东西。
- 如果您通过报告或监控跟踪连接到数据库的主机,请意识到这些IPS或主机名现在将成为代理服务器。
- 那么你已经在MySQL中拥有的所有用户呢? 你可以将它们迁移到proxysql吗? 是的你可以。 它需要几个步骤,但它是可行的。 这是一个例子:
- 确保你了解多层配置系统 。 将您的信息保存到磁盘!
- https://github.com/sysown/proxysql/wiki/Main-(runtime)#runtime-tables
- https://github.com/sysown/proxysql/wiki/Main-(runtime)#disk-database
- ProxySQL可以在MySQL默认端口3306上运行
- 是编辑mysql接口
- 现在请记住你的max_connections。 如果您将mysql中的Max_connections设置为500,那么对于标准用户来说,这是您的限制。 使用ProxySQL,您现在可以将用户分散到系统中并为每个节点设置一个最大值。 因此,为了确保您不会遇到500个连接,请将mysql-max_connections设置为比MySQL值低一点。
- 利用监控模块和STATS 。了解您的代理和流量发生了什么。
- 如果适用于您的应用程序,请利用查询缓存 。