MySQL 多站点集群中如何选择数据节点 - 它是不是基于节点组中数据节点的地理邻近性

Posted

技术标签:

【中文标题】MySQL 多站点集群中如何选择数据节点 - 它是不是基于节点组中数据节点的地理邻近性【英文标题】:How data node selection done in MySQL Multi-site clustering - Is it based on geographic proximity of data nodes in a node groupMySQL 多站点集群中如何选择数据节点 - 它是否基于节点组中数据节点的地理邻近性 【发布时间】:2017-10-23 11:27:06 【问题描述】:

我正在探索部署 mysql 多站点集群的选项。 MySQL 集群部署有三个站点,它有两个节点组,每个节点组包含三个 NoOfReplicas=3 的数据节点。一个节点组中的 3 个数据节点被放置在三个不同的站点中以进行地理分布。

所有三个站点都通过 mysqld 服务器访问 MySQL 集群,并在单个表中执行 SELECT 和 INSERT/UPDATE 操作。

问题 1:

从站点发出查询时将访问哪个数据节点。查询是否会访问位于查询起源的同一站点的本地数据节点。

问题 2:

使用 EXPLAIN 语句,我可以了解查询操作中正在使用哪个分区,但不能了解查询访问的确切数据节点。有什么方法可以了解查询访问的节点组中的哪个数据节点。

问题 3:

有没有办法为节点组中的数据节点选择设置站点亲和性/标记。

【问题讨论】:

先阅读:***.com/help/how-to-ask 然后发布问题。 【参考方案1】:

问题 1: 答案取决于表是否使用 READ BACKUP 功能 或不。如果不是,查询几乎总是被发送到主服务器 副本独立于它在哪里。

对于 MySQL 服务器中的 READ BACKUP,我们会将查询发送到数据节点 在同一节点组和同一主机上。这通常是 自动基于用于 MySQL 服务器的相同主机名和 数据节点。也可以将变量 ndb_data_node_neighbour 设置为 是您最接近的数据节点(这是一个配置变量 MySQL 服务器)。

当数据节点评估将查询发送到哪里时,它将去往哪里 如果数据驻留在本地节点。否则会转到 主副本节点。

您还可以使用完全复制的表,在这种情况下数据驻留 在每个节点中,在这种情况下,它将始终转到上的数据节点 同一个主机,它会在那里找到数据。

问题 2: 分区到节点和 LDM 线程的映射是静态的。 此信息在 ndbinfo 表 table_fragments 中可用 发现于: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-ndbinfo-table-fragments.html

问题 3: 有趣的问题,我最近一直在研究这样的功能。 无论 将实际发布,什么时候像往常一样不是不可能的 答应了,但这个想法符合你的想法,一个人定义了一个 每个数据节点和 MySQL 服务器的 LocationDomainId 并使用它来 路由读取请求。同样,它仅适用于以下表格 使用 READ BACKUP 功能或完全复制的表。

【讨论】:

感谢您的回复。对 FULLY_REPLICATED 给出的定义是“FULLY_REPLICATED 控制表是否完全复制,即每个数据节点是否有表的完整副本”。在 NDB 集群中,每个节点都包含分配给节点组的所有分区作为主分区或副本。将完全复制功能将分配给其他节点组的所有分区也复制到数据节点。如果是这种情况,则此部署等于具有 3 个节点的单节点组(用于 3 个副本)。我在这里错过了什么吗 FULLY_REPLICATED 使用一个节点组与使用 READ_BACKUP 相同。对于两个或更多节点组,FULLY REPLICATED 将在所有节点组上复制,而 READ_BACKUP 只复制一个节点组内的行,就像普通表一样。

以上是关于MySQL 多站点集群中如何选择数据节点 - 它是不是基于节点组中数据节点的地理邻近性的主要内容,如果未能解决你的问题,请参考以下文章

请问,mysql集群一个管理节点可以控制两个集群吗?

mysql集群安装(centos)

多图文,详细介绍mysql各个集群方案

话编程 | 详细介绍MySQL各个集群方案

MySQL集群---②Windows平台搭建MySQL CLUSTER集群

有关于websphere6.0集群配置,两台单节点,一台IHS节点,一台DM管理节点,如何进行集群配置以及发布企业应