Documentation Home
MySQL 8.0 参考手册  / 第 23 章 MySQL NDB Cluster 8.0  / 23.7 NDB 集群复制  /  18.7.6 启动 NDB Cluster 复制(单复制通道)

18.7.6 启动 NDB Cluster 复制(单复制通道)

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

  1. 通过发出此命令启动 MySQL 复制源服务器,id此服务器的唯一 ID 在哪里(请参阅 第 18.7.2 节,“NDB Cluster 复制的一般要求”):

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

    这将启动服务器的mysqld 进程,并使用正确的日志记录格式启用二进制日志记录。

    笔记

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

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

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

    在刚刚显示的命令中,id是副本服务器的唯一 ID。没有必要在副本上启用日志记录。

    笔记

    您应该将该 --skip-slave-start选项与此命令一起使用,否则您应该将其包含 skip-slave-start在副本服务器的my.cnf文件中,除非您希望立即开始复制。使用此选项时,复制的开始会延迟到START SLAVE 发出适当的语句为止,如下面的第 4 步所述。

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

    mysqlR> CHANGE MASTER TO
         -> MASTER_LOG_FILE='',
         -> MASTER_LOG_POS=4;

    这指示副本从日志的起点开始读取源服务器的二进制日志。否则 - 也就是说,如果您正在使用备份从源加载数据 - 请参阅 第 18.7.8 节,“使用 NDB Cluster 复制实现故障转移”MASTER_LOG_FILE, 以获取有关如何获取用于 MASTER_LOG_POS这种情况的正确值的信息。

  4. 最后,通过从副本上的mysql客户端 发出此命令来指示副本开始应用复制:

    mysqlR> START SLAVE;

    这也启动了从源到副本的数据传输和更改。

也可以使用两个复制通道,其方式类似于下一节中描述的过程;这与使用单个复制通道之间的区别在 第 18.7.7 节,“为 NDB Cluster 复制使用两个复制通道”中介绍。

还可以通过启用批量更新来提高集群复制性能。这可以通过 在副本的mysqld 进程上设置slave_allow_batching系统变量来完成。通常,更新会在收到后立即应用。但是,批处理的使用会导致更新以每批 32 KB 为单位进行应用;这可以导致更高的吞吐量和更少的 CPU 使用率,特别是在单个更新相对较小的情况下。

笔记

批处理以每个时期为基础;属于多个事务的更新可以作为同一批次的一部分发送。

当到达纪元末尾时,将应用所有未完成的更新,即使更新总计小于 32 KB。

可以在运行时打开和关闭批处理。要在运行时激活它,您可以使用以下两个语句之一:

SET GLOBAL slave_allow_batching = 1;
SET GLOBAL slave_allow_batching = ON;

如果特定批次导致问题(例如其效果似乎没有被正确复制的语句),则可以使用以下任一语句停用批处理:

SET GLOBAL slave_allow_batching = 0;
SET GLOBAL slave_allow_batching = OFF;

SHOW VARIABLES 您可以通过适当的语句 检查当前是否正在使用批处理,例如:

mysql> SHOW VARIABLES LIKE 'slave%';
+---------------------------+-------+
| Variable_name             | Value |
+---------------------------+-------+
| slave_allow_batching      | ON    |
| slave_compressed_protocol | OFF   |
| slave_load_tmpdir         | /tmp  |
| slave_net_timeout         | 3600  |
| slave_skip_errors         | OFF   |
| slave_transaction_retries | 10    |
+---------------------------+-------+
6 rows in set (0.00 sec)