本节概述使用单一复制通道启动 NDB 集群复制的过程。
通过发出以下命令启动 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 集群复制的一般要求”)。如下所示启动 MySQL 复制服务器
shellR> mysqld --ndbcluster --server-id=id &
在刚刚显示的命令中,
id
是复制服务器的唯一 ID。在复制服务器上启用日志记录不是必需的。注意除非您希望复制立即开始,否则请将复制线程的启动延迟到发出适当的
START REPLICA
语句,如下面的步骤 4 中所述。您可以使用--skip-replica-start
启动复制服务器来实现这一点。有必要将复制服务器与源服务器的复制二进制日志同步。如果之前没有在源服务器上运行二进制日志记录,请在复制服务器上运行以下语句
mysqlR> CHANGE REPLICATION SOURCE TO -> SOURCE_LOG_FILE='', -> SOURCE_LOG_POS=4;
这将指示复制服务器从日志的起始点开始读取源服务器的二进制日志。否则(也就是说,如果您使用备份从源服务器加载数据),请参阅 第 25.7.8 节,“使用 NDB 集群复制实现故障转移”,了解如何在这些情况下获取用于
SOURCE_LOG_FILE
和SOURCE_LOG_POS
的正确值。最后,通过在复制服务器上的 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%';