【发布时间】:2022-11-12 22:30:39
【问题描述】:
我仍然没有太多使用这些工具(Galera Cluster 和 MySQL Master-Slave Cluster)的经验,我正在 Jelastic/Virtuozzo 的 Wordpress 环境中测试一些场景。
我的平台每分钟有大量查询,既来自随机发生的请求,也来自通过 Cron 的操作,在我的例子中,它不使用本机 wp-cron 计划,而是每 5 分钟使用 linux cron 计划。
我经常使用访问数据库的应用程序,例如 Woocommerce、Wocoomerce Subscriptions、Learndash、Automator 等。
测试场景 1- MySQL Master-Slave with ProxySQL:很满意,但我害怕只保留一个节点作为主节点,以防万一发生故障。
测试场景 2- 带有 ProxySQL 的 MySQL Master-Master:它工作了一段时间,但随后在某些表中开始出现不同步查询的问题,主要是选项表 (wp_options)。错误“ha_err_key_not_found”在日志中变得很常见。
测试场景 3- 没有 ProxySQL 的 MariaDB Galera 集群:这是 Jelastic Marketplace 上 Wordpress 集群中的默认配置。这是令人满意的,但有时它会产生 [警告] Aborted connection 6388 to db:..(写入通信数据包时出错)。这是一个麻烦,因为它总是发生在一些 Woocommerce 任务请求中,安排在 Action Sheduler 中,导致这些任务失败。
测试场景 4- Maria DB Galera Cluster with ProxySQL:同样令人满意,Action Sheduler 中的任务错误较少,但并不完全。
关于 Action Sheduler 中的此类错误,在最后两个场景中,它们始终相同:“300 秒后的操作超时”,尽管服务器超时大于此时间(600)。这导致人们相信任务被简单地杀死了。这些仅在通过异步请求触发操作时发生。
所有这些插图只是为了报告我的经验,但我意识到,尽管存在一些缺陷,但对我来说使用 Galera Cluster 是最好的选择。但我的疑问出现了:
1) 在 Wordpress 环境中使用 ProxySQL 是否更好?
2)如果我不在Galera集群上使用ProxySQL,我知道复制会正常工作,但是如果我将Wordpress直接连接到主节点,查询会在其他Galera节点之间平衡吗?还是查询总是在Master节点上执行,不管是写还是读?
3) 如果问题 2 的答案是查询不会平衡,那么将应用服务器层的每个节点连接到不同的 Galera 节点是否正确?
4)在不使用ProxySQL的情况下使用MySQL Master-Salave,是否还会在从节点上进行SELECT查询?还是只有主节点实际响应?
提前感谢您提供可能的答案,如果不清楚或问题有点太天真,我深表歉意。
【问题讨论】:
-
不可能在任何事情上都达到 100%。你有一个关于这个领域可能出错的好博客的开端。
标签: php mysql wordpress galera jelastic