- 25.7.1 NDB Cluster 复制:缩写和符号
- 25.7.2 NDB Cluster 复制的一般要求
- 25.7.3 NDB Cluster 复制中的已知问题
- 25.7.4 NDB Cluster 复制模式和表
- 25.7.5 为 NDB Cluster 复制做准备
- 25.7.6 启动 NDB Cluster 复制(单复制通道)
- 25.7.7 使用两个复制通道进行 NDB Cluster 复制
- 25.7.8 使用 NDB Cluster 复制实现故障转移
- 25.7.9 使用 NDB Cluster 复制进行 NDB Cluster 备份
- 25.7.10 NDB Cluster 复制:双向和循环复制
- 25.7.11 使用多线程应用器进行 NDB Cluster 复制
- 25.7.12 NDB Cluster 复制冲突解决
NDB Cluster 支持 异步复制,通常简称为 “复制”。本节介绍如何设置和管理一个配置,其中一组作为 NDB Cluster 运行的计算机复制到第二台计算机或一组计算机。我们假设读者对本手册其他地方讨论的标准 MySQL 复制有一些了解。(参见 第 19 章,复制)。
NDB Cluster 不支持使用 GTID 的复制;NDB
存储引擎也不支持半同步复制和组复制。
正常(非集群)复制涉及一个源服务器和一个副本服务器,源服务器之所以这样命名是因为要复制的操作和数据起源于它,而副本服务器是这些操作和数据的接收者。在 NDB Cluster 中,复制在概念上非常相似,但在实践中可能更复杂,因为它可以扩展到涵盖许多不同的配置,包括在两个完整集群之间进行复制。虽然 NDB Cluster 本身依赖于 NDB
存储引擎来实现集群功能,但对于副本的复制表的副本,不一定要使用 NDB
作为存储引擎(参见 从 NDB 到其他存储引擎的复制)。但是,为了获得最大的可用性,可以(也是首选)从一个 NDB Cluster 复制到另一个 NDB Cluster,而我们讨论的正是这种情况,如下图所示
在这种情况下,复制过程是将源集群的连续状态记录并保存到副本集群。此过程由一个称为 NDB 二进制日志注入线程的特殊线程完成,该线程在每个 MySQL 服务器上运行并生成二进制日志 (binlog
)。此线程确保生成二进制日志的集群中的所有更改(而不仅仅是通过 MySQL 服务器进行的更改)都以正确的序列化顺序插入二进制日志中。我们将 MySQL 源服务器和副本服务器称为复制服务器或复制节点,并将它们之间的数据流或通信线路称为 复制通道。
有关使用 NDB Cluster 和 NDB Cluster 复制执行时间点恢复的信息,请参见 第 25.7.9.2 节,“使用 NDB Cluster 复制进行时间点恢复”。
NDB API 副本状态变量。 NDB API 计数器可以为副本集群提供增强的监控功能。这些计数器实现为 NDB 统计信息 _replica
状态变量,如 SHOW STATUS
的输出中所示,或在查询 Performance Schema session_status
或 global_status
表的结果中所示,该表在连接到充当 NDB Cluster 复制中副本的 MySQL 服务器的 mysql 客户端会话中。通过比较在影响复制的 NDB
表的语句执行之前和之后这些状态变量的值,您可以观察副本在 NDB API 级别采取的相应操作,这在监控或排查 NDB Cluster 复制问题时非常有用。 第 25.6.16 节,“NDB API 统计计数器和变量” 提供了更多信息。
从 NDB 到非 NDB 表的复制。 可以从充当复制源的 NDB Cluster 复制 NDB
表,复制到使用其他 MySQL 存储引擎(如 InnoDB
或 MyISAM
)的副本 mysqld 上的表。这需要满足若干条件;请参见 从 NDB 到其他存储引擎的复制 和 从 NDB 到非事务性存储引擎的复制,了解更多信息。