更新时间:2024-09-13 GMT+08:00
分享

重分布

集群重分布是集群扩容后的一项重要且耗时的任务,集群扩容前业务数据都集中分布在老节点上,扩容之后会新增空的可用节点,此时将老节点的数据均匀分布到新扩容节点的过程称为数据“重分布”,数据“重分布”后将大大提升业务响应速率。

默认情况下,在扩容之后将自动调起重分布任务,为了增强扩容重分布整个流程的可靠性,可以选择在扩容时关闭自动重分布功能,在扩容成功之后再手动使用重分布功能执行重分布任务,在这种分段模式下,扩容和重分布都可以做到失败重试。

当前重分布支持离线重分布在线重分布两种模式,默认情况下,提交重分布任务时将选择离线重分布模式。

在重分布开始前或重分布暂停过程中,支持对未重分布的表按照schema、表维度设置重分布优先级。

  • 重分布功能8.1.1.200及以上集群版本支持。
  • 只有在扩容之后,集群任务信息为“待重分布”状态时才能手动使用“重分布”功能,其他时段该功能不可使用。
  • 在扩容阶段也可以选择重分布模式的高级配置,详情参见设置高级配置
  • 重分布队列的排序依据表的relpage大小进行,为确保relpage大小正确,建议在重分布之前对需要重分布的表执行analyze操作。

离线重分布

注意事项

  • 离线重分布模式下数据库不支持DDL和DCL操作,正在重分布的表只支持简单的DQL操作。
  • 表重分布期间会对表加共享锁,所有插入、更新、删除操作和表DDL操作都会长时间阻塞,会出现等锁超时情况。在重分布执行过程中,用户应当避免执行超过20分钟的查询(在重分布执行时申请写锁的默认时间为20分钟)。否则可能导致重分布出现等待加锁超时失败的问题。

操作步骤

  1. 登录GaussDB(DWS)管理控制台。
  2. 选择“集群 > 专属集群”。默认显示用户所有的集群列表。
  3. 集群列表中,在指定集群所在行的“操作”列,选择更多 > 节点变更 > 重分布

    系统将显示“重分布”页面。

  4. 在“重分布”页面选择默认的离线模式,单击“下一步:确认”提交重分布任务。

在线重分布

注意事项

在线重分布模式下数据库支持部分DDL和DCL操作。

  • 正在重分布的表支持插入、删除、更新和部分DDL语法。支持功能如下:
    • 可进行正在重分布的本地表的INSERT、DELETE、UPDATE、MERGE INTO、OVERWRITE、UPSERT业务。
    • 可进行正在重分布的本地表跨节点组的关联查询业务。
    • 可进行正在重分布的本地表的重命名、修改schema、DROP、TRUNCATE、TRUNCATE-PARTITION业务。
  • 正在重分布的表不支持功能如下:
    • 不支持执行ALTER TABLE语句,典型包括增加、删除字段,增加或删除分区等,但TRUNCATE PARTITION除外。
    • 不支持创建、修改和删除索引。
    • 不支持对表执行VACUUM FULL和CLUSTER语句。
    • 不支持修改字段依赖的SEQUENCE对象,包括创建和修改字段依赖的SEQUENCE对象,典型的语句是CREATE/ALTER SEQUENCE ... OWNED BY。
    • 超过996列的表,表重分布期间不支持UPDATE和DELETE语句,更新删除语句会报错,但允许执行SELECT/INSERT语句。
    • 整个重分布过程中不支持创建、删除或修改Database对象和Tablespace对象。
    • 重分布过程是以表为单位执行,如果用户执行交换分区,分区表和待交换的非分区表有一个完成重分布,一个没有完成重分布,这两个表属于两个节点组,这种情况不支持交换分区,需要等两个表都重分布完之后才能执行交换分区。

操作步骤

  1. 登录GaussDB(DWS)管理控制台。
  2. 选择“集群 > 专属集群”。默认显示用户所有的集群列表。
  3. 集群列表中,在指定集群所在行的“操作”列,选择更多 > 节点变更 > 重分布
  4. 在“重分布”页面的“高级配置”单击“自定义”并选择“在线模式”,单击“下一步:确认”提交重分布任务。

相关文档