本节概述了使用单一复制通道启动 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%';