VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

集群使用

集群启停

启动集群

1、启动dcs,启动dcs第一个节点时会出现阻塞,第二个节点启动后退出阻塞。

在各服务器执行:

systemctl start dcs

2、先启动主库has,再启动备库has。注意,必须先保证dcs已经启动。

在各服务器执行:

systemctl start has

停止集群

停止集群需要按特定步骤,以避免出现不必要的问题,具体如下:

先停has,再停dcs,注意,先停备库,再停主库,防止先停主库发生不必要的自动切换。

1、在各服务器执行:

systemctl stop has

2、在各服务器执行:

systemctl stop dcs

查看集群

使用数据库用户在安装有has的机器上进入安装目录下的bin目录执行./hasctl -c <yml配置文件> list <集群名>,其中<集群名>可以省略。后续默认hasctl都在在目录下运行。

例如:

./hasctl -c /home/vastbase/has/etc/vastbase.yml list vastbase

执行成功后会显示主备库各节点的信息,下图为一主两备的情况:

主备切换

参考集群日常维护

故障切换

在主库机器故障时,备库自动升级为主库。模拟该故障的情况可以使用kill命令杀掉管理主库的has进程或关掉安装有主库的机器等其它类似操作,然后在安装有备库的机器上执行集群查看命令查看备库节点的信息,此时备库的角色会显示为leader。

故障发生后时,使用数据库用户查询各节点信息显示如下:

  • 集群初始阶段
  • 主库停止阶段,state显示stopped,备库role显示为leader:
  • 无法获取前主库的信息,只显示当前存活节点信息:

hasctl

命令行工具 hasctl 主要用于与 HAS 的 REST API 和 DCS 交互,它使得在集群中执行操作变得更容易。

以下介绍 hasctl 的部分常用选项。

常用选项

hasctl 本身有以下命令行参数:

  • -c / --config-file

    为 hasctl 指定配置文件的路径。

  • -d / --dcs-url / --dcs

    为 HAS 使用的 DCS 提供连接字符串。

  • -k / --insecure

    绕过 REST API 服务器 SSL 证书验证的标志。

hasctl edit-config

功能描述

hasctl edit-config 会更改群集的动态配置,并据此更新 DCS。

语法格式

edit-config
  [ CLUSTER_NAME ]
  [ { -q | --quiet } ]
  [ { -s | --set } CONFIG="VALUE" [, ... ] ]
  [ { --apply | --replace } CONFIG_FILE ]
  [ --force ]

参数说明

  • CLUSTER_NAME

    HAS 集群的名称。

    如果没有指定,hasctl 将尝试从 scope 配置(如果存在)中获取。

  • -q / --quiet

    跳过显示配置差异的标志。

  • -s / --set

    用给定值设置给定的动态配置选项。

    CONFIG 是 YAML 动态配置路径的名称。

    VALUE 是 CONFIG 的值,如果为空,则 CONFIG 将从动态配置中删除。

  • --apply

    应用给定文件中的动态配置。

    这类似于为 -s / --set CONFIG_FILE 中的每个配置指定了多个选项。

  • --replace

    用给定文件中指定的动态配置替换 DCS 中的动态配置。

  • --force

    在更改动态配置时跳过确认提示的标志。

    此选项在 hasctl 被脚本使用时十分有用。

hasctl show-config

功能描述

hasctl show-config 显示存储在 DCS 中的群集动态配置。

语法格式

show-config
  [ CLUSTER_NAME ]

参数说明

CLUSTER_NAME:

HAS 集群的名称。

如果没有给出,将尝试从配置(如果存在)中获取。

hasctl list

功能描述

hasctl list显示 HAS 集群及其成员的信息。

