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  /  ...  /  Starting NDB Cluster Replication (Single Replication Channel)

25.7.6 启动 NDB 集群复制(单个复制通道)

本节概述了使用单个复制通道启动 NDB 集群复制的过程。

  1. 通过发出以下命令启动 MySQL 复制源服务器,其中 id 是该服务器的唯一 ID(见 第 25.7.2 节,“NDB 集群复制的一般要求”):

    shellS> mysqld --ndbcluster --server-id=id \
            --log-bin --ndb-log-bin &

    这将启动服务器的 mysqld 进程,启用二进制日志记录,使用适当的日志格式。还需要使用 --ndb-log-bin 选项显式启用对 NDB 表的更新日志记录。

    Note

    您也可以使用 --binlog-format=MIXED 启动源服务器,在这种情况下,行 기반复制将自动用于集群之间的复制(见 第 25.7.2 节,“NDB 集群复制的一般要求”)。语句基于二进制日志记录不支持 NDB 集群复制。

  2. 按照以下方式启动 MySQL 复制服务器:

    shellR> mysqld --ndbcluster --server-id=id &

    在上面的命令中,id 是复制服务器的唯一 ID。不需要在复制服务器上启用日志记录。

    Note

    除非您想立即开始复制,否则请延迟启动复制线程,直到发出适当的 START REPLICA 语句,如下一步所述。您可以通过使用 --skip-replica-start 来实现这一点。

  3. 需要将复制服务器与源服务器的二进制日志同步。如果源服务器上以前没有启用二进制日志记录,请在复制服务器上运行以下语句:

    mysqlR> CHANGE REPLICATION SOURCE TO
         -> SOURCE_LOG_FILE='',
         -> SOURCE_LOG_POS=4;

    这将指示复制服务器从源服务器的二进制日志的起始点开始读取。如果您是使用备份从源服务器加载数据,请参阅 第 25.7.8 节,“使用 NDB 集群复制实现故障转移”,以获取正确的值用于 SOURCE_LOG_FILESOURCE_LOG_POS

  4. 最后,通过从复制服务器上的 mysql 客户端发出以下命令,以开始应用复制:

    mysqlR> START REPLICA;

    这也将启动从源服务器到复制服务器的数据和更改传输。

也可以使用两个复制通道,类似于下一节所述的过程;使用单个复制通道和使用两个复制通道之间的差异见 第 25.7.7 节,“使用两个复制通道进行 NDB 集群复制”

还可以通过启用 批处理更新 来提高集群复制性能。这可以通过在复制服务器的 mysqld 进程中设置系统变量 replica_allow_batching 来实现。通常,更新将被立即应用。但是,批处理更新将更新分批应用,每批 32 KB;这可以提高吞吐量和减少 CPU 使用率,特别是在单个更新较小的情况下。

Note

批处理基于 epoch 工作;来自多个事务的更新可以作为同一批的一部分发送。

所有未决更新将在 epoch 结束时应用,即使更新总量小于 32 KB。

可以在运行时启用和禁用批处理。要在运行时激活它,可以使用以下两个语句:

SET GLOBAL replica_allow_batching = 1;
SET GLOBAL replica_allow_batching = ON;

如果某个批处理引发问题(例如某个语句的效果未正确复制),可以使用以下两个语句禁用批处理:

SET GLOBAL replica_allow_batching = 0;
SET GLOBAL replica_allow_batching = OFF;

可以使用适当的 SHOW VARIABLES 语句来检查当前是否使用批处理,例如:

mysql> SHOW VARIABLES LIKE 'replica%';