雷竞技下载官网Percona XtraDB集群非阻塞操作雷竞技下载官网Percona XtraDB集群8.0.25 (PXC)引入了一个新选项执行在线模式修改:NBO (<一个href="//m.doggingzone.com/doc/percona-xtradb-cluster/LATEST/features/nbo.html">非阻塞操作)。

当使用PXC,集群依赖wsrep_OSU_method参数定义在线模式升级(俄勒冈州立大学)方法的节点使用复制DDL语句。

直到现在,我们通常有三个选择:

  • 使用隔离订单总额(钢铁洪流,默认)
  • 使用滚动模式升级(RSU)
  • 使用Pe雷竞技下载官网rcona在线模式改变工具(钢铁洪流+<一个href="//m.doggingzone.com/doc/percona-toolkit/LATEST/pt-online-schema-change.html">PTOSC)

每个方法有一些积极的和消极的方面。钢铁洪流将锁定整个集群无法接受数据修改为整个时间执行DDL操作。RSU将位移之间的模式定义节点,并在任何情况下,节点执行DDL操作仍然是锁着的。最后,钢铁洪流+ PTOSC将依赖于创建触发器和复制数据,所以在某些情况下,这可能是非常有效的。

新的非阻塞操作(NBO)方法是帮助减少对集群的影响,使其更容易执行一些DDL操作。

目前我们只支持一组有限的操作和NBO:

  • 改变指数
  • 创建索引
  • 指数下降

任何其他命令将导致ER_NOT_SUPPORTED_YET一条错误消息。

但让我们看看它的工作原理和影响是什么,我们也会比较它与默认的方法钢铁洪流。

我们要做的就是使用四个连接:

1 -执行ddl
2 -执行表中插入数据被修改
3 -在一个不同的表执行插入数据
4 - 5 -检查其他两个节点的操作

8.0.25-15.1 PXC必须至少版本。

我们将修改的表:

和包含~五百万行。

的命令

连接1:

连接2:

连接3:

连接4 - 5:

操作

  • 开始插入连接
  • 启动命令连接4 - 5在其他节点上
  • 执行:
    • 对钢铁洪流
    • 对于NBO
    • 对于这两个

让我们来运行它

修改一个表与钢铁洪流

改变表中插入连接(2):

插入的表(3)连接:

其他节点在同一时间的改变,我们可以看到:

简而言之,我们有整个集群锁定~ 64秒。在这段时间里,所有的操作来修改数据或结构。

现在让我们尝试NBO

改变表中插入:

插入的表:

其他节点在同一时间的改变,我们可以看到:

在这种情况下,是什么还值得注意的是:

  1. 我们有一个时刻metalock:
  2. 执行时间更长

总结:

发生了什么?有什么区别和和NBO为什么它要花很长的时间吗?

让我们看看如何在非常高的水平两个工作:

  • 钢铁洪流:当你发出一个DDL喜欢添加索引元数据锁被放在桌子上,它将发布只有最后的操作。在这段时间里,你不能:
    • 任何集群节点上执行摘要
    • 改变集群中的另一个表
  • NBO:元数据锁在开始和结束时很短暂的一段时间。添加索引操作会在每个节点独立工作。锁在最后是所有节点达成一致的操作和提交或回滚(使用集群错误投票)。成本多一点时间和最后阶段就是添加一个几秒钟的操作执行。但是在操作:
    • 你可以改变另一个表(使用NBO)
    • 您可以继续插入数据,除了表中(s)改变。
    • 在节点崩溃,其他节点上的操作将继续,如果成功,它将持续下去。

简而言之,集群服务器使用NBO时行为变化显著,钢铁洪流相比提供了很大的灵活性。时间不应该线性增加的成本的维度表,但更与单一节点执行ALTER操作的效率。

结论

NBO可以大大有助于减少DDL在集群上的影响,目前,局限于广泛使用索引的创建/修改/删除。但在未来…我们可以扩大。

功能仍然是一个技术预览版,所以不相信它在生产,但是测试它,让我们知道你的想法。

最后的评论:另一个分布引入了NBO,但只有如果你购买企业版。

雷竞技下载官网Percona,真正开源不仅用事实的话,实现NBO标准PXC,完全开源的代码。这不是第一个,但只是另一个的许多特性Percona提供免费当别人问你购买企业版。雷竞技下载官网

享受你们的产品和我们反馈!伟大的MySQL所有!