输出信息

  • Cluster

    HAS 集群的名称。

  • Member

    HAS 集群成员的名称。

  • Host

    HAS 集群成员所在的主机IP。

  • Role

    集群成员的当前角色。

    可以是以下其中之一:

    • Leader: 常规集群的当前领导;

    • Standby Leader:HAS 备集群的当前领导;其行为与常规集群领导者非常相似,只是它从远程主服务器复制。

    • Sync Standby:同步备库;

    • Replica:HAS 集群的常规备库。

  • State

    当前 HAS 集群中 Vastbase 的状态。

    可能的状态包括:

    • running:Vastbase 当前正在运行;

    • streaming:replica 备上的 Vastbase 当前正在从主节点流式传输 WAL;

    • in archive recovery:replica 备上的 Vastbase 当前正在从归档中获取 WAL;

    • stoped:Vastbase 已关闭;

    • crashed:Vastbase 已崩溃。

  • TL

    HAS 成员中当前的 Vastbase 时间轴。

  • Lag in MB

    HAS 成员与其上游之间的复制滞后值(兆字节)。

  • System identifier

    Vastbase 的系统标识符。

  • Pending restart

    表示节点需要重启才能使某些 Vastbase 配置生效。空值表示节点不需要重启。

  • Scheduled restart

    HAS 成员管理的 Vastbase 实例计划重启的时间戳。空值表示该成员没有计划重启。

  • Tags

    包含为 HAS 成员设置的标记。空值表示没有配置标签,或配置的是默认值。

  • Scheduled switchover

    HAS 集群计划切换的时间戳(如果有)。

语法格式

list
  [ CLUSTER_NAME [, ... ] ]
  [ { -e | --extended } ]
  [ { -t | --timestamp } ]
  [ { -f | --format } { pretty | tsv | json | yaml } ]
  [ { -W | { -w | --watch } TIME } ]

参数说明

  • CLUSTER_NAME

    HAS 集群的名称。

  • -e / --extended

    显示扩展信息。

  • -t / --timestamp

    在打印集群及其成员信息之前打印时间戳。

  • -f / --format

    如何格式化输出中的事件列表。

    支持的格式包括:

    • pretty:将历史记录输出成梅花后的表格形式(默认);

    • tsv:以表格形式打印历史信息,使用; 或者 \t 作为列的分隔符。

    • json:以 JSON 格式打印历史记录;

    • yaml:以 YAML 格式打印历史记录。

  • -W

    每 2 秒自动刷新一次信息。

  • -w / --watch

    以指定的时间间隔自动刷新信息。

    TIME 是刷新间隔时间,单位为秒。

hasctl reload

功能描述

hasctl reload 请求为一个或多个 HAS 成员重新加载本地配置。

它还会触发受管 Vastbase 实例的 vb_ctl reload,即使没有任何变化。

语法格式

reload
  CLUSTER_NAME
  [ MEMBER_NAME [, ... ] ]
  [ { -r | --role } { leader | primary | standby-leader | replica | standby | any } ]
  [ --force ]

参数说明

  • CLUSTER_NAME

    HAS 集群的名称。

  • MEMBER_NAME

    为指定成员重新加载 HAS 配置。

    可指定多个成员。如果没有指定成员,则更新所有成员。

  • -r / --role

    选择具有指定角色的成员。

    角色可以是:

    • Leader: 常规集群或备集群的当前Leader;

    • primary:常规 HAS 集群的Leader。

    • standby-leader:备集群的Leader。

    • Replica:HAS 集群的副本。

    • standby:与Replica相同。

    • any:任何角色。与省略该参数的效果相同。

  • --force

    用于在请求重新加载本地配置时跳过确认提示的标志。

    此选项在 hasctl 被脚本使用时十分有用。

hasctl restart

功能描述

hasctl restart 请求重启由 HAS 集群成员管理的 Vastbase 实例。

重启可以立即进行,也可以安排在稍后进行。

语法格式

restart
  CLUSTER_NAME
  [ MEMBER_NAME [, ...] ]
  [ { -r | --role } { leader | primary | standby-leader | replica | standby | any } ]
  [ --any ]
  [ --pg-version PG_VERSION ]
  [ --pending ]
  [ --timeout TIMEOUT ]
  [ --scheduled TIMESTAMP ]
  [ --force ]

参数说明

  • CLUSTER_NAME

    HAS 集群的名称。

  • -r / --role

    选择具有指定角色的成员。

    角色可以是:

    • Leader: 常规集群或备集群的当前Leader;

    • primary:常规 HAS 集群的Leader。

    • standby-leader:备集群的Leader。

    • Replica:HAS 集群的副本。

    • standby:与Replica相同。

    • any:任何角色。与省略该参数的效果相同。

  • --any

    从符合给定筛选条件的节点中随机重启一个节点。

  • --pg-version

    只选择所管理的 Vastbase 实例版本比给定版本早的成员。

    PG_VERSION 是要比较的 Vastbase 版本。

  • --pending

    只选择标记为“待重启”的成员。

  • timeout

    如果重启时间超过指定的超时时间,则中止重启;如果问题出在主系统上,则故障转移到副本。

    TIMEOUT 是终止重启前需要等待的秒数。

  • --scheduled

    安排在给定的时间戳重新启动。

    TIMESTAMP 是重启时间戳。请以明确的格式指定,最好带有时区。也可以使用字面意义的 now 来表示重启立即执行。

  • --force

    在请求重启操作时跳过确认提示的标志。

    此选项在 hasctl 被脚本使用时十分有用。

hasctl failover

功能描述

hasctl failover 可在群集中执行手动故障切换。

它用在集群状态不健康的情况下,例如:

  • 没有领导者;

  • 同步群集中没有可用的同步备库;

如果同步模式已启用,failover 还允许故障切换到异步节点。

语法格式

failover
  [ CLUSTER_NAME ]
  [ { --leader | --primary } LEADER_NAME ]
  --candidate CANDIDATE_NAME
  [ --force ]

参数说明

  • CLUSTER_NAME

    HAS 集群的名称。

    如果没有给出,hasctl 将尝试从scope配置(如果存在)中获取。

  • --leader / --primary

    指明在 failover 时谁是预期的领导者。

    如果给定,将执行切换而不是故障转移。

    LEADER_NAME 应与群集中当前领导者的名称一致。

  • --candidate

    failover 时要升级的节点。

    CANDIDATE_NAME 是要升级的节点名称。

  • --force

    执行 failover 时跳过确认提示的标志。

    此选项在 hasctl 被脚本使用时十分有用。

hasctl switchover

功能描述

hasctl switchover 在群集中执行手动主备切换。

它用于集群状态健康时,例如:

  • 集群有一个Leader;

  • 同步集群中有同步备库。

语法格式

switchover
  [ CLUSTER_NAME ]
  [ { --leader | --primary } LEADER_NAME ]
  --candidate CANDIDATE_NAME
  [ --force ]

参数说明

  • CLUSTER_NAME

    HAS 集群的名称。

    如果没有给出,hasctl 将尝试从scope配置中获取(如果存在)。

  • --leader / --primary

    指明谁是切换时要降级的领导者。

    LEADER_NAME 应与群集中当前领导者的名称一致。

  • --candidate

    切换时要晋升并担任主要角色的节点。

    CANDIDATE_NAME 是要晋升的节点名称。

  • --scheduled

    安排在给定的时间戳进行切换。

    TIMESTAMP 是切换发生的时间戳。请以明确的格式指定,最好带有时区。也可以使用字面意义的 now 来表示立即执行切换。

  • --force

    执行切换时跳过确认提示的标志。

    此选项在 hasctl 被脚本使用时十分有用。

hasctl version

功能描述

hasctl version 获取 hasctl 应用程序的版本信息。此外,它还可能包括 HAS 集群及其成员的版本信息。

语法格式

version
  [ CLUSTER_NAME [, ... ] ]
  [ MEMBER_NAME [, ... ] ]

参数说明

  • CLUSTER_NAME

    HAS 集群的名称。

  • MEMBER_NAME

    HAS 集群成员的名称。

相关链接

patronictl