更新时间:2026-07-28 GMT+08:00
分享

操作指导

前提条件

  • 集群状态必须为Normal或Degraded状态,集群Degraded状态仅支持实例异常引发的集群状态异常,不支持VM异常(指非软件类异常,例如:磁盘故障、通信故障)导致的集群状态异常。
  • 请确保实例状态异常节点的网络连接正常。
  • 实例状态:CN全部正常,GTM、CMS至少有主节点存活,ETCD实例状态满足多数正常。
  • DN实例状态有以下三种情况:
    • 两副本集群单个分片内至少主DN实例正常(hashbucket表扩容要求主备DN都正常)。
    • 两AZ集群DN实例单个分片至少存活一主一备。
    • 除了以上两种之外的其他情况DN实例单个分片异常数量小于一半。
  • 集群扩容要求整个集群未被锁定,集群配置文件的配置信息正确且与当前集群配置一致。
  • 已按照扩容的集群配置文件执行过前置脚本gs_preinstall,即预安装操作执行完毕。
  • 新增主机与现有集群之间通信已建立且网络正常。
  • 扩容前需确保集群所有CN可连接,在集群用户下执行gs_check -i CheckDBConnection命令检查CN是否可连接。
    Parsing the check items config file successfully
    Distribute the context file to remote hosts successfully
    Start to health check for the cluster. Total Items:1 Nodes:3
    
    Checking...               [=========================] 1/1
    Start to analysis the check result
    Start to analysis the item CheckDBConnection
    analysis item: CheckDBConnection, use time: 0.021239858004264534
    Analysis the item CheckDBConnection finished
    AnalysisResult total time: 0.021775729983346537
    CheckDBConnection...........................OK
    The item run on 3 nodes.  success: 3 
    
    Analysis the check result successfully
    Success.    All check items run completed. Total:1   Success:1    
    For more information please refer to /script/gspylib/inspection/output/CheckReport_202505083489941202.tar.gz
  • 扩容前需确保每个库存在public schema,否则扩容会失败。
  • 扩容前需删除各个CN和DN节点上的逻辑复制槽。
    依次在各个CN和DN节点上执行,获取所有的逻辑复制槽。
    gaussdb=# SELECT * FROM pg_catalog.pg_get_replication_slots() WHERE slot_type='logical';
    
    依次在各个CN和DN节点上执行,删除查询到的逻辑复制槽。
    gaussdb=# SELECT * FROM pg_drop_replication_slot('slot_name');
  • 扩容的新节点不能包含ETCD组件。
  • 扩容前需退出创建了临时表的客户端连接,因为在扩容过程中及扩容成功后临时表会失效,操作临时表也会失败。
  • 如果数据库中包含的对象数量(数据表、视图、索引)超过50万,为了提高性能且避免出现内存问题,建议扩容前将CN和DN的max_prepared_transactions和max_locks_per_transaction参数分别设置为1000和512。如果max_prepared_transactions和max_locks_per_transaction参数值大于前述的建议值,则无需设置。max_prepared_transactions参数具体说明,请参见《参考》中“数据库运行参数说明 > GUC参数说明 > 资源消耗 > 内存”章节。max_locks_per_transaction参数具体说明,请参见《参考》中“数据库运行参数说明 > GUC参数说明 > 锁管理”章节。
  • 扩容前,需要检查已有集群的comm_max_datanode参数值。
    • 使用gsql连接CN执行show comm_max_datanode。
    • 如果comm_max_datanode的值小于扩容后集群的DN数,则需要设置comm_max_datanode参数,具体请参见《参考》中“数据库运行参数说明 > GUC参数说明 > 连接和认证 > 通信库参数”章节。假如原有集群DN数为128,新扩128个DN时,需在扩容前把comm_max_datanode参数设置为256。
  • 扩容执行到新集群启动阶段后,系统无法回滚到扩容前状态。
  • 重分布资源管控对象redisuser、redisrespool、redisclass和redisgrp不能被占用。如果集群中存在redisuser用户,扩容将直接报错退出,且扩容期间禁止创建redisuser用户。
  • 重分布过程中需避免以下操作:
    • 将其他用户绑定到重分布专用的资源池redisrespool。
    • 使用gs_cgroup -M等操作破坏当前Cgroups配置。若用户在Cgroups出现问题时使用gs_cgroup --revert恢复默认配置,则需重启集群以确保新建立的redisclass和redisgrp生效。
  • 若当前集群有对hashbucket的表开启OLTP表压缩,需要等待全部压缩任务结束,并关闭自动调度任务(扩容期间不支持压缩调度)。
  • 重分布前校验无效索引残留,需遍历数据库执行如下命令,如果返回值大于等于1,用户需手动失效索引,即执行ALTER INDEX操作。
    gaussdb=# select count(*) from pg_index where indisvalid = 'f' and indisusable = 't';
     count 
    -------
         0
    (1 row)
    gaussdb=# ALTER INDEX i1 UNUSABLE;
    ALTER INDEX

