导入过程的下一步是准备迁移的野生集群。除其他外,这需要从任何系统服务管理工具的控制中移除集群进程,确保所有管理节点都在禁用配置缓存的情况下运行,并且对于 MySQL Cluster Manager 1.4.6 和更早版本,杀死任何数据节点天使进程可能正在运行。本节的其余部分提供了有关执行这些任务的更多详细信息。
在继续进行任何迁移之前,强烈建议 使用ndb_mgm客户端的 命令进行备份。
START BACKUP
任何受系统引导进程管理工具(例如
/etc/init.d
Linux 系统或 Windows 平台上的服务管理器)控制的集群进程都应从该工具的控制中移除。有关如何执行此操作的信息,请参阅操作系统的文档。确保在这样做的过程中不要停止任何正在运行的集群进程。在每个wild集群的SQL节点上创建一个MySQL用户账户,供MySQL Cluster Manager执行后面步骤中的
import config
和import cluster
命令。MySQL Cluster Manager 用于访问 MySQL 节点的帐户名和密码由 mcmd客户端选项manager-username
和manager-password
(默认值为mcmd
和super
, 分别); 在野集群的 SQL 节点上创建帐户时使用这些凭据,并授予用户在服务器上的所有权限,包括授予权限的权限。例如,使用mysql客户端as 登录wild集群的各个SQL节点,root
执行如下所示的SQL语句:CREATE USER 'mcmd'@'localhost' IDENTIFIED BY 'super'; GRANT ALL PRIVILEGES ON *.* TO 'mcmd'@'localhost' WITH GRANT OPTION;
请记住,这必须在所有 SQL 节点上完成,除非在 wild 集群上启用了分布式权限。
确保 wild 集群的每个节点都已启动,其节点 ID 是
--ndb-nodeid
在命令行选项中指定的,而不仅仅是在集群配置文件中。这是导入期间mcmd正确识别每个进程所必需 的。您可以检查ps -ef |是否满足要求 。grep命令,显示进程启动时使用的选项:$> ps -ef | grep ndb_mgmd ari 8118 1 0 20:51 ? 00:00:04 /home/ari/bin/cluster/bin/ndb_mgmd --config-file=/home/ari/bin/cluster/wild-cluster/config.ini --configdir=/home/ari/bin/cluster/wild-cluster --initial --ndb-nodeid=50
(为清楚起见,在本节和后续部分的 ps -ef | grep命令的命令输出中,我们将跳过
grep
进程本身的输出行。)如果不满足要求,则使用
--ndb-nodeid
选项重新启动进程;对于您在这些步骤中重启的任何节点,也可以在下面的步骤 (e) 或 (f) 中执行重启。确保为每个管理节点禁用配置缓存。由于默认情况下启用配置缓存,除非已使用该选项启动管理节点,否则除了
--config-cache=false
之前启动的其他选项之外,您还需要使用该选项停止并重新启动它。在 Linux 上,我们可以再次使用 ps来获取完成这一步所需的信息。
198.51.100.102
在管理节点所在的 host 上的 shell 中:$> ps -ef | grep ndb_mgmd ari 8118 1 0 20:51 ? 00:00:04 /home/ari/bin/cluster/bin/ndb_mgmd --config-file=/home/ari/bin/cluster/wild-cluster/config.ini --configdir=/home/ari/bin/cluster/wild-cluster --initial --ndb-nodeid=50
进程ID为8118,默认开启配置缓存,使用
--configdir
选项指定配置目录。首先,使用kill终止管理节点 ,如下所示,使用之前从 ps获得的进程 ID :$> kill -15 8118
验证管理节点进程是否已停止——它不应再出现在另一个ps命令的输出中。
现在,如前所述重新启动管理节点,禁用配置缓存并使用之前启动时使用的选项。此外,如上面步骤 (d) 中所述,请确保
--ndb-nodeid
在重新启动时指定该选项:$> /home/ari/bin/cluster/bin/ndb_mgmd --config-file=/home/ari/bin/cluster/wild-cluster/config.ini --config-cache=false --ndb-nodeid=50 MySQL Cluster Management Server mysql-5.7.29-ndb-7.6.13 2016-11-08 21:29:43 [MgmtSrvr] INFO -- Skipping check of config directory since config cache is disabled.
警告此步骤中重启 ndb_mgmd时 不要使用
0
orOFF
for 选项的值 。使用这些值中的任何一个而不是此时会导致管理节点进程的迁移在导入过程的稍后点失败。--config-cache
false
使用ps 验证进程是否按预期运行 :
$> ps -ef | grep ndb_mgmd ari 10221 1 0 19:38 ? 00:00:09 /home/ari/bin/cluster/bin/ndb_mgmd --config-file=/home/ari/bin/cluster/wild-cluster/config.ini --config-cache=false --ndb-nodeid=50
管理节点现在已准备好迁移。
重要的虽然我们的示例集群只有一个管理节点,但 MySQL NDB 集群可以有多个。在这种情况下,您必须确保 使用此步骤中描述的步骤 为每个管理禁用配置缓存。
对于 MySQL Cluster Manager 1.4.6 及更早版本:使用系统工具终止每个数据节点天使进程。天使进程在集群运行期间监视数据节点进程,并在必要时尝试重新启动数据节点进程(有关详细信息,请参阅 此常见问题解答)。在导入集群之前,必须先停止天使进程。在 Linux 系统上,您可以通过在进程主机上执行的ps -ef 命令的输出来识别 Angel 进程
198.51.100.103
这是在示例集群 的主机上执行此操作$> ps -ef | grep ndbd ari 12836 1 0 20:52 ? 00:00:00 ./bin/ndbd --initial --ndb-nodeid=2 --ndb-connectstring=198.51.100.102 ari 12838 12836 2 20:52 ? 00:00:00 ./bin/ndbd --initial --ndb-nodeid=2 --ndb-connectstring=198.51.100.102
虽然实际的数据节点进程及其天使进程都显示为进程ndbd,但您可以通过查看进程 ID 来识别每个进程。天使进程的进程 ID(在上面的示例输出中为斜体)在命令输出中出现了两次,一次是它自己(在输出的第一行),一次是作为实际数据节点守护进程的父进程的 ID (在第二行)。使用 kill命令终止具有标识的进程 ID 的进程,如下所示:
$> kill -9 12836
通过再次发出ps -ef命令 验证 angel 进程已被终止并且另一个ndbd进程(非天使数据节点守护进程)仍在运行 ,如下所示:
$> ps -ef | grep ndbd ari 12838 1 0 20:52 ? 00:00:02 ./bin/ndbd --initial --ndb-nodeid=2 --ndb-connectstring=198.51.100.102
现在在 host 上的 shell 中重复此过程
198.51.100.104
,如下所示:$> ps -ef | grep ndbd ari 11274 1 0 20:57 ? 00:00:00 ./cluster//bin/ndbd --initial --ndb-nodeid=3 --ndb-connectstring=198.51.100.102 ari 11276 11274 0 20:57 ? 00:00:01 ./cluster//bin/ndbd --initial --ndb-nodeid=3 --ndb-connectstring=198.51.100.102 $> kill -9 11274 $> ps -ef | grep ndbd ari 11276 1 0 20:57 ? 00:00:01 ./cluster//bin/ndbd --initial --ndb-nodeid=3 --ndb-connectstring=198.51.100.102
对于 MySQL Cluster Manager 1.4.7 及更高版本:无需手动终止天使进程,因为 在导入过程的最后一步
--remove-angel
选项与命令一起使用import cluster
wild 集群的数据节点现在已准备好迁移。