使用Mysql Fabric和ProxySQL对Mysql进行分片

原文

有很多方法可以迁移到MySQL Fabric中。他们大多数需要您的应用程序的严重更改 - 您必须切换到MySQL Fabric连接器才能真正受益于MySQL Fabric基础结构。您可能还必须在应用程序中实现某种数据感知,因为在连接到MySQL Fabric时,它必须传递分片键(用于分配给定表格的列中的某些值)。这个过程可能是不可能在一个单一的步骤,所以我们准备了一个概念证明,以显示如何迁移没有应用程序更改。

该解决方案由几个元素组成。在后台,MySQL Fabric拥有高可用性分组和工具的分片系统。另一层使用MySQL路由器构建 - 它允许常规的MySQL客户端连接到在MySQL Fabric中创建的不同的高可用性组。它并不解决将查询路由到正确的分片的问题。这是ProxySQL进行帮助的地方 - 它允许我们执行完美的故障转移(从旧数据库到分片设置),但是它也会将查询路由到由MySQL路由器暴露的正确的分片。路由是基于ProxySQL解析SQL的能力,并根据查询是否匹配正则表达式对查询执行操作(包括重新路由)。

初始环境将如下图所示。我们使用MySQL Fabric配置了两个分片 - 这使我们共有三个高可用性组(两个分片和全局组)。每个这样的组建立在主从复制中的两个MySQL节点之上。在这些组织中,MySQL Fabric将通过监视MySQL的状态来管理高可用性,并且如果需要,还可以将从属设备升级为master。每个高可用性组都配置在MySQL路由器中,它们将其全部显示在不同的端口上。我们将分片表分成两半,每个分片存储一半的分片数据集。设置的最后剩余部分是路由。
使用Mysql Fabric和ProxySQL对Mysql进行分片_第1张图片
ProxySQL使我们能够根据正则表达式匹配来更改查询路由。我们需要做的是准备一组规则 - 一种用于查找分片表的每种类型的查询。我们需要准备正则表达式,将区分哪些查询要路由到第一个分片或第二个分片。此过程可能会出现错误,您需要先测试规则,然后再将其应用于生产。限制也可能在这里适用 - 您的查询必须明确使用分片键来标识行 - 类似的限制适用于MySQL Fabric或任何其他分片解决方案,因此这不是我们设置引起的约束。必须为非分片的全局表创建其他查询规则。

一旦所有查询规则都准备就绪并进行测试,就必须进行切换 - 必须从基于MySQL复制的旧设置移动流量,并根据我们创建的规则将其路由到我们的分片设置 - 这可以使用ProxySQL完成,没有任何中断你的应用程序(只要你不使用长的事务)。

当流量撞到分片设置时,另一阶段开始 - 维护分片环境。MySQL Fabric为我们提供了不同的工具 - 您可以将主机添加到高可用性组,您可以在高可用性组中提升主机。您可能还需要拆分碎片。其中一些操作在我们的设置中是透明的,有些(如分割或移动分片)需要详细的准备工作,因为它们无法使用现有的MySQL Fabric CLI命令轻松执行。

有关我们从MySQL复制到MySQL Fabric分片环境的设置和迁移的更多详细信息,请参见电子书。
使用Mysql Fabric和ProxySQL对Mysql进行分片_第2张图片

你可能感兴趣的:(Linux平台应用技术)