25.7 NDB 集群复制
NDB 集群支持异步复制,也常被称作“复制”。本节将解释如何设置和管理一个配置,其中一组计算机作为 NDB 集群成员对另一个计算机或另一组计算机进行复制。我们假设读者对 MySQL 复制有一定的了解,详细内容请参考本手册其他部分的讨论。(参见第19章 复制。)
NDB 集群不支持使用 GTIDs 的复制;半同步复制和组复制也是由 NDB
存储引擎所不支持的功能。
普通(非集群)复制涉及一个源服务器和一个副本服务器,源服务器因为操作和要复制的数据起源于它,而副本服务器是这些操作和数据的接收者。在NDB集群中,复制概念上非常相似,但在实际操作中可能更为复杂,因为它可以扩展到包括两个完整集群之间的复制。尽管一个NDB集群自身依赖于NDB
存储引擎来提供集群功能,但并不一定需要在副本服务器复制的表的副本中使用NDB
作为存储引擎(参见从NDB到其他存储引擎的复制)。然而,对于最大化可用性,能够(并且更倾向于)将一个NDB集群复制到另一个,并且是这种场景的讨论,我们将在以下图中展示它:
在这种情况下,复制过程涉及将源集群的连续状态记录并保存到副本集群。这个过程由每个MySQL服务器上运行的一个特殊线程——NDB二进制日志注入器线程来完成,它产生一个二进制日志(binlog
)。这个线程确保了所有在生成二进制日志的集群中发生的更改,不仅限于通过MySQL Server进行的更改,都会以正确的序列化顺序被插入到二进制日志中。我们将使用NDB Cluster和NDB Cluster Replication中的MySQL源服务器和副本服务器称为复制服务器或复制节点,而它们之间的数据流或通信线路则被称为一个复制通道。
关于使用NDB Cluster和NDB Cluster Replication进行点时恢复的信息,请参阅第25.7.9.2节,“使用NDB Cluster Replication进行点时恢复”。
NDB API 复制状态变量。 NDB API 计数器可以提供对复制集的增强监控能力。这些计数器以 NDB 统计信息 _replica
状态变量的形式实现,见在 SHOW STATUS
的输出中,或在连接到 NDB 集群复制中的 MySQL 服务器的 mysql 客户端会话对 Performance Schema session_ status
或 global_status
表的查询结果中。通过比较这些状态变量的值,执行影响复制 NDB
表的语句之前和之后,您可以观察到在 NDB API 级别上复制中所采取的相应操作,这对于监控或故障排除 NDB 集群复制非常有用。有关更多信息,请参阅 第 25.6.16 节,“NDB API 统计信息计数器和变量”。
从NDB到非NDB表的复制。 可以将一个作为复制源的NDB集群中的表复制到使用其他MySQL存储引擎(如InnoDB
或MyISAM
)的表。这个过程需要满足一定条件,详细信息请参阅从NDB到其他存储引擎的复制和从NDB到非事务性存储引擎的复制。