文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (美国信函尺寸) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  NDB 集群复制的一般要求

25.7.2 NDB 集群复制的一般要求

复制通道需要两个充当复制服务器的 MySQL 服务器(每个集群一个)。例如,这意味着在具有两个复制通道(为冗余提供额外的通道)的复制设置的情况下,应该总共有四个复制节点,每个集群两个。

本节和后续章节中描述的 NDB 集群复制依赖于基于行的复制。这意味着复制源 MySQL 服务器必须使用 --binlog-format=ROW--binlog-format=MIXED 运行,如 第 25.7.6 节,“启动 NDB 集群复制(单个复制通道)” 中所述。有关基于行的复制的一般信息,请参阅 第 19.2.1 节,“复制格式”

重要

如果尝试使用 --binlog-format=STATEMENT 进行 NDB 集群复制,则复制无法正常工作,因为源集群上的 ndb_binlog_index 表和副本集群上的 ndb_apply_status 表的 epoch 列不会更新(请参阅 第 25.7.4 节,“NDB 集群复制模式和表”)。相反,只有充当复制源的 MySQL 服务器上的更新会传播到副本,来自源集群中任何其他 SQL 节点的更新都不会被复制。

--binlog-format 选项的默认值为 MIXED

用于在任一集群中进行复制的每个 MySQL 服务器都必须在参与任一集群的所有 MySQL 复制服务器中被唯一识别(您不能在源和副本集群上都有使用相同 ID 的复制服务器)。这可以通过使用 --server-id=id 选项启动每个 SQL 节点来完成,其中 id 是一个唯一的整数。虽然这不是严格必要的,但为了讨论的目的,我们假设所有 NDB 集群二进制文件都是相同的发行版版本。

在 MySQL 复制中,通常情况下,涉及的两个 MySQL 服务器(mysqld 进程)必须在所使用的复制协议的版本和它们支持的 SQL 功能集方面彼此兼容(请参阅 第 19.5.2 节,“MySQL 版本之间的复制兼容性”)。正是由于 NDB 集群和 MySQL 服务器 9.0 发行版中的二进制文件之间的这种差异,NDB 集群复制有一个额外的要求,即两个 mysqld 二进制文件都来自 NDB 集群发行版。确保 mysqld 服务器兼容的最简单方法是为所有源和副本 mysqld 二进制文件使用相同的 NDB 集群发行版。

我们假设副本服务器或集群专用于复制源集群,并且没有其他数据存储在它上面。

所有正在复制的 NDB 表都必须使用 MySQL 服务器和客户端创建。使用 NDB API(例如,使用 Dictionary::createTable())创建的表和其他数据库对象对 MySQL 服务器不可见,因此不会被复制。NDB API 应用程序对使用 MySQL 服务器创建的现有表的更新可以被复制。

注意

可以使用基于语句的复制来复制 NDB 集群。但是,在这种情况下,以下限制适用

  • 对充当源的集群上的数据行的所有更新都必须定向到单个 MySQL 服务器。

  • 无法使用多个同时的 MySQL 复制进程来复制集群。

  • 仅复制在 SQL 级别的更改。

这些限制是除了基于语句的复制与基于行的复制的其他限制之外的;请参阅 第 19.2.1.1 节,“基于语句的复制和基于行的复制的优缺点”,以获取有关两种复制格式之间差异的更具体信息。