命令格式

  • 集群扩容
    gs_expand -t dilatation -X XMLFILE [-l LOGFILE] [--parallel-jobs=NUMBER] [--time-out=SECS] [--dilatation-mode=MODE] {--nodegroup-name=LCGROUPNAME | --addto-elastic-group}
  • 重分布参数设置
    gs_expand -t parametercfg [--lockwait-timeout=MSEC] [--lockwait-interval=SECS] [--trylock-threshold=NUMBER] [--enable-cancel=Boolean] [--last-catchup-threshold=MSEC] [--catchup-times=NUMBER] [--write-error-mode=Boolean] [--catchup-query-dop=NUMBER] [--parallel-catchup-threshold=NUMBER] [--parallel-reindex-jobs=NUMBER][--redis-retry-times=NUMBER][--redis-retry-interval=NUMBER][--redis-bucket-parse-redo-num=NUMBER][--redis-bucket-workers-per-paser=NUMBER][--redis-bucket-keep-bucketxlogs=NUMBER]
  • 数据重分布
    gs_expand -t redistribute  [--parallel-jobs=NUMBER] [--resource-level=f/h/m/l] [--failure-limit=NUMBER] [--build-redistb] [--redis-mode=MODE] [-l LOGFILE] [--priority-tables=FILE] [--exclude-tables=FILE] [--time-out=SECS] [--max-worker] [--max-dop] [--join-tables=FILE]
  • 回滚
    gs_expand -t crashclean -X XMLFILE [-l LOGFILE]

