Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  General Requirements for NDB Cluster Replication

25.7.2 NDB 集群复制的通用要求

一个复制通道需要两个MySQL服务器作为复制服务器(每个用于源和副本)。例如,在具有两个复制通道(以提供冗余)的复制设置中,这意味着总共有四个复制节点,两个属于每个集群。

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

Important

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

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

在两个集群中的每个MySQL服务器上进行复制时,都必须对其进行唯一标识(您不能让源和副本集群中的复制服务器共享相同的ID)。这可以通过使用--server-id=id选项来实现,其中id是一个唯一的整数。尽管这样做不是必需的,但出于讨论目的,我们假设所有NDB集群二进制文件都是相同版本的。

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

我们假设副本服务器或集群专门用于源集群的复制,并且不存储其他数据。

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

Note

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

  • 所有针对源集群数据行的更新都必须指向单个 MySQL 服务器。

  • 不能同时使用多个 MySQL 复制进程来复制一个集群。

  • 只有 SQL 级别的更改才会被复制。

这些限制还包括语句级别复制与行级别复制相比的其他限制;请参阅第 19.2.1.1 节,“语句级别和行级别复制的优点和缺点”,以获取两种复制格式之间差异的具体信息。