文档主页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  启动 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%';