下一个任务是创建一个“目标”集群。完成后,我们修改目标集群的配置,直到它与我们要导入的野生集群的配置相匹配。在示例的稍后部分,我们还展示了如何在尝试执行实际配置导入之前在试运行中测试配置。
要创建并配置目标集群,请执行以下步骤:
安装 MySQL Cluster Manager 并在所有主机上使用启动 wild cluster 进程的同一系统用户启动mcmd。完成此操作后,您可以在这些主机中的任何一台上启动 mcm客户端(请参阅 第 4.3 节“启动 MySQL Cluster Manager 客户端”)以执行接下来的几个步骤。
使用命令创建一个包含所有四个 wild 集群主机的 MySQL Cluster Manager 站点
create site,如下所示:mcm> create site --hosts=198.51.100.102,198.51.100.103,198.51.100.104 newsite; +---------------------------+ | Command result | +---------------------------+ | Site created successfully | +---------------------------+ 1 row in set (0.15 sec)我们已将此站点命名为
newsite。您应该能够在list sites命令的输出中看到它,类似于此处显示的内容:mcm> list sites; +---------+------+-------+----------------------------------------------+ | Site | Port | Local | Hosts | +---------+------+-------+----------------------------------------------+ | newsite | 1862 | Local | 198.51.100.102,198.51.100.103,198.51.100.104 | +---------+------+-------+----------------------------------------------+ 1 row in set (0.01 sec)使用命令添加引用 MySQL NDB Cluster 二进制文件的 MySQL Cluster Manager 包
add package;使用命令的--basedir选项指向 MySQL NDB Cluster 可执行文件的正确位置。此处显示的命令创建了这样一个包,名为newpackage:mcm> add package --basedir=/home/ari/bin/cluster newpackage; +----------------------------+ | Command result | +----------------------------+ | Package added successfully | +----------------------------+ 1 row in set (0.70 sec)您不需要在路径
bin中包含包含 MySQL NDB Cluster 可执行文件的目录 。--basedir如果可执行文件在 中/home/ari/bin/cluster/bin,则指定就足够了/home/ari/bin/cluster;MySQL Cluster Manager 自动检查bin由 指定的目录中的目录中 的二进制文件--basedir。创建目标集群,其中至少包括独立集群使用的一些相同进程和主机。 不要包括不属于该集群的任何进程或主机。为了防止潜在的中断过程或集群操作意外干扰导入过程,强烈建议您使用命令的
--import选项创建用于导入的集群create cluster。您还必须注意
config.ini为每个节点保留正确的节点 ID(如前面所示的文件中所列)。以下命令创建
newcluster用于导入的集群,包括管理和数据节点,但不包括 SQL 或 “免费” API 节点(我们在下一步中添加):mcm> create cluster --import --package=newpackage \ --processhosts=ndb_mgmd:50@198.51.100.102,ndbd:2@198.51.100.103,ndbd:3@198.51.100.104 \ newcluster; +------------------------------+ | Command result | +------------------------------+ | Cluster created successfully | +------------------------------+ 1 row in set (0.96 sec)show status您可以通过使用--process(-r) 选项 检查 的输出来验证集群是否已正确创建,如下所示:mcm> show status -r newcluster; +--------+----------+----------------+--------+-----------+------------+ | NodeId | Process | Host | Status | Nodegroup | Package | +--------+----------+----------------+--------+-----------+------------+ | 50 | ndb_mgmd | 198.51.100.102 | import | | newpackage | | 2 | ndbd | 198.51.100.103 | import | n/a | newpackage | | 3 | ndbd | 198.51.100.104 | import | n/a | newpackage | +--------+----------+----------------+--------+-----------+------------+ 3 rows in set (0.05 sec)add process如有必要,使用一个或多个命令 添加上一步中未包含的野生集群中的任何剩余进程和主机。我们还没有考虑到来自 wild 集群的两个节点:节点 ID 为 51 的 SQL 节点,在主机上198.51.100.102,以及节点 ID 为 52 的 API 节点,它没有绑定到任何特定的主机。您可以使用以下命令将这两个进程添加到newcluster:mcm> add process --processhosts=mysqld:51@198.51.100.102,ndbapi:52@* newcluster; +----------------------------+ | Command result | +----------------------------+ | Process added successfully | +----------------------------+ 1 row in set (0.41 sec)再次检查 的输出
show status-r,我们看到mysqld和ndbapi进程已按预期添加:mcm> show status -r newcluster; +--------+----------+----------------+--------+-----------+------------+ | NodeId | Process | Host | Status | Nodegroup | Package | +--------+----------+----------------+--------+-----------+------------+ | 50 | ndb_mgmd | 198.51.100.102 | import | | newpackage | | 2 | ndbd | 198.51.100.103 | import | n/a | newpackage | | 3 | ndbd | 198.51.100.104 | import | n/a | newpackage | | 51 | mysqld | 198.51.100.102 | import | | newpackage | | 52 | ndbapi | * | import | | | +--------+----------+----------------+--------+-----------+------------+ 5 rows in set (0.06 sec)您还可以看到,由于
newcluster是使用create cluster命令的--import选项创建的,因此该集群中所有进程(包括我们刚刚添加的进程)的状态为import. 这意味着我们还不能启动newcluster它的任何进程。import状态及其对 集群进程的 影响newcluster一直存在,直到我们完成将另一个集群导入到newcluster.目标
newcluster集群现在具有与原始独立集群相同的进程、相同的节点 ID 和相同的主机。我们准备好进行下一步。import config使用命令 在目标集群中复制 wild 集群的配置属性 。首先通过使用选项运行命令来测试命令的效果--dryrun(该步骤仅在您 在集群的 mysqld 节点上创建了 mcmd 用户时才有效):重要的在执行此命令之前,有必要在mcm客户端中使用该命令
ndb_mgmd为mysqld进程 设置任何非默认端口。setmcm> import config --dryrun newcluster; +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Command result | +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Import checks passed. Please check /home/ari/bin/mcm_data/clusters/newcluster/tmp/import_config.49d541a9_294_0.mcm on host localhost.localdomain for settings that will be applied. | +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (6.87 sec)如 的输出所示 ,您可以 在文件中看到不带选项 的命令
import config --dryrun将复制到的配置属性和值 。如果您在文本编辑器中打开此文件,您将看到一系列可完成此任务的命令,类似于此处显示的内容:newcluster--dryrun/path-to-mcm-data-repository/clusters/clustername/tmp/import_config.message_id.mcmset# The following will be applied to the current cluster config: set NoOfReplicas:ndbd=2 newcluster; set DataDir:ndb_mgmd:50=/home/ari/bin/cluster/wild-cluster/50/data newcluster; set DataDir:ndbd:2=/home/ari/bin/cluster/wild-cluster/2/data newcluster; set DataDir:ndbd:3=/home/ari/bin/cluster/wild-cluster/3/data newcluster; set basedir:mysqld:51=/home/ari/bin/cluster/ newcluster; set datadir:mysqld:51=/home/ari/bin/cluster/wild-cluster/51/data/ newcluster; set sql_mode:mysqld:51="NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES" newcluster; set ndb_connectstring:mysqld:51=198.51.100.102 newcluster;在命令行而不是在配置文件中使用的选项来启动独立集群的节点不会被
import config命令导入到目标集群中;此外,它们将在运行时导致以下情况之一发生:import config--dryrun对于某些选项,MySQL Cluster Manager 会发出警告 “ Option
<param>may be removed on next restart of process<type><nodeid>” , 这意味着这些选项不会导入到目标集群中,因此在这些节点重启后不会应用。进口。以下是每种节点类型的此类选项列表:对于ndb_mgmd节点: - 、、、、、
--configdir_--initial--log-name--reload--verbose对于ndbd和 ndbmtd节点:
--connect-retries,--connect-delay,--daemon=false,--nodaemon,--verbose,--core-file对于mysqld节点 :
--ndbcluster,--ndbinfo-*选项 ,,,,,--verbose_--datadir--defaults-group-suffix--core-file
对于其他一些选项,虽然它们的值也不会导入到目标集群中,但不会为它们发出警告。以下是每种节点类型的此类选项列表:
对于ndb_mgmd节点:
--config-cache,--daemon,--ndb-nodeid, ---nodaemon=false,--config-file,--skip-config-cache对于ndbd和 ndbmtd节点:
--daemon,--foreground,--initial,--ndb-connectstring,--connect-string,--ndb-mgmd-host,--ndb-nodeid,--nodaemon=false对于mysqld节点:
--ndb-connectstring,--ndb-mgmd-host,--ndb-nodeid,--defaults-file,--no-defaults,--basedir
对于不属于上述两个组的选项,在命令行中使用它们启动独立集群的节点将导致 命令失败并出现错误,并抱怨这些选项不受支持。
import config--dryrun
当您遇到上述第一种或第三种情况时,您必须执行以下操作之一:
如果目标集群需要这些选项并且可以使用
set命令设置它们(请参阅 仅限命令行的属性),请使用该set命令为目标集群设置它们,然后重试该 命令。import config--dryrun如果目标集群不需要这些选项,或者无法使用该
set命令设置,请在没有这些选项的情况下重新启动 wild 集群的节点,然后重试该 命令。import config--dryrun
试运行成功后,您现在可以使用此处显示的命令将 wild 集群的配置导入
newcluster:mcm> import config newcluster; +------------------------------------------------------------------------------------------------------------------+ | Command result | +------------------------------------------------------------------------------------------------------------------+ | Configuration imported successfully. Please manually verify plugin options, abstraction level and default values | +------------------------------------------------------------------------------------------------------------------+作为替代方案,
import config您可以根据需要更改试运行生成的文件,而不是使用命令 导入所有设置,然后通过使用mcm代理 执行该文件来导入设置 :/path-to-mcm-data-repository/clusters/clustername/tmp/import_config.message_id.mcmmcm> source /path-to-mcm-data-repository/clusters/clustername/tmp/import_config.message_id.mcm您应该
newcluster根据野集群的配置仔细检查生成的配置。如果您发现任何不一致,您必须newcluster使用适当的set命令更正它们。