21.6 NDB 群集复制
NDB Cluster 支持异步复制,通常更简单地称为“复制”。本节说明如何设置和 Management 配置,在该配置中,作为 NDB 群集运行的一组计算机将复制到另一台计算机或一组计算机。我们假定 Reader 对标准 MySQL 复制非常熟悉,如本手册中其他部分所述。 (请参见第 16 章,复制)。
Note
NDB 群集不支持使用 GTID 复制。 NDB
存储引擎也不支持半同步复制和组复制。
正常(非集群)复制涉及一个源服务器(以前称为“主服务器”)和一个副本服务器(以前称为“从属服务器”),之所以这样命名,是因为源的操作和要复制的数据均源于此服务器,副本是这些的接收者。在 NDB 群集中,复制在概念上非常相似,但实际上可能更为复杂,因为它可能会扩展为涵盖许多不同的配置,包括在两个完整群集之间进行复制。尽管 NDB 群集本身依赖于NDB存储引擎来实现群集功能,但是不必使用NDB作为复制 table 的副本副本的存储引擎(请参见从 NDB 复制到其他存储引擎)。但是,为了获得最大的可用性,可以(最好)从一个 NDB 群集复制到另一个 NDB 群集,我们讨论的就是这种情况,如下图所示:
图 21.43 NDB 群集到群集的复制布局
在这种情况下,复制过程是其中源群集的连续状态被记录并保存到副本群集的过程。该过程由称为 NDB 二进制日志注入器线程的特殊线程完成,该线程在每个 MySQL 服务器上运行并生成二进制日志(binlog
)。该线程确保将群集中产生二进制日志的所有更改(而不仅仅是通过 MySQL Server 进行的更改)以正确的序列化 Sequences 插入二进制日志。我们将 MySQL 源服务器和副本服务器称为复制服务器或复制节点,并将它们之间的数据流或通讯线路称为复制通道。
有关使用 NDB 群集和 NDB 群集复制执行时间点恢复的信息,请参阅第 21.6.9.2 节“使用 NDB 群集复制进行时间点恢复”。
NDB API 副本状态变量. NDB API 计数器可以在副本群集上提供增强的监视功能。这些计数器被实现为 NDB 统计信息_slave
状态变量,如SHOW STATUS的输出所示,或者针对mysqlClient 端会话中与SESSION_STATUS或GLOBAL_STATUStable 查询的结果,该会话连接到充当 NDB 群集中的副本的 MySQL Server 复制。通过比较执行影响复制的NDBtable 的语句之前和之后的这些状态变量的值,您可以观察副本在 NDB API 级别上采取的相应操作,这在监视或对 NDB 群集复制进行故障排除时很有用。 第 21.5.13 节“ NDB API 统计信息计数器和变量”,提供其他信息。
从 NDB 复制到非 NDBtable. 可以使用其他 MySQL 存储引擎(例如mysqld上的InnoDB或MyISAM)将NDB个 table 从充当复制源的 NDB 群集复制到 table 中。这受许多条件的约束;有关更多信息,请参见从 NDB 复制到其他存储引擎和从 NDB 复制到非事务存储引擎。