『 Thinking in DistSQL 』 Proxy 实例的启用和停用

背景 :man_judge:

上期给大家介绍了 SHOW INSTANCE LIST 语法,通过 SHOW INSTANCE LIST 语句可以查看当前集群中 Proxy 实例的状态信息;本期紧接上期内容为大家介绍如何通过 DistSQL 启停 Proxy 实例

:triangular_flag_on_post: 语法

RAL 语法 DISABLE INSTNCE 以及 ENABLE INSTANCE

完整语法如下:

关键字解析:

  • instanceId :此处 instanceId 提供三种输入形式,默认的 IP 加 PORT 形式、标识符形式和字符形式

语法作用

  • DISABLE INSTANCE instanceId :将实例由启动状态调整为停止状态
  • ENABLE INSTANCE instanceId:将实例由停止状态调整为启动状态

:exclamation: 特别说明

  • 只允许集群模式下使用
  • instanceId 默认为 IP@PORT 的形式
  • DISABLE INSTANCE 语法并不会终止目标实例的进程,只是在逻辑上对其进行停用
  • DISABLE INSTANCE instanceId 无法停止正在执行该语句的 Proxy 实例;举例来说 在实例 instance_A 上执行 DISABLE INSTANCE instance_A 时,会出现 'instance_A' is the currently in use instance and cannot be disabled的异常

实战

准备工作

参考 SHOW INSTANCE LIST ,需要先以集群模式启动多个 Proxy (5.1.1-SNAPSHOT)实例,此处将启动12.3.4.56@331012.3.4.56@3309 两个实例

:small_orange_diamond: 停用实例

首先使用命令行工具连接至实例 12.3.4.56@3309,在执行 DISABLE INSTANCE instanceId 之前,先通过 SHOW INSTANCE LIST 查看当前集群下的 Proxy 实例

+----------------+-----------+------+---------+-----------+--------+
| instance_id    | host      | port | status  | mode_type | labels |
+----------------+-----------+------+---------+-----------+--------+
| 12.3.4.56@3310 | 12.3.4.56 | 3310 | enabled | Cluster   |        |
| 12.3.4.56@3309 | 12.3.4.56 | 3309 | enabled | Cluster   |        |
+----------------+-----------+------+---------+-----------+--------+

之后通过 DISABLE INSTANCE 12.3.4.56@3310 停用实例

执行后通过 SHOW INSTANCE LIST 可以发现实例 12.3.4.56@3310statusenabled 变为 disabled

+----------------+-----------+------+----------+-----------+--------+
| instance_id    | host      | port | status   | mode_type | labels |
+----------------+-----------+------+----------+-----------+--------+
| 12.3.4.56@3310 | 12.3.4.56 | 3310 | disabled | Cluster   |        |
| 12.3.4.56@3309 | 12.3.4.56 | 3309 | enabled  | Cluster   |        |
+----------------+-----------+------+----------+-----------+--------+

最后使用命令行连接至 12.3.4.56@3310 执行任意的 DistSQL 进行验证,如出现 Circuit break mode is ON. 则表示停用成功

此处任然以 SHOW INSTANCE LIST 为例,连接至 12.3.4.56@3310 执行结果如下

1000 - Circuit break mode is ON.

:small_blue_diamond:启用实例

刚才已经通过 DISABLE INSTANCE instanceId 完成了实例的停用,接下来将通过 ENABLE INSTANCE instanceId 将停用的实例 12.3.4.56@3310 重新启用;完整的命令为 ENABLE INSTANCE 12.3.4.56@3310

在执行后,尝试使用命令行工具连接至 12.3.4.56@3310 并执行 SHOW INSTANCE LIST

+----------------+-----------+------+---------+-----------+--------+
| instance_id    | host      | port | status  | mode_type | labels |
+----------------+-----------+------+---------+-----------+--------+
| 12.3.4.56@3310 | 12.3.4.56 | 3310 | enabled | Cluster   |        |
| 12.3.4.56@3309 | 12.3.4.56 | 3309 | enabled | Cluster   |        |
+----------------+-----------+------+---------+-----------+--------+

可以发现 12.3.4.56@3310 已经能够执行 DistSQL 命令,并且展示的结果中 12.3.4.56@3310status 已经由 disabled 修改为 enabled

以上就是通过 DistSQL 对实例启停的过程。 :wave:

京ICP备2021015875号