繁体   English   中英

在MySQL多站点群集中如何完成数据节点选择-是否基于节点组中数据节点的地理位置

[英]How data node selection done in MySQL Multi-site clustering - Is it based on geographic proximity of data nodes in a node group

我正在探索部署MySQL多站点群集的选项。 MySQL群集部署具有三个站点,并且具有两个节点组,每个节点组包含三个NoOfReplicas = 3的数据节点。 节点组中的3个数据节点位于三个不同的站点中,以进行地理分布。

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

问题1:

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

问题2:

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

问题3:

有没有一种方法可以为节点组中的数据节点选择设置站点关联性/标记。

问题1:答案取决于表是否正在使用READ BACKUP功能。 如果不是,查询将几乎总是发送到主副本,而与查询的位置无关。

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

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

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

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

问题3:一个有趣的问题,我最近一直在研究这种功能。 无论是实际发布,还是通常情况下都无法保证,但其想法符合您的想法,为每个数据节点和MySQL Server定义一个LocationDomainId并将其用于路由读取请求。 同样,它仅适用于使用READ BACKUP功能或完全复制的表的表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM