测试和执行独立 MySQL NDB Cluster 到 MySQL Cluster Manager 的迁移包括以下步骤:
import cluster
使用with--dryrun
选项 执行建议导入的测试运行 。使用此选项时,MySQL Cluster Manager 检查不匹配的配置属性、丢失或无效的进程或主机、丢失或无效的 PID 文件以及其他错误,并对发现的任何错误发出警告,而不实际执行任何进程或数据迁移(仅当您 在集群的 mysqld 节点上创建了 mcmd 用户时,该步骤才有效:mcm> import cluster --dryrun newcluster;
如果出现错误,请更正它们,并重复上一步中所示的空运行,直到不再返回错误为止。以下列表包含您可能遇到的一些常见错误及其可能的原因:
MySQL Cluster Manager 需要特定的 MySQL 用户和权限来管理 SQL 节点。如果
mcmd
MySQL 用户帐户设置不正确,您可能会看到 No access for user...、 Incorrect grants for user...或其他可能的错误。按照 第 3.5.2.1 节“为迁移准备独立集群”中此步骤中 给出的说明 来解决此问题。如前所述,
ndbapi
受 MySQL Cluster Manager 控制的每个集群进程(类型为 的进程除外)必须具有有效的 PID 文件。PID 文件丢失、命名错误或无效可能会产生错误,例如 PID 文件不存在于进程...、PID ... 未运行 ...和PID ... 是类型...。请参阅 第 3.5.2.2 节,“验证所有集群进程 PID 文件”。流程版本不匹配也可能产生看似随机的错误,其原因有时难以追踪。确保所有节点都提供了正确版本的 MySQL NDB Cluster 软件,并且它与软件的版本相同。
独立集群中的每个数据节点天使进程都必须在导入之前终止。正在运行的天使进程可能会导致错误,例如Angel process
pid
exists ...或Processpid
is an angel process for ...。当您看到此类错误时,请执行以下操作:对于 MySQL Cluster Manager 1.4.6 及更早版本:请参阅 第 3.5.2.1 节“为迁移准备独立集群”中 的此步骤。
对于 MySQL Cluster Manager 1.4.7 及更高版本:如果这些是您遇到的唯一错误,请继续执行下一步。天使进程和数据节点 PID 将由 在导入过程的最后一步
--remove-angel
与命令一起使用的选项处理。import cluster
在创建要导入的目标站点、程序包和集群时,必须准确反映进程的数量、它们的类型以及它们在独立集群中驻留的主机。否则,您可能会收到诸如Process
id
reported#
processes ...、Processid
... does not match configured process ...、Processid
not configured ...和Processid
does not match configured process ...之类的错误。看 第 3.5.2.3 节,“创建和配置目标集群”。其他可能导致特定错误的因素包括处于错误状态的进程、使用不受支持的命令行选项启动的进程(有关详细信息,请参阅 第 3.5.2.3 节“创建和配置目标集群” )或没有必需的选项,以及进程有错误的进程 ID,或使用错误的节点 ID。
当
import cluster --dryrun
不再警告任何错误时,您可以使用import cluster
命令执行导入,这次省略该--dryrun
选项。对于 MySQL Cluster Manager 1.4.6 及更早版本:
mcm> import cluster newcluster; +-------------------------------+ | Command result | +-------------------------------+ | Cluster imported successfully | +-------------------------------+ 1 row in set (5.58 sec)
对于 MySQL Cluster Manager 1.4.7 及更高版本:使用命令的
--remove-angel
选项import cluster
,它会在导入集群之前终止数据节点的天使进程并调整数据节点的 PID 文件以包含数据节点进程自己的 PID:mcm> import cluster --remove-angel newcluster; +-------------------------------+ | Command result | +-------------------------------+ | Cluster imported successfully | +-------------------------------+ 1 row in set (5.58 sec)
可以看到wild cluster现在已经被导入,并且被MySQL Cluster Manager管理:
mcm> show status -r newcluster; +--------+----------+----------------+---------+-----------+------------+ | NodeId | Process | Host | Status | Nodegroup | Package | +--------+----------+----------------+---------+-----------+------------+ | 50 | ndb_mgmd | 198.51.100.102 | running | | newpackage | | 2 | ndbd | 198.51.100.103 | running | 0 | newpackage | | 3 | ndbd | 198.51.100.104 | running | 0 | newpackage | | 51 | mysqld | 198.51.100.102 | running | | newpackage | | 52 | ndbapi | * | added | | | +--------+----------+----------------+---------+-----------+------------+ 5 rows in set (0.01 sec)