前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NDB Cluster 8.0中的自动模式同步:第1部分

NDB Cluster 8.0中的自动模式同步:第1部分

作者头像
MySQLSE
发布2020-09-28 15:12:58
1.1K0
发布2020-09-28 15:12:58
举报
文章被收录于专栏:MySQL解决方案工程师

作者:Arnab Ray 译:徐轶韬

数据节点是MySQL NDB Cluster的分布式分片存储核心。MySQL服务器通常会访问其数据(在NDB中也称为SQL节点)。每个MySQL服务器都有自己的事务性数据字典(DD),其中存储了MySQL服务器需要使用的表,数据库,表空间,日志文件组,外键和其它对象的所有元数据。8.0版中的MySQL服务器的数据字典进行了改进,例如原子性和崩溃安全的DDL以及INFORMATION_SCHEMA实现等。在存储引擎级别,NDB拥有自己的分布式数据字典,该字典描述了可以使用本机NdbApi直接修改的全部模式对象。

从NDB集群的角度来看,NDB数据字典被视为真实的来源,而每个MySQL服务器的数据字典相当于一个缓存的副本,其重叠部分的内容需要与NDB数据字典的内容保持同步。ndbcluster存储引擎插件通过以下三种机制来实现此同步:

  1. 模式同步:每当MySQL服务器重新连接到集群时,就会执行。模式同步机制可确保MySQL服务器未连接到群集时,使用任何更改的NDB元数据来更新MySQL服务器的数据字典。需要注意的是,在这个阶段,NDB字典中的元数据没有任何变化,在同步结束之前,NDB字典保持只读。
  2. 模式分发:当MySQL服务器连接到集群时,我们依靠模式分发机制来确保所有连接的MySQL服务器保持同步状态。这是通过确保所有涉及NDB元数据的DDL更改分布在所有连接的MySQL服务器上实现的。
  3. 用户触发的同步:与在后台自动执行的前两种机制不同,这要求用户采取措施来触发元数据同步。在NDB Cluster 7.x版本中,使用ndb_restore程序还原NDB字典中的元数据之后,该操作非常有效。此类更改必须反映在MySQL服务器的数据字典中,并要求用户手动触发同步,这可以通过执行SHOW TABLES查询或使用“表发现”机制在每个表的基础上进行更大范围的同步来完成。表发现可以通过任何涉及打开表的DML触发,例如:SELECTSHOW CREATE TABLE

MySQL 8.0中,重构了MySQL Server的数据字典,将模式信息存储在InnoDB表中,并使用InnoDB事务为MySQL Server数据字典的DDL操作提供事务行为。对于NDB来说,MySQL 8.0中事务性数据字典的引入,涉及对模式同步和分发的内部工作的重大更改,包括对各个协议的改进。大多数这种架构同步工作都是在后台自动完成的,对用户几乎没有影响,而用户触发的同步操作则明显不同,我们借此机会检查它的行为,并改变了它在NDB Cluster 8.0中的整体工作。

在NDB Cluster 7.x版本中,执行SHOW TABLES命令等效于模式同步,将数据目录的内容与NDB字典的内容进行比较,并更正检测到的任何不匹配项。但由于以下原因,这不是一个理想的操作:

  • 可用性:在将元数据恢复到NDB字典后,用户需要发出一个额外的查询,以确保在MySQL服务器中也可以看到元数据。由于必须在连接到集群的每个MySQL服务器上进行配置,对于较大的配置,这可能会变得非常繁琐。
  • 全局锁:这需要获取并保持全局锁,以防止在同步期间发生其他元数据更改。
  • SHOW TABLES的额外工作:SHOW TABLES本来是一个简单的读查询,但它执行了其它的元数据更改,并使用了比预期更多的资源。
  • 设计关注点:用户线程执行同步,这主要是NDB事件处理组件的职责。

NDB Cluster 7.x版本中的此功能依赖于.frm文件的存在,随着MySQL 8.0中的数据字典的改变,该文件已被删除。这让我们有机会在NDB集群8.0中从头再来,看看如何处理这个问题。阅读后续文章,以获取有关NDB Cluster 8.0中自动模式同步的更多详细信息!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MySQL解决方案工程师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档