为了避免分片变更失败,请您最晚在变更前一天完成以下内容的检查。
预检查内容
检查内容 | 检查目的 | 检查未通过解决方案 |
---|---|---|
数据库实例binlog备份时间检查 | 客户全量备份是否保留足够长时间。 | 进入DN console,增加全量备份天数。 |
DN节点binlog必须开启 | Binlog必须开启以支持在线变更。 | 若您的DN节点是RDS实例,无需解决。若您的DN节点是Taurus实例,请进入Taurus console 参数配置,设置log_bin=true。 |
DN节点binlog本地保留时间检查 | Binlog在DN节点上的保留时间必须足够长。 | 若您的DN节点是RDS实例,无需解决。若您的DN节点是Taurus实例,请进入Taurus console 参数配置,设置binlog_expire_logs_seconds 为604800或更大。 |
广播表数据一致性检查 | 保证广播表数据一致后再执行分片变更。 | 请联系DRDS运维人员。 |
源物理分片的字符集和排序规则检查 | 保证分片变更后字符的展示和排序一致。 | 请联系DRDS运维人员。 |
物理表建表语句检查 | 保证各物理分片上的表结构保持一致。 | 请先使用check table 命令查询表结构不一致详情,之后再使用alter 语法对表进行修正。 |
主键检查 | 要求源库所有表都具有主键,且拆分键是主键一部分以保证分片变更后数据一致性。 | 如果表不存在主键,请使用alter语句增加主键。 |
数据库实例链接检查 | DN节点是否可连接。 | 检查安全组等配置。 |
数据库实例参数检查 | 源DN节点和目标DN节点数据库关键参数配置需要相同。 | 请进入DN console对参数配置进行修改。 |
数据库实例磁盘空间检查 | 防止分片变更过程中,DN节点磁盘不足。 | 对DN节点进行磁盘扩容,注:本项检查根据估计值进行判断,极端情况下与实际值有一定差别。 |
数据库实例时区检查 | 源DN节点和目标DN节点时区要求相同。 | 请进入DN console参数配置对时区进行修改请进入DN console参数配置对时区进行修改。 |
常见问题和解决方案
1.物理表结构不一致导致扩容失败。
解决方案:请先使用check table语句对表结构做一致性检查,并配合alter table等语句对表结构做修正。如果无法进行DDL修正(如主键、唯一键因为数据原因无法修改),请联系运维人员处理。
2.没有主键的表不支持迁移。 如果没有主键,就无法精确定位记录,在分片变更过程中若发生重试,可能导致数据增多。
解决方案:增加主键。
3.分片键不是主键的一部分可能导致逻辑表存在主键重复的数据(因为位于不同的物理分表内)。当数据需要重分布时,这类数据如果路由到同一物理表,由于主键相同,将只会保留一条,必定会导致迁移后的数据量和原来不一致,而导致分片变更失败。
主键是全局唯一序列和分片数不变化的情况下不会发生此种错误。
解决方案:订正数据,再重新校验。