物理扩容注意事项

  • 集群重分布状态下(即加节点并创建了新node group后)不支持绑定node group。
  • hashbucket表删的部分索引、表达式索引形式的GSI会在重分布过程中进行离线重建,重建期间会阻塞业务,非部分索引、非表达式索引形式的GSI,在重分布过程中进行在线重建,不会阻塞业务。加节点、重分布的全程GSI保持有效。
  • 在hashbucket表扩容加节点阶段,需要在创建node group前遍历数据库更新元数据,若此时存在频繁DROP DATABASE操作,加节点过程重试次数超出上限后报错失败,需待集群上此类DDL变更结束后重新执行扩容。
  • 若hashbucket表扩容加节点阶段检测到wait_clean_gpi=y的分区残留,将报错“Please manually perform the 'vacuum' operation on these databases.”,需按提示连接库执行VACUUM后重新执行扩容。
  • 若重分布期间主DN实例(含旧DN分片和新扩容DN分片)或新增分片的备DN实例故障,则会导致重分布失败退出,需重新执行重分布流程。
  • 当前版本hashbucket表扩容支持重分布前新增分片的实例故障且满足多数派(主DN与备DN存活的总个数超过该分片副本数的1/2)可用场景下的扩容:
    • 对于一主多备场景,满足多数派即可支持扩容,如一主两备支持单个备DN故障状态下的扩容。
    • 对于一主一备一logger场景,只支持logger实例故障状态下的扩容,不支持备DN故障状态下扩容。
    • 对于一主一备场景,仅支持主备均存活时扩容。
  • 当前版本支持hashbucket表在扩容期间执行CREATE TABLE/DROP TABLE/TRUNCATE TABLE三种hashbucket表级DDL操作,其他DDL当前均不支持。
    • 除toast索引外,若在CREATE/DROP/TRUNCATE目标hashbucket表时进行级联操作索引,将导致表级DDL失败。
    • hashbucket分区表仅支持整表的CREATE/DROP/TRUNCATE操作,不支持对单个分区进行此类操作。
    • 在扩容加节点阶段更新元数据或bucket重分布更新反向指针时,若执行DROP TABLE则存在窗口期导致以上操作失败,需要重新执行扩容。
  • 扩容期间不建议对CBI索引或带CBI索引的表进行删除操作,可能导致扩容重分布失败,需要重新执行扩容。
  • hashbucket表扩容期间不支持连接CN调用global_space_shrink对段页式文件进行缩容,由于资源争抢问题,同样不建议连接DN进行段页式文件缩容。
  • hashbucket表扩容会忽略read-only模式的参数,仍采用在线模式执行。扩容过程中使用redisuser用户进行重分布操作,以避免线程残留导致的扩容失败,且不会自动重试。
  • hashbucket表扩容期间不支持的特性:逻辑复制、细粒度备份恢复、DN在线缩容、二级分区、node group迁移。
  • 在hashbucket表扩容期间,涉及Ustore hashbucket表CBI索引的事务,在提交前会缓存至内存,提交后释放。若此部分内存使用量累计超过1GB,扩容流程会报错终止。报错后可通过重新执行扩容流程进行重试。
  • 闪回查询尝试访问hashbucket表扩容期间或扩容前的snapshot时,可能由于CSN时间过长报错“snapshot csn xxx less or equal to bucketcsn xxx from old DN”。
  • 扩容前的长事务快照读取新节点迁移后上线的数据可能报错“snapshot csn less or equal to bucketcsn from old DN”。

操作步骤

  • 请确保有可用分布式集群。
  • 集群部署配置文件以clusterconfig.xml为例(可自行修改),以下操作步骤使用omm用户执行。
  • 在线扩容主要分为集群加节点阶段和重分布阶段:
  1. 修改集群部署配置文件clusterconfig.xml,添加新增主机的配置信息。

    1. 在集群信息的nodeNames字段末尾追加所有新增主机的名称(原主机名称顺序保持不变),同时在sqlExpandNames字段中补充所有新增的主机名称。例如,gaussdb04、gaussdb05和gaussdb06为新增主机名称,192.168.255.253、192.168.255.254和192.168.255.255为对应IP地址。
      <CLUSTER>
      <PARAM name="clusterName" value="mppdbCluster" />
      <PARAM name="nodeNames" value="gaussdb01,gaussdb02,gaussdb03,gaussdb04,gaussdb05,gaussdb06" />
      <PARAM name="backIp1s" value="192.168.255.250,192.168.255.251,192.168.255.252,192.168.255.253,192.168.255.254,192.168.255.255" />
      <PARAM name="gaussdbAppPath" value="/data/lixy1/install/app" />
      <PARAM name="gaussdbLogPath" value="/data/lixy1/install/log" />
      <PARAM name="gaussdbToolPath" value="/data/lixy1/tool/wisequery" />
      <PARAM name="clusterType" value="single-primary-multi-standby"/>
      <PARAM name="sqlExpandNames" value="gaussdb04, gaussdb05, gaussdb06"/>
      </CLUSTER>
    2. 在配置文件clusterconfig.xml中添加新增主机的实例信息。
      <!-- plat4上的节点部署信息 -->
              <DEVICE sn="1000004">
                  <PARAM name="name" value="gaussdb04"/>
                  <PARAM name="azName" value="AZ1"/>
                  <PARAM name="azPriority" value="1"/>
                  <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
                  <PARAM name="backIp1" value="192.168.255.253"/>
                  <PARAM name="sshIp1" value="192.168.255.253"/>
                  <!-- cm -->
                  <PARAM name="cmServerPortStandby" value="25500"/>
                  <PARAM name="cmDir" value="/data/lixy1/install/cmserver"/>
      
                  <!-- cn -->
                  <PARAM name="cooNum" value="0"/>
                  <PARAM name="cooPortBase" value="25108"/>
                  <PARAM name="cooListenIp1" value="192.168.255.253"/>
                  <PARAM name="cooDir1" value="/data/lixy1/install/coordinator"/>
                  <!--etcd-->
                  <!--DN-->
                  <PARAM name="dataNum" value="1"/>
                  <PARAM name="dataPortBase" value="26600"/>
                  <PARAM name="dataNode1" value="/data/lixy1/install/master4,gaussdb05,/data/lbs2/install/slave4_1,gaussdb06,/data/lbs3/install/slave4_2"/>
              </DEVICE>
      <!-- plat5上的节点部署信息 -->
              <DEVICE sn="1000005">
                  <PARAM name="name" value="gaussdb05"/>
                  <PARAM name="azName" value="AZ1"/>
                  <PARAM name="azPriority" value="1"/>
                  <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
                  <PARAM name="backIp1" value="192.168.255.254"/>
                  <PARAM name="sshIp1" value="192.168.255.254"/>
                  <!-- cm -->
                  <PARAM name="cmServerPortStandby" value="25500"/>
                  <PARAM name="cmDir" value="/data/lixy1/install/cmserver"/>
      
                  <!-- cn -->
                  <PARAM name="cooNum" value="0"/>
                  <PARAM name="cooPortBase" value="25108"/>
                  <PARAM name="cooListenIp1" value="192.168.255.254"/>
                  <PARAM name="cooDir1" value="/data/lixy1/install/coordinator"/>
                  <!--etcd-->
                  <!--DN-->
                  <PARAM name="dataNum" value="1"/>
                  <PARAM name="dataPortBase" value="26800"/>
                  <PARAM name="dataNode1" value="/data/lixy1/install/master5,gaussdb04,/data/lbs2/install/slave5_1,gaussdb06,/data/lbs3/install/slave5_2"/>
              </DEVICE>
      <!-- plat6上的节点部署信息 -->
              <DEVICE sn="1000006">
                  <PARAM name="name" value="gaussdb06"/>
                  <PARAM name="azName" value="AZ1"/>
                  <PARAM name="azPriority" value="1"/>
                  <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
                  <PARAM name="backIp1" value="192.168.255.255"/>
                  <PARAM name="sshIp1" value="192.168.255.255"/>
                  <!-- cm -->
                  <PARAM name="cmServerPortStandby" value="25500"/>
                  <PARAM name="cmDir" value="/data/lixy1/install/cmserver"/>
      
                  <!-- cn -->
                  <PARAM name="cooNum" value="0"/>
                  <PARAM name="cooPortBase" value="25108"/>
                  <PARAM name="cooListenIp1" value="192.168.255.255"/>
                  <PARAM name="cooDir1" value="/data/lixy1/install/coordinator"/>
                  <!--etcd-->
                  <!--DN-->
                  <PARAM name="dataNum" value="1"/>
                  <PARAM name="dataPortBase" value="27000"/>
                  <PARAM name="dataNode1" value="/data/lixy1/install/master6,gaussdb04,/data/lbs2/install/slave6_1,gaussdb05,/data/lbs3/install/slave6_2"/>
              </DEVICE>
      • 新增节点不能包含主备GTM和主备CM Server。
      • 新增节点上的DN必须自行成环,以避免破坏原有主备关系。

  2. 以root用户登录服务器。
  3. 进入安装包所在目录。例如,安装包路径为/opt/software/gaussdb,实际路径请按环境替换。

    cd /opt/software/gaussdb

  4. 执行环境准备操作,解压安装包,进入安装包所在目录的script目录,使用root用户执行预安装操作。

    ./gs_preinstall -U omm -G dbgrp -X /opt/software/gaussdb/clusterconfig_dilatation.xml --alarm-type=5
    Parsing the configuration file.
    Successfully parsed the configuration file.
    Check the preinstallation result file.
    Successfully delete task result file
    Installing the tools on the local node.
    Successfully installed the tools on the local node.
    Are you sure you want to create trust for root (yes/no)?yes
    Please enter password for root
    Password: 
    Successfully created SSH trust for the root permission user.
    Setting HOST_IP env
    Successfully set HOST_IP env.
    set hotpatch env.
    clear hotpatch env.
    Distributing package.
    Successfully distribute local lib to remote pylib.
    Begin to distribute package to tool path.
    Successfully distribute package to tool path.
    Begin to distribute package to package path.
    Successfully distribute package to package path.
    Successfully distributed package.
    Are you sure you want to create the user[omm] and create trust for it (yes/no)? yes
    Preparing SSH service.
    Successfully prepared SSH service.
    Installing the tools in the cluster.
    Successfully installed the tools in the cluster.
    Checking hostname mapping.
    Successfully checked hostname mapping.
    Creating SSH trust for [omm] user.
    Please enter password for current user[omm]
    Password:
    Successfully created SSH trust for [omm] user.
    Checking OS version.
    Successfully checked OS version.
    Creating cluster's path.
    Successfully created cluster's path.
    Set and check OS parameter.
    Setting OS parameters.
    Successfully set OS parameters.
    Warning: Installation environment contains some warning messages.
    Please get more details by "/opt/software/gaussdb/script/gs_checkos -i A -h gaussdb01,gaussdb02,gaussdb03,gaussdb04,gaussdb05,gaussdb06".
    Set and check OS parameter completed.
    Preparing CRON service.
    Successfully prepared CRON service.
    Setting user environmental variables.
    Successfully set user environmental variables.
    Configuring alarms on the cluster nodes.
    Successfully configured alarms on the cluster nodes.
    Setting the dynamic link library.
    Successfully set the dynamic link library.
    Setting pssh path
    Successfully set pssh path.
    Setting Cgroup.
    Successfully set Cgroup.
    Set ARM Optimization.
    Successfully set ARM Optimization.
    Setting finish flag.
    Scene: non-huaweiyun
    Successfully set finish flag.
    Preinstallation succeeded.
    Check the preinstallation result file.
    Modify the permission on the preinstallation result file.

  5. 切换至集群(omm)用户。

    su - omm

  6. 执行如下命令,设置扩容加节点和重分布参数。

    若扩容重分布操作处于业务低谷期或者无业务期间,可设置参数redis-bucket-reindex-cbi-offline为true,并执行以下命令,否则不建议开启此参数,并跳过本步骤。

    # 设置CBI索引的重建方式,若用户业务有低峰窗口,可以开启此参数提升离线扩容场景下CBI索引的重建性能。
    gs_expand -t parametercfg --redis-bucket-reindex-cbi-offline=true
    Redis parameters are set successfully.

  7. 执行集群加节点操作。

    # 参数建议使用默认值
    gs_expand -t dilatation -X /opt/software/gaussdb/clusterconfig_dilatation.xml
    Check cluster version consistency.
    Successfully checked cluster version.
    Distributing cluster dilatation XML file.
    Checking static configuration.
    Static configuration is matched with the old configuration file.
    Checking the cluster status.
    Performing health check.
    Health check succeeded.
    Backing up parameter files.
    Successfully backed up parameter files.
    Installing.
    Deleting instances from ['gaussdb04', 'gaussdb05', 'gaussdb06'].
    Uninstalling applications on ['gaussdb04', 'gaussdb05', 'gaussdb06'].
    Successfully uninstalled applications on ['gaussdb04', 'gaussdb05', 'gaussdb06'].
    Checking installation environment on all nodes.
    Installing applications on all nodes.
    Resume om hotpatch.
    Successfully resume om hotpatch.
    Synchronizing alarmItem configuration to new nodes.
    Successfully synchronized alarmItem configuration to new nodes.
    Installation is completed.
    Configuring.
    Configuring new nodes.
    Checking node configuration on all nodes.
    Initializing instances on all nodes.
    Configuring pg_hba on all nodes.
    Successfully configured new nodes.
    Begin scpCertFile.
    ScpCertFile is completed.
    Rebuilding new nodes.
    Locking cluster.
    Successfully locked cluster.
    Restoring new nodes.
    Successfully restored new nodes.
    Successfully rebuild new nodes.
    Configuration is completed.
    Starting new nodes.
    Successfully started new nodes.
    Synchronizing.
    Updating cluster configuration.
    Successfully updated cluster configuration.
    Synchronization is completed.
    Successfully enable node whiteList.
    Update resource control config file result: Not found resource config file on this node..
    Starting new cluster.
    Waiting for the cluster status to become available.
    ............
    The cluster status is Degraded.
    Unlocking cluster.
    Successfully unlocked cluster.
    Creating new node group.
    Successfully created new node group.
    Waiting for the redistributing status to become yes.
    The cluster redistributing status is yes.
    Successfully started new cluster.
    Successfully disabled delay xlog recycle.
    Starting timeseries table redistribute.
    Dilatation succeed.

    可以使用集群用户(omm)执行以下命令查看扩容加节点进度。

    # 可以使用以下命令查询扩容加节点处于什么阶段
    gs_expand -t progress -X /opt/software/gaussdb/clusterconfig_dilatation.xml
    # 为加节点前
    Querying current dilatation progress.
    Current expansion progress is:
    Status: Expansion completed or not started, Detail: No exist expansion progress and step file.
    
    # 加节点开始,初始化阶段
    Querying current dilatation progress.
    Current expansion progress is:
    Status: Running, Detail: Init expand
    
    # 加节点期间,安装新节点
    Querying current dilatation progress.
    Current expansion progress is:
    Status: Running, Detail: Install new nodes
    
    # 加节点完成
    Querying current dilatation progress.
    Current expansion progress is:
    Status: Running, Detail: Begin redistribute
    • 扩容加节点出现错误后,系统会自动执行回滚,若回滚失败,则用户需要调用gs_expand工具的crashclean命令进行清理,将集群恢复,清理完成后再次执行集群扩容命令,重新执行步骤7
      gs_expand -t crashclean -X /opt/software/gaussdb/clusterconfig_dilatation.xml
      Distributing cluster dilatation XML file.
      Checking static configuration.
      Static configuration is matched with the old configuration file.
      Crash clean for extansion.
      Checking the cluster status.
      Last time end with Config new nodes.
      Rolling back.
      Unlocking cluster.
      Successfully unlocked cluster.
      Deleting instances from ['gaussdb04', 'gaussdb05', 'gaussdb06'].
      Successfully deleted instances from ['gaussdb04', 'gaussdb05', 'gaussdb06'].
      Uninstalling applications on ['gaussdb04', 'gaussdb05', 'gaussdb06'].
      Successfully uninstalled applications on ['gaussdb04', 'gaussdb05', 'gaussdb06'].
      Rollback is completed.
      Cleaning  backuped cluster parameter file.
      Successfully cleaned backuped cluster parameter file.
      Crashclean succeed.
    • 扩容加节点成功后,重分布状态会变成Yes,为随后的数据重分布做准备。
    • 扩容加节点过程中,如果新增主机网络连接中断,会导致扩容加节点操作失败,并在回滚时发生故障的主机程序和数据目录等不会回滚。此时集群已回滚至扩容加节点前状态,用户需手动清理故障主机,再重新执行扩容操作。
    • 如果扩容加节点前修改过GUC参数listen_addresses、local_bind_address、port、pgxc_node_name、pooler_port、log_directory和audit_directory,扩容加节点成功后,新增主机无法同步这些参数在原主机上的值,会设置为默认值,此时需要修改新增主机上的GUC参数,各参数具体说明请参见《参考》中“数据库运行参数说明 > GUC参数说明”章节。

  8. 执行如下命令,将集群中的实例恢复为初始配置的主备状态。

    gs_om -t switch --reset
    Operating: Switch reset.
    cm_ctl: switchover successfully.
    Operation succeeded: Switch reset.

  9. 执行如下命令,设置重分布参数。

    # 在线扩容重分布场景下,建议将redis-bucket-batchsize参数设置为10,redis-bucket-tx-bucket-max设置为20。
    gs_expand -t parametercfg --redis-bucket-batchsize=10  --redis-bucket-tx-bucket-max=20
    Redis parameters are set successfully.

  10. 执行数据重分布操作。

    # parallel-jobs参数为指定数据重分布过程的并发执行任务个数,默认值为1,建议设置为4,最大值可为8,参考环境信息配置。
    gs_expand -t redistribute --redis-mode=insert --parallel-jobs=4
    Last time end with Begin redistribute.
    Checking the cluster status.
    Redistribution
    Successfully setup resource control.
    If you want to check the progress of hashbucket table redistribution, please check the log file on gaussdb01: /data/lixy1/install/log/lixy/bin/gs_redis/gs_redis_bucket-2025-05-08_144810.log.
    Successfully do hashbucket redistribution.
    If you want to check the progress of logic redistribution, please check the log file on gaussdb01: /data/lixy1/install/log/lixy/bin/gs_redis/gs_redis-2025-05-08_144816.log.
    Successfully clear resource control.
    Successfully do common redistribution.
    No need to do timeseries redistribute.
    Redistribution succeeded.
    • 重分布过程中如出现以下日志,说明正在对表进行重分布操作,可进入$GAUSSLOG/bin/gs_redis/目录下,打开对应日志,查询表的重分布情况。
      # 正在对hashbucket表进行重分布操作
      If you want to check the progress of hashbucket table redistribution, please check the log file on gaussdb01: $GAUSSLOG/bin/gs_redis/gs_redis_bucket-2025-05-08_144810.log.
      # 正在对非hashbucket表进行重分布操作
      If you want to check the progress of logic redistribution, please check the log file on gaussdb01: $GAUSSLOG/bin/gs_redis/gs_redis-2025-05-08_144816.log.
    • 在重分布执行过程中,用户应当避免执行超过20分钟的查询(在重分布执行时申请写锁的默认时间为20分钟)。否则可能导致重分布等待加锁超时失败。
    • 重分布完成后,需检查CN和DN实例的default_transaction_isolation参数,确保所有实例参数都设置为“read committed”。default_transaction_isolation参数的具体说明请参见《参考》中“数据库运行参数说明 > GUC参数说明 > 客户端连接缺省设置 > 语句行为”章节。

  11. 连接默认的数据库,查看重分布状态。

    gaussdb=# select * from redis_status order by updated;
             status          |         updated         
    -------------------------+-------------------------
     REDISTRIBUTION SETUP    | 2025-05-08 17:30:37.161
     REDISTRIBUTION STARTED  | 2025-05-08 17:30:38.899
     REDISTRIBUTION COMPLETE | 2025-05-08 17:37:31.653
     REDISTRIBUTION SHUTDOWN | 2025-05-08 17:37:36.485
    (4 rows)

    也可以使用集群用户(omm)执行以下命令查看重分布进度。

    # 可以使用以下命令查询扩容重分布处于什么阶段
    gs_expand -t progress -X /opt/software/gaussdb/clusterconfig_dilatation.xml
    # 重分布前置检查阶段
    Querying current dilatation progress.
    Current expansion progress is:
    Status: Running, Detail: Begin redistribute
    
    # 重分布准备阶段
    Querying current dilatation progress.
    Current expansion progress is:
    Status: Running, Detail: Prepare redistribute
    
    # 重分布期间
    Querying current dilatation progress.
    Current expansion progress is:
    Status: Running, Detail: Do redistribute
    
    # 重分布后处理阶段
    Querying current dilatation progress.
    Current expansion progress is:
    Status: Running, Detail: Post redistribute

相关文档