MySQL 8.0 参考手册  / 第 23 章 MySQL NDB Cluster 8.0  /  21.7 NDB 集群复制

21.7 NDB 集群复制

NDB Cluster 支持异步复制,通常简称为 复制。本节说明如何设置和管理配置,其中一组计算机作为 NDB Cluster 复制到第二台计算机或一组计算机。我们假定读者对本手册其他地方讨论的标准 MySQL 复制有一定的了解。(参见第 16 章,复制)。

笔记

NDB Cluster 不支持使用 GTID 进行复制;NDB存储引擎 也不支持半同步复制和组复制。

正常(非集群)复制涉及源服务器(以前称为)和副本服务器(以前称为),源之所以如此命名是因为要复制的操作和数据源自它,复制品是这些的接收者。在 NDB Cluster 中,复制在概念上非常相似,但在实践中可能更复杂,因为它可以扩展到涵盖许多不同的配置,包括在两个完整的集群之间复制。虽然 NDB Cluster 本身依赖于 NDB存储引擎来实现集群功能,但没有必要使用 NDB作为复制表的副本副本的存储引擎(请参阅 从导航台复制到其他存储引擎)。但是,为了获得最大可用性,可以(并且更可取)从一个 NDB Cluster 复制到另一个,我们讨论的正是这种场景,如下图所示:

图 21.12 NDB Cluster-to-Cluster 复制布局

大部分内容在周围的文本中进行了描述。 它可视化如何复制 MySQL 源。 副本的不同之处在于它显示了一个指向中继二进制日志的 I/O 线程,而中继二进制日志指向一个 SQL 线程。 此外,虽然二进制日志指向和来自源服务器上的 NDBCLUSTER 引擎,但在副本上它直接指向 SQL 节点(MySQL 服务器)。

在这种情况下,复制过程是记录源集群的连续状态并将其保存到副本集群的过程。此过程由称为 NDB 二进制日志注入器线程的特殊线程完成,该线程在每个 MySQL 服务器上运行并生成二进制日志 ( binlog)。该线程确保集群中产生二进制日志的所有更改——而不仅仅是那些通过 MySQL 服务器影响的更改——都以正确的序列化顺序插入到二进制日志中。我们将 MySQL 源服务器和副本服务器称为复制服务器或复制节点,将它们之间的数据流或通信线路称为 复制通道

有关使用 NDB Cluster 和 NDB Cluster 复制执行时间点恢复的信息,请参阅 第 21.7.9.2 节,“使用 NDB Cluster 复制的时间点恢复”

NDB API 副本状态变量。  NDB API 计数器可以在副本集群上提供增强的监控功能。这些计数器作为 NDB 统计 _slave状态变量实现,如输出所示,或在连接到 MySQL 服务器的mysql客户端会话中针对 or表 SHOW STATUS的查询结果中,该服务器在 NDB Cluster Replication 中充当副本。通过比较影响replicated的语句执行前后这些状态变量的值 SESSION_STATUSGLOBAL_STATUSNDB表,您可以观察副本在 NDB API 级别上采取的相应操作,这在监视或故障排除 NDB Cluster 复制时非常有用。第 21.6.14 节,“NDB API 统计计数器和变量”,提供了额外的信息。

从导航台复制到非导航台表。  可以使用其他 MySQL 存储引擎(例如或 在副本 mysqldNDB上)将 表从充当复制源的 NDB Cluster 复制到表 。这取决于许多条件;有关详细信息,请参阅 从 NDB 到其他存储引擎的复制和 从 NDB 到非事务性存储引擎的复制InnoDBMyISAM