NDB 集群支持异步复制,通常简称为“复制”。本节解释如何设置和管理一个配置,其中一组计算机作为 NDB 集群复制到第二台计算机或一组计算机。我们假设读者熟悉标准 MySQL 复制,如本手册其他地方所述。(见 第 19 章,复制)。
NDB 集群不支持使用 GTIDs 的复制;半同步复制和组复制也不支持 NDB
存储引擎。
普通(非聚簇)复制涉及源服务器和副本服务器,源服务器因此命名,因为操作和要复制的数据来自它,而副本服务器是这些数据的接收者。在 NDB 集群中,复制概念上非常相似,但在实践中可能更加复杂,因为它可能扩展到涵盖多种不同的配置,包括在两个完整集群之间复制。虽然 NDB 集群本身依赖于 NDB
存储引擎来实现集群功能,但不需要使用 NDB
作为副本的复制表的存储引擎(见 从 NDB 到其他存储引擎的复制)。然而,为了最大限度地提高可用性,可以(并且更可取)从一个 NDB 集群复制到另一个 NDB 集群,这也是我们讨论的场景,如下图所示:
在这个场景中,复制过程是将源集群的连续状态记录并保存到副本集群中。这个过程是通过一个特殊的线程实现的,即 NDB 二进制日志注入器线程,该线程在每个 MySQL 服务器上运行,并生成二进制日志(binlog
)。这个线程确保了集群中所有的更改——不仅仅是通过 MySQL 服务器实现的更改——都被插入到二进制日志中,并且具有正确的序列化顺序。我们将 MySQL 源服务器和副本服务器称为复制服务器或复制节点,并将它们之间的数据流或通信线路称为 复制通道。
有关使用 NDB 集群和 NDB 集群复制执行点时恢复的信息,请参阅 第 25.7.9.2 节,“使用 NDB 集群复制的点时恢复”。
NDB API 副本状态变量。 NDB API 计数器可以在副本集群上提供增强的监控能力。这些计数器是作为 NDB 统计 _replica
状态变量实现的,如 SHOW STATUS
的输出或在 session_status
或 global_status
表中的查询结果所示,在 mysql 客户端会话中连接到作为副本的 MySQL 服务器时。通过比较这些状态变量在执行影响复制表的语句之前和之后的值,可以观察到 NDB API 级别上副本的相应操作,这在监控或故障排除 NDB 集群复制时非常有用。第 25.6.16 节,“NDB API 统计计数器和变量” 提供了更多信息。
从 NDB 到非 NDB 表的复制。 可以将 NDB
表从作为复制源的 NDB 集群复制到使用其他 MySQL 存储引擎(如 InnoDB
或 MyISAM
)的表在副本 mysqld 上。这取决于一些条件;请参阅 从 NDB 到其他存储引擎的复制 和 从 NDB 到非事务性存储引擎的复制,以获取更多信息。