介绍通过单个复制区域通道启动NDB集群复制的操作步骤。
通过发出以下命令启动MySQL复制源服务器:
壳牌年代> mysqld——ndbcluster——server-id=id\——log-bin——ndb-log-bin &
在前面的声明中,
id
是这个服务器的唯一ID(看到了吗第23.6.2节“NDB集群复制的一般要求”).这将启动服务器的mysqld使用正确的日志格式启用二进制日志记录的进程。在NDB 8.0中,也有必要启用更新日志NDB
表,使用——ndb-log-bin
选择;这与之前版本的NDB集群有所不同,在以前的版本中,该选项默认启用。请注意您还可以使用
——binlog-format =混合
,在这种情况下,在集群之间复制时自动使用基于行的复制。NDB集群复制不支持基于语句的二进制日志记录第23.6.2节“NDB集群复制的一般要求”).启动MySQL副本服务器,如下所示:
壳牌R> mysqld——ndbcluster——server-id=id&
在刚才显示的命令中,
id
是副本服务器的唯一ID。不需要在副本上启用日志记录。请注意除非您希望立即开始复制,否则请将复制线程的启动延迟到适当的时候
启动副本|从站
声明已经发布,如下面的步骤4所述。方法启动副本,可以做到这一点——skip-slave-start
选项,通过包含skip-slave-start
在复制品的my.cnf
文件,或从MySQL 8.0.24,通过设置skip_slave_start
系统变量。需要将复制服务器与源服务器的复制二进制日志同步。如果二进制日志记录之前没有在源上运行,则在副本上运行以下语句:
mysqlR>修改master为-> master_log_file = ", -> master_log_pos =4;或者从MySQL 8.0.23: MySQLR>更改复制源为-> source_log_file = ", -> source_log_pos =4;
这指示副本从日志的起始点开始读取源服务器的二进制日志。否则—也就是说,如果您使用备份从源加载数据—请参阅第23.6.8节,“使用NDB集群复制实现故障转移”,以获取有关如何使用for的正确值的信息
MASTER_LOG_FILE
而且MASTER_LOG_POS
在这种情况下。命令中发出这个命令,指示副本开始应用复制mysql副本上的客户端:
mysqlR>启动从站;或者从MySQL 8.0.22: MySQLR>开始副本;
这还启动了从源到副本的数据和更改的传输。
也可以使用两个复制通道,其方式类似于下一节中描述的过程;这与使用单个复制区域通道之间的区别将在第23.6.7节“使用两个复制区域通道进行NDB集群复制”.
还可以通过启用来提高集群复制性能批处理更新.可以通过设置slave_allow_batching
副本上的系统变量mysqld流程。通常,更新一旦收到就会被应用。但是,使用批处理会导致每个更新以32 KB的批量应用;这可能导致更高的吞吐量和更少的CPU使用,特别是在单个更新相对较小的情况下。
批处理工作在每个纪元的基础上;属于多个事务的更新可以作为同一批处理的一部分发送。
当到达一个纪元的结束时,应用所有未完成的更新,即使更新总数小于32 KB。
批处理可以在运行时打开和关闭。要在运行时激活它,你可以使用以下两条语句之一:
SET GLOBAL slave_allow_batch = 1;SET GLOBAL slave_allow_batch = ON;
如果一个特定的批处理导致了问题(比如一个语句的效果似乎没有被正确复制),批处理可以使用以下语句中的任何一个去激活:
SET GLOBAL slave_allow_batch = 0;SET GLOBAL slave_allow_batching = OFF;
您可以通过适当的方法检查当前是否正在使用批处理显示变量
像这样的声明:
mysql>显示“slave%”这样的变量+---------------------------+-------+ | Variable_name |值 | +---------------------------+-------+ | 上slave_allow_batching | | | slave_compressed_protocol了| | | slave_load_tmpdir | / tmp | | slave_net_timeout | 3600 | | slave_skip_errors了| | | slave_transaction_retries | 10 | +---------------------------+-------+ 6行集(0.00秒)