文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (美国信纸) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  启动 NDB 集群复制(单一复制通道)

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 表的更新日志记录。

    注意

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

  2. 如下所示启动 MySQL 复制服务器

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

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

    注意

    除非您希望复制立即开始,否则请将复制线程的启动延迟到发出适当的 START REPLICA 语句,如下面的步骤 4 中所述。您可以使用 --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 使用量,特别是在单个更新相对较小的情况下。

注意

批处理按每个纪元工作;属于多个事务的更新可以作为同一批次的一部分发送。

在达到纪元末尾时,所有待处理的更新都会被应用,即使这些更新的总大小少于 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%';