启动NDB群集复制(单个复制通道)
本节概述了使用单个复制通道启动NDB群集复制的过程。
通过发出以下命令来启动MySQL复制主服务器:
shellM>
mysqld --ndbcluster --server-id=id \ --log-bin --ndb-log-bin &在上一条语句中,
id
是该服务器的唯一ID(请参见“ NDB群集复制的一般要求”)。这将启动服务器的mysqld进程,并使用正确的日志记录格式启用二进制日志记录。还必须NDB
使用--ndb-log-bin
选项启用对表的更新的日志记录。这是对以前版本的NDB Cluster的更改,该版本默认情况下启用了此选项。注意
您也可以使用来启动主服务器
--binlog-format=MIXED
,在这种情况下,在群集之间进行复制时会自动使用基于行的复制。STATEMENT
NDB群集复制不支持基于二进制的日志记录(请参见“ NDB群集复制的一般要求”)。启动MySQL复制从服务器,如下所示:
shellS>
mysqld --ndbcluster --server-id=id &在刚刚显示的命令中,
id
是从属服务器的唯一ID。不必启用复制从属服务器上的日志记录。注意
您应该将此
--skip-slave-start
选项与该命令一起使用,否则应包括skip-slave-start
在从属服务器的my.cnf
文件中,除非您希望复制立即开始。使用此选项,复制开始将延迟到START SLAVE
发出适当的语句之前,如下面的步骤4中所述。必须将从属服务器与主服务器的复制二进制日志同步。如果以前没有在主数据库上运行二进制日志记录,请在从数据库上运行以下语句:
mysqlS>
CHANGE MASTER TO ->MASTER_LOG_FILE ='', ->MASTER_LOG_POS =4;这指示从站从日志的起点开始读取主站的二进制日志。否则,也就是说,如果你使用的是从主加载数据备份见第22.6.8“实现故障转移与NDB群集复制”,以了解如何获得使用正确的值的信息,
MASTER_LOG_FILE
并且MASTER_LOG_POS
在这种情况下。最后,必须通过从复制从属服务器上的mysql客户端发出以下命令,指示从属服务器开始应用复制:
mysqlS>
START SLAVE ;这也将启动复制数据从主机到从机的传输。
也可以使用与下一节中介绍的过程类似的方式使用两个复制通道。“使用两个复制通道进行NDB群集复制”介绍了此方法与使用单个复制通道之间的区别。
通过启用批处理更新,还可以提高群集复制性能。这可以通过slave_allow_batching
在从属mysqld进程上设置系统变量来完成。通常,更新会在收到后立即应用。但是,使用批处理会导致以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)