使用ProxySQL是在Galera Cluster或MySQL Master Slave中直接查询的要求



我仍然没有太多使用这些工具(Galera集群和MySQL主从集群)的经验,我正在Jelastic/Virtuozzo的Wordpress环境中测试一些场景。

我的平台每分钟有大量的查询,既有来自随机发生的请求的查询,也有来自Cron的操作的查询,在我的情况下,Cron每5分钟不使用本机wp-Cron调度,而是使用linux-Cron调度。

我经常使用访问数据库的应用程序,如Woocommerce、Wocoomerce Subscriptions、Learnsh、Automator等。

测试场景1 -使用ProxySQL的MySQL主从:这很令人满意,但我担心在失败的情况下只保留一个节点作为主节点。

测试场景2 -使用ProxySQL的MySQL Master:它工作了一段时间,但后来在一些表中开始出现不同步查询的问题,主要是选项表(wp_options)。日志中常见错误"ha_err_key_not_found"。

测试场景3 -不带ProxySQL的MariaDB Galera集群:这是Jelastic Marketplace上Wordpress集群的默认配置。这是令人满意的,但有时会产生[警告]中止与db:的6388连接。。(写入通信数据包时出错)。这是一个麻烦,因为它总是发生在一些Wooccommerce任务请求中,安排在Action Sheduler中,导致这些任务失败。

测试场景4 -使用ProxySQL的Maria DB Galera集群:这也令人满意,Action Sheduler中的任务错误较少,但并不完全。

关于《谢杜勒行动》中的这些错误,在最后两种情况下,它们总是一样的:;300秒后动作超时";,尽管服务器超时大于该时间(600)。这让人相信这项任务只是被扼杀了。这些只有在通过异步请求触发操作时才会发生。

所有这些插图只是为了报告我的经历,但我意识到,尽管存在一些缺陷,但对我来说,使用Galera Cluster是最好的选择。但我的疑虑出现了:

1)在Wordpress环境中使用ProxySQL更好吗

2)如果我不在Galera集群上使用ProxySQL,我知道复制会正常工作,但如果我将Wordpress直接连接到主节点,其他Galera节点之间的查询会平衡吗?还是查询总是在主节点上执行,无论是写入还是读取

3)如果问题2的答案是查询不平衡,那么将应用服务器层的每个节点连接到不同的Galera节点是否正确

4)在使用没有ProxySQL的MySQL Master Salave的情况下,SELECT查询还会在从节点上执行吗?还是只有主节点真正响应

提前感谢您提供的可能答案,如果不清楚或问题有点太天真,我深表歉意。

据我所知,在生产环境中使用Galera Cluster时。以下是我对您的问题的看法:

  1. 在Wordpress环境中使用ProxySQL更好吗

是的,最好使用ProxySQL进行Wordpress部署。假设我们有node1、node2和node3。例如,通过使用ProxySQL,我们可以将node1固定为写入节点。然后我们可以将node2和node3固定为读取节点。因此,每个写操作都将重定向到node1。但每个读取节点,都将重定向到node2或node3

  1. 如果我不在Galera集群上使用ProxySQL,我知道复制会正常工作,但如果我将Wordpress直接连接到主节点,其他Galera节点之间的查询会平衡吗?还是查询总是在主节点上执行,无论是写入还是读取

不,您只能指向Galera集群的单个节点。如果你的节点关闭了,但你的Wordpress无法动态地指向另一个节点,那就更糟糕了。

通过使用ProxySQL,您只需要指出ProxySQL的IP地址。

  1. 如果问题2的答案是查询不平衡,那么将应用服务器层的每个节点连接到不同的Galera节点是否正确

如果不使用负载均衡器软件,您可能不得不尝试其他技巧。例如,通过使用HAProxy或Nginx负载平衡。

  1. 如果使用没有ProxySQL的MySQL主从节点,SELECT查询还会在从节点上执行吗?还是只有主节点真正响应

这取决于您的配置。假设您有node1、node2和node3。node1是主节点。节点2和节点3是节点1的从属节点。您可以定义写入操作可以重定向到node1。对于读取操作,可以对node2或node3进行负载平衡。

这些观点是基于我今年使用ProxySQL的经验。

可以访问的关于ProxySQL的示例教程:https://proxysql.com/blog/effortlessly-scaling-out-galera-cluster-with-proxysql/

希望你喜欢那篇文章。

最新更新