Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 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 服务器都必须在参与复制的所有 MySQL 服务器中唯一标识(您不能在源集群和副本集群中使用相同的 ID)。这可以通过使用 --server-id=id 选项来实现,其中 id 是一个唯一的整数。虽然不是严格必要的,但我们假设所有 NDB 集群二进制文件都是相同的版本。

在 MySQL 复制中,一般来说,参与复制的两个 MySQL 服务器(mysqld 进程)必须在版本和 SQL 功能集方面相互兼容(参阅 第 19.5.2 节,“MySQL 版本之间的复制兼容性”)。由于 NDB 集群和 MySQL Server 8.3 发行版之间的二进制文件差异,因此 NDB 集群复制有一个附加要求,即两个 mysqld 二进制文件来自同一个 NDB 集群发行版。确保 mysqld 服务器兼容的最简单方法是使用同一个 NDB 集群发行版 для所有源和副本 mysqld 二进制文件。

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

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

Note

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

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

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

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

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