更新时间:2024-03-07 GMT+08:00
分享

预检查

为了避免分片变更失败,请您最晚在变更前一天完成以下内容的检查。

预检查内容

表1 预检查内容

检查内容

检查目的

检查未通过解决方案

表名长度检查

分片变更需要数据重分布时(例如:增加分片),会创建临时表,临时表的表名长度会略长于原表名,需确保临时表的表名长度不超过MySQL限制。

请修改过长的表名。

DN实例binlog全量备份时间检查

客户全量备份是否保留足够长时间。

进入DN console,增加全量备份天数。

DN节点binlog必须开启

Binlog必须开启以支持在线变更。

如果您的DN节点是RDS实例,无需解决。如果您的DN节点是GaussDB(for MySQL)实例,请进入GaussDB(for MySQL) console参数配置,设置log_bin=true。

DN节点binlog本地保留时间检查

Binlog在DN节点上的保留时间必须足够长。

如果您的DN节点是RDS实例,无需解决。如果您的DN节点是GaussDB(for MySQL)实例,请进入GaussDB(for MySQL) console参数配置,设置binlog_expire_logs_seconds 为604800或更大。

广播表数据一致性检查

保证广播表数据一致后再执行分片变更。

请联系DDM运维人员。

源物理分片的字符集和排序规则检查

保证分片变更后字符的展示和排序一致。

请联系DDM运维人员。

物理表建表语句检查

保证各物理分片上的表结构保持一致。

请先使用check table 命令查询表结构不一致详情,之后再使用alter 语法对表进行修正。

主键检查

要求源库所有表都具有主键,且拆分键是主键一部分以保证分片变更后数据一致性。

如果表不存在主键,请使用alter语句增加主键。

数据库实例链接检查

DN节点是否可连接。

检查安全组等配置。

数据库实例参数检查

源DN节点和目标DN节点数据库关键参数配置需要相同。

请进入DN console对参数配置进行修改。

数据库实例磁盘空间检查

防止分片变更过程中,DN节点磁盘不足。

对DN节点进行磁盘扩容。

注意:

本项检查根据估计值进行判断,极端情况下与实际值有一定差别。

数据库实例时区检查

源DN节点和目标DN节点时区要求相同。

请进入DN console参数配置对时区进行修改。

物理分表个数限制检查

在增加分片场景中,源表每一条数据都需要重新计算路由并分发到新的物理分表中。如果分片变更后物理分表数过多,分片变更耗时过长,需检查单个DN节点的物理分表个数是否超过限制。

请联系客服处理。

常见问题和解决方案

  • 物理表结构不一致导致扩容失败。

    解决方案:请先使用check table语句对表结构做一致性检查,并配合alter table等语句对表结构做修正。如果无法进行DDL修正(如主键、唯一键因为数据原因无法修改),请联系运维人员处理。

  • 没有主键的表不支持迁移。 如果没有主键,就无法精确定位记录,在分片变更过程中如果发生重试,可能导致数据增多。

    解决方案:增加主键。

  • 分片键不是主键的一部分可能导致逻辑表存在主键重复的数据(因为位于不同的物理分表内)。当数据需要重分布时,这类数据如果路由到同一物理表,由于主键相同,将只会保留一条,必定会导致迁移后的数据量和原来不一致,而导致分片变更失败。

    主键是全局唯一序列和分片数不变化的情况下不会发生此种错误。

    解决方案:订正数据,再重新校验。

分享:

    相关文档

    相关产品