暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为GaussDB A gs_replace

墨天轮 2019-10-12
1455

gs_replace

背景信息

数据库集群是由多台主机组成的,当集群中主机上的某些实例发生故障后,为了使GaussDB 200快速地恢复正常,用户可以使用gs_replace工具将发生故障的实例替换为正常实例。

如果替换前需要修改以下GUC参数:log_dir,listen_addresses,local_bind_address,port,pgxc_node_name,pooler_port,archive_mode, archive_command, log_directory和audit_directory,由于替换后服务器或实例无法同步这些参数在原来设置的值,会设置为默认值,所以在替换成功后,请使用gs_guc工具以reload方式修改替换后主机或实例中的GUC参数。

前提条件和注意事项

修复故障实例

前提条件
  • 集群处于启动状态,且处于没有加锁。
  • 修复操作需要在一个正常主机上执行。
  • 一组DN的主实例、备实例和从备实例,其中只能有一个损坏。
  • 集群内如下实例分别至少存在一个正常运行的:CM Server、CM Agent、GTM、CN。
  • 如果集群中未部署ETCD,某个GTM实例存在故障,则要求实例替换前另外一个GTM实例必须为最高可用模式,即该GTM的所有实例都正常。
  • 由于在修复实例时,会检查并修复所有主机上故障的CM Agent实例,所以要求各主机必须互信正常,且安装目录下的二进制文件未被损坏。
  • 强制修复多节点时,由于会停止需要修复节点内的所有CN,所以如果集群的所有CN在指定修复的节点中,则不支持强制修复多节点。
  • 强制修复多个节点时,由于会停止需要修复节点上的所有DN主、备实例,所以指定修复的节点的DN主、备均不能在同一个DN环内。
  • 一主多备部署下,修复DN实例时,为保证数据正确,DN环中必须有CM可监控的主存活。

注意事项

  • 如果集群中含有故障的CN且其状态不为Deleted,那么在修复过程中用户执行DDL会报错,DML可以正常执行。其他场景执行业务不受影响,特别说明:由于修复CN的过程中会短暂锁集群,锁集群后用户下发的包含显式启动事务的DDL语句会出现等待,集群解锁后会报错或等待时间超过20分钟会报错。如包含创建临时表操作,在集群解锁后会报错(Don't support temp table when need reconnect pooler)。
  • 如果故障实例所在主机的安装目录下($GAUSSHOME/bin/)的二进制文件损坏或丢失,则不能通过替换实例进行修复。需要复制其他正常主机对应的二进制文件到该主机,或者将该主机卸载后,再通过替换主机修复。
  • 在前一次修复结束后才能再次执行修复。因此请不要同时在多个主机上执行修复操作。
  • 实例修复操作会修复故障节点下的全部故障实例。
  • 在修复实例的config阶段,先将CM Agent组件修复好,这样才能获取到集群中所有实例的状态。如果主机上的某些实例被人为停止,在CM Agent组件修复好之后,这些原来正常的实例会被正常拉起,而不会被修复。如果在一定时间内拉起失败,这些实例将会被修复。
  • 修复故障实例过程中系统将关闭“自动剔除故障CN”功能,完成后系统再次打开该功能。因此建议在开始修复前确认故障的CN已经被自动剔除(即故障的CN状态为Deleted),否则在修复过程中用户执行DDL会报错。
  • 修复CN实例过程中,在CN状态未变为Normal前,不能连接该CN执行业务。
  • 实例修复前用户手动在故障实例上配置的guc参数、pg_hba.conf配置的白名单会丢失,需要重新设置。

语法

  • 配置实例
    gs_replace -t config -h HOSTNAME [--dws-mode] [--force] [-l LOGFILE]
  • 启动新增实例
    gs_replace -t start -h HOSTNAME [--dws-mode] [--force] [--time-out=SECS] [-l LOGFILE]
  • 显示帮助信息
    gs_replace -? | --help
  • 显示版本号信息
    gs_replace -V | --version

参数说明

gs_replace参数可以分为如下几类:

  • 通用参数:
    • -t

      om命令的类型。

      取值范围:config和start.

    • --dws-mode

      “云上”环境标志,非“云上”环境不能指定该参数。

      不指定该参数时,默认为非“云上”处理方式.

    • -l

      指定日志文件及存放路径。

      默认值:$GAUSSLOG/om/gs_replace-YYYY-MM-DD_hhmmss.log

  • 配置新增实例参数:
    • -h

      指定替换实例所在主机的名称。可以指定多个主机名称,以逗号分隔。

      取值范围:主机名称。

    • --force

      如果指定主机的表空间所在磁盘出现故障,从而导致表空间中的数据损坏,更换新磁盘后指定该参数进行实例修复时,将对该主机强制进行表空间数据的恢复。如果在config阶段指定该参数,则在start阶段也必须指定该参数。

  • 启动新增实例参数:
    • -h

      指定需要启动实例所在主机的名称。可以指定多个主机名称,以逗号分隔。

      取值范围:主机名称。

    • --force

      如果指定主机的表空间所在磁盘出现故障,从而导致表空间中的数据损坏,更换新磁盘后指定该参数进行实例修复时,将对该主机强制进行表空间数据的恢复。如果在config阶段指定该参数,则在start阶段也必须指定该参数。

    • --time-out=SECS

      启动超时等待时间。

      若--time-out取值过小时,有可能会因为需要启动的实例数过多而引起超时。若在超时时间内启动不成功,则会报错启动超时,但是集群会在后台继续启动。可以等待一段时间后,查询集群状态,检查集群是否启动成功。

      取值范围:正整数,默认值300。

      单位:秒(s)

  • 其他参数:
    • -?, --help

      显示帮助信息。

    • -V, --version

      显示版本号信息。

示例

以替换主机plat1、plat2上的实例为例。

  • 以操作系统用户omm登录GaussDB 200集群任一主机。执行source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile命令启动环境变量。

    说明:

    操作系统用户omm登录的主机为非故障主机。

  • (可选)使用如下命令在需要替换实例的主机上清理可能存在的残留文件。此命令仅在上次修复故障实例执行失败的情况下需要执行。

    (if [ -f $PGHOST/GaussReplace.dat ];then rm $PGHOST/GaussReplace.dat;fi)
    说明:

    该文件为替换故障实例、替换主机中产生的用于记录执行步骤的临时文件,如果在上次执行过程中出现宕机或网卡中断等,可能会导致该文件残留。在替换故障实例前检查该文件是否存在,且生成时间非本次替换故障实例的时间,则可判断为上次执行的残留文件,删除该文件后,继续执行替换故障实例。

  • 使用如下命令对需要替换实例的主机进行配置操作。

    gs_replace -t config -h plat1, plat2

    配置操作会清理替换实例的空间,初始化替换实例,配置替换实例。

    如果收到提示:“GAUSS_50201: The XXX does not exist.”,则请检查对应的实例数据目录是否存在。如果不存在,请重新创建目录后再次执行上述命令。

    说明:

    如果指定主机的表空间所在磁盘出现故障,从而导致表空间中的数据损坏,更换新磁盘后,需要指定--force参数对该主机强制进行表空间数据的恢复。如果在config阶段指定--force参数,则在start阶段也必须指定--force参数。

  • 使用如下命令对需要修复实例的主机进行启动操作。

    gs_replace -t start -h plat1 , plat2

    启动操作会启动集群替换实例的主机。

  • 使用如下命令重置实例状态。

    说明:

    switch为维护操作:确保集群状态正常,所有业务结束,并使用pgxc_get_senders_catchup_time()视图查询无主备追赶后,再进行switch操作。

    gs_om -t switch --reset

    重置过程会恢复集群初始状态,以保证各主机的负载都是均衡的。

  • 执行如下命令查询集群状态。

    gs_om -t status


查看更多:华为GaussDB 200 服务端工具
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论