本节概述了使用单个复制通道启动 NDB Cluster 复制的过程。
通过发出此命令启动 MySQL 复制源服务器,
id
此服务器的唯一 ID 在哪里(请参阅 第 21.7.2 节,“NDB Cluster 复制的一般要求”):shellS> mysqld --ndbcluster --server-id=id \ --log-bin --ndb-log-bin &
这将启动服务器的mysqld 进程,并使用正确的日志记录格式启用二进制日志记录。
笔记您还可以使用 启动源
--binlog-format=MIXED
,在这种情况下,在集群之间复制时会自动使用基于行的复制。NDB Cluster 复制不支持基于语句的二进制日志记录(请参阅 第 21.7.2 节,“NDB Cluster 复制的一般要求”)。启动 MySQL 副本服务器,如下所示:
shellR> mysqld --ndbcluster --server-id=id &
在刚刚显示的命令中,
id
是副本服务器的唯一 ID。没有必要在副本上启用日志记录。笔记您应该将该
--skip-slave-start
选项与此命令一起使用,否则您应该将其包含skip-slave-start
在副本服务器的my.cnf
文件中,除非您希望立即开始复制。使用此选项时,复制的开始会延迟到START SLAVE
发出适当的语句为止,如下面的第 4 步所述。有必要将副本服务器与源服务器的复制二进制日志同步。如果二进制日志记录以前没有在源上运行,请在副本上运行以下语句:
mysqlR> CHANGE MASTER TO -> MASTER_LOG_FILE='', -> MASTER_LOG_POS=4;
这指示副本从日志的起点开始读取源服务器的二进制日志。否则 - 也就是说,如果您正在使用备份从源加载数据 - 请参阅 第 21.7.8 节,“使用 NDB Cluster 复制实现故障转移”
MASTER_LOG_FILE
, 以获取有关如何获取用于MASTER_LOG_POS
这种情况的正确值的信息。最后,通过从副本上的mysql客户端 发出此命令来指示副本开始应用复制:
mysqlR> START SLAVE;
这也启动了从源到副本的数据传输和更改。
也可以使用两个复制通道,其方式类似于下一节中描述的过程;这与使用单个复制通道之间的区别在 第 21.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)