欢迎 on it road

SQL节点

SQL 节点 (mysqld) 应以与在 MySQL 服务器中独立使用时相同的方式停止。
选项是:

1. mysql管理员

mysqladmin 实用程序可以使用 shutdown 命令触发 mysqld 关闭,例如:

shell$ mysqladmin --user=root --password --socket=/var/lib/mysql/mysql.sock shutdown
Enter password:

2. SIGTERM

对于 mysqld,发送 SIGTERM 信号相当于使用 mysqladmin 关闭节点。
优点是不需要密码。
例如:

shell$ kill -s SIGTERM 22327

3. SHUTDOWN SQL 语句

这在 MySQL Cluster 7.5 及更高版本中可用:

mysql> SHUTDOWN;
Query OK, 0 rows affected (0.00 sec)

管理和数据节点

1. 使用 ndb_mgm

关闭管理或者数据节点的首选方法是使用 ndb_mgm 管理客户端。
我们使用 ndb_mgm 进行连接,类似于:

shell$ ndb_mgm --ndb_connectstring=192.168.56.101:1186,192.168.56.102:1186
-- NDB Cluster -- Management Client -
ndb_mgm>

或者,我们可以使用 -e 或者 -execute 参数直接指定命令,例如:

shell$ ndb_mgm --ndb_connectstring=192.168.56.101:1186,192.168.56.102:1186 -e "SHUTDOWN"

根据是应该关闭单个节点还是整个集群,使用 STOP 或者 SHUTDOWN 命令:

  1. 关闭整个集群(所有管理和数据节点):
ndb_mgm> SHUTDOWN
  1. 要关闭 NodeId = 1 的节点:
ndb_mgm> 1 STOP

在任何一种情况下,ndb_mgm 都会阻塞,直到一个或者多个节点完成关闭。

2. 使用信号

停止单个节点的另一种方法是发送 SIGTERM 信号,例如:

shell$ kill -s SIGTERM 18693

或者

$ kill -15 18693

ndb_mgm STOP 命令与 SIGTERM 的比较

但是对于数据节点,通过使用 ndb_mgm 和发送 SIGTERM 信号来停止节点不是一回事:

  • ndb_mgm -e "[NodeId] STOP" 经过多步关闭,旨在在实际关闭之前“卸载”正在停止的节点。
  • SIGTERM 告诉节点尽快退出。

这意味着特别是对于一些只读事务的并发流量,与 STOP 命令相比,在发送 SIGTERM 信号时预计会看到更多的中止。
但是,两者都不能保证零中止。

如何关闭 MySQL 集群中的节点

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

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