重启SQL节点

重启一个 SQL 节点很简单——只需像往常一样重启 mysqld 进程,并执行前面提到的检查以确保节点正确重启。

[root@node1 ~]# service mysql restart
Shutting down MySQL.. [ OK ]
Starting MySQL.. [ OK ]

重启存储节点

有两种方法可以重新启动存储节点。
对于这两种方法,第一步都是在管理客户端检查 SHOW 命令的输出,以确保在同一节点组中至少有一个其他在线(不启动或者关闭)节点。
在我们的示例集群中,我们在节点组 0 中有存储节点 ID 3 和 4,在节点组 1 中有存储节点 ID 5 和 6.

重新启动节点的两个选项如下: 首先,从管理客户端可以使用 [nodeid] RESTART 命令重新启动节点:

ndb_mgm> 3 status
Node 3: started (mysql-5.1.34 ndb-7.0.6)
ndb_mgm> 3 RESTART
Node 3: Node shutdown initiated
Node 3: Node shutdown completed, restarting, no start.
Node 3 is being restarted
ndb_mgm> 3 status
Node 3: starting (Last completed phase 4) (mysql-5.1.34 ndb-7.0.6)
Node 3: Started (version 7.0.6)
ndb_mgm> 3 status
Node 3: started (mysql-5.1.34 ndb-7.0.6)

其次,在存储节点本身上,ndbd 进程可以简单地被终止并重新启动。
请记住,ndbd 有两个进程——除了主进程之外还有一个天使进程。
我们必须同时终止这两个进程。

[root@node4 ~]# ps aux | grep ndbd
root 4082 0.0 0.4 33480 2316 ? Ss Jul08 0:00 ndbd --initial
root 4134 0.1 17.4 426448 91416 ? Sl Jul08 0:02 ndbd --initial
root 4460 0.0 0.1 61152 720 pts/0 R+ 00:11 0:00 grep ndbd
[root@node4 ~]# kill 4082 4134
[root@node4 ~]# ps aux | grep ndbd | grep -v grep | wc -l
0

一旦我们杀死了 ndbd 进程,并确保没有名为 ndbd 的进程正在运行,我们就可以重新启动 ndbd 进程:

[root@node4 ~]# ndbd
2009-07-09 00:12:03 [ndbd] INFO -- Configuration fetched from '10.0.0.5:1186', generation: 1

如果我们在此过程中让管理客户端保持连接状态,我们可以看到管理节点在死节点上启动,然后允许它重新加入集群:

ndb_mgm> Node 6: Node shutdown completed. Initiated by signal 15.
ndb_mgm> Node 6: Started (version 7.0.6)
ndb_mgm> 6 status
Node 6: started (mysql-5.1.34 ndb-7.0.6)

设置

对于这篇文章,我们将使用以下集群设置:

  • 四个存储节点
  • 1个管理节点
  • 两个 SQL 节点

此集群的管理客户端上的 SHOW 命令输出如下:

ndb_mgm> SHOW
Cluster Configuration
--------------------
[ndbd(NDB)] 4 node(s)
id=3 @10.0.0.1 (mysql-5.1.34 ndb-7.0.6, Nodegroup: 0)
id=4 @10.0.0.2 (mysql-5.1.34 ndb-7.0.6, Nodegroup: 0)
id=5 @10.0.0.3 (mysql-5.1.34 ndb-7.0.6, Nodegroup: 1, Master)
id=6 @10.0.0.4 (mysql-5.1.34 ndb-7.0.6, Nodegroup: 1)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.0.0.5 (mysql-5.1.34 ndb-7.0.6)
[mysqld(API)] 4 node(s)
id=11 @10.0.0.1 (mysql-5.1.34 ndb-7.0.6)
id=12 @10.0.0.2 (mysql-5.1.34 ndb-7.0.6)
id=13 (not connected, accepting connect from any host)
id=14 (not connected, accepting connect from any host)
更多: zhilu jiaocheng

重启管理节点

最好通过简单地终止 ndb_mgmd 进程并重新启动它来重新启动管理节点。
当集群中没有管理节点时,集群没有中央日志记录,存储和 API 节点无法启动或者重新启动(因此如果它们失败,它们将保持死亡状态)。
另外,从管理客户端发起的进程(如热备份)也不能运行。

首先,我们将 ndb_mgmd 进程的进程 ID 传递给 kill 命令:

[root@node5 mysql-cluster]# kill $(pidof ndb_mgmd)

这将杀死管理节点,因此现在再次启动它:

[root@node5 mysql-cluster]# ndb_mgmd --config-file=config.ini
2009-07-09 00:30:00 [MgmSrvr] INFO -- NDB Cluster Management Server. mysql-5.1.34 ndb-7.0.6
2009-07-09 00:30:00 [MgmSrvr] INFO -- Loaded config from '//mysql-cluster/ndb_1_config.bin.1'

最后,验证管理节点是否正常工作:

[root@node5 mysql-cluster]# ndb_mgm
-- NDB Cluster -- Management Client -
ndb_mgm> 1 status
Node 1: connected (Version 7.0.6)
如何在不停机的情况下重启 MySQL 集群

高可用系统的关键方面之一是可以在不中断用户服务的情况下进行日常维护。
MySQL 集群通过其无共享架构实现了这一点,在这个秘籍中,我们将介绍如何在线重新启动三种类型的节点(而不会使整个集群停机)。

日期:2020-09-17 00:11:09 来源:oir作者:oir