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  /  ...  /  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表的更新日志记录,使用--ndb-log-bin选项。

    Note

    您还可以使用--binlog-format=MIXED启动源服务器,这样在复制之间自动使用行基于的复制。当与集群复制时,不支持语句基于的二进制日志记录(参见第25.7.2节“NDB集群复制的通用要求”)。

  2. 然后,启动MySQL副本服务器,如下所示:

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

    在上述命令中,id是副本服务器的唯一ID。对于副本服务器,不需要启用日志记录。

    Note

    除非您希望复制立即开始,否则在发出适当的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来实现。通常,更新会在接收到它们时立即应用。但是,当启用批处理时,更新将以每个32KB的批次形式应用;这可以提高吞吐量并减少CPU使用率,尤其是在单个更新较小的情况下。

Note

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

即使更新总量少于32KB,所有未决的更新也会在纪元结束时应用。

批处理可以在运行时开启或关闭。要在运行时激活它,可以使用以下两个语句中的任意一个:

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%';