管理
分片方案在线变更
提供对业务表的表类型、分片规则、分片字段、分片所属数据节点四个维度进行在线变更的支持。业务表在变更期间不会锁表,业务可对表进行正常的IUD操作。
分片方案在线变更记录
-
页面显示已执行完成或正在执行的变更任务记录,正在变更的任务允许通过【取消执行】来取消并回滚操作
-
正在执行的任务可实时查看执行进度,每3秒刷新一次
-
可通过“逻辑库”、“表名称”、“状态”来筛选查看任务记录
-
任务记录“状态”通常有9种,依次为:
-
成功:任务正常完成且未出现数据不一致情况。
-
成功:
任务正常完成但出现部分数据不一致且由程序自动修复。警告标志显示:“变更后数据一致性检测发现少量数据不一致,程序已自动修复”。 -
成功 :
任务正常完成且由程序修复了不一致的数据,但仍然还有部分数据不一致,用户选择忽略不一致的数据完成变更任务。告警标记提示:“程序自动修复不一致数据后数据仍然存在不一致,用户选择允许部分数据不一致情况”。 -
失败:
任务失败结束,原因为用户手动取消执行任务。错误标记提示:“手动取消变更任务执行”。 -
失败:
任务失败结束,原因为程序自动修复后仍出现数据不一致,用户选择放弃此任务。错误标记提示:“程序自动修复不一致数据后数据仍然存在不一致,用户选择放弃本次变更任务” -
失败:
任务失败结束,原因为变更完成后发现数据不一致,程序自动修复后依旧含有不一致数据,需要用户做出确认,用户未在设定等待时间处理导致任务失败。错误标记提示:“未在设置时间范围内对数据不一致情况作出处理,变更任务自动失败” -
失败<:
任务失败结束,原因为批量发起任务后,变更方案未通过“变更方案预检”检查导致失败。错误标记提示:“批量发起任务后,变更方案未通过预检测阶段导致任务失败” -
等待:
任务未完成,处于数据不一致时需要用户做出确认处理。告警标志提示:“程序自动修复不一致数据后依旧存在不一致数据,等待用户确认处理” -
暂停 :
任务发起后,由于用户设置了暂停复制时段,任务进入该时段后,页面显示该任务状态为暂停,且鼠标移入后提示:“变更任务处于暂停数据复制时段”
发起变更任务
点击“管理->分片方案在线变更”页面的【发起变更任务】按钮,进入发起变更任务配置页面
填写变更方案
-
选择变更表所在逻辑库,以及需要变更的表名称。(不支持选择父表或未创建表结构的表)
-
“源表信息”中显示已从逻辑库选择的表的原本信息,包括(表类型、节点信息、分片规则、分片字段)
-
变更方案可选择需要变更成的“表类型”(目前不支持变更成子表)、“分片字段”(表类型为水平分片表时)、“分片方式”(表类型为水平分片表时)、“数据节点”
-
若勾选“开启全局唯一约束”则需要保证源表中唯一约束字段值必须都唯一
-
勾选“执行过程跳过主备数据一致性检测”,则变更方案预检,会跳过主备一致性检测,默认不勾选
变更方案预检
变更方案预检主要是为源表检测预选的变更方案是否符合变更要求以及能否保证数据一致性。点击【开始检测】进行变更方案预检。
特殊预检项说明
- 源表数据主备一致性检测结果一致
在24小时内有该源表所在的逻辑库已发起过主备一致性检测且校验结果为一致的,会弹出提示框提示是继续检测,还是跳过检测。(否则需要执行一次该表的主备数据一致性检测)。
- 新的分片方案不会导致数据丢失
分片规则的变更、分片字段的变更可能导致数据的不一致,系统将会根据分片规则和字段进行判断,是否有产生数据不一致的可能。
- 开启全局唯一约束后,源表唯一约束字段的历史数据唯一
若在填写变更方案中勾选“开启全局唯一约束”则变更方案预检会检测源表唯一约束字段的历史数据是否唯一。若未勾选或变更的表类型不为水平分片表则该检测项直接通过,不进行检测。
注意
变更成全局表或垂直分片表类型时,预检项“分片字段为表结构包含的字段”、“变更方案的分片规则与分片字段与源表不一致”、“分片字段为当前分片函数推荐的字段类型”将会略过检测。
变更方案确认
检查变更表信息与变更方案信息,同时可设置变更任务在执行时的特殊设定。
源表信息与变更方案信息都不能修改,如果需要修改可点击【上一步】返回“填写变更方案”中,修改完还需要执行一次检测
变更设置:
-
源表处理: 选择24小时后删除或自定义时间删除,则根据设置时间自动删除源表;如选择保留,则源表以源表名+roYYMMDDHHMMSS形式存在。变更任务失败时源表不会被处理。保留的表可在逻辑库中查看到,同时表信息页面也会正常显示
-
批次行数: 数据复制过程中每批次复制的数据行数。最大不超过10000,最小不低于1
-
复制间隔: 数据复制过程中每批次间的间隔时间。选择“x倍SQL执行时间”即间隔时间为x倍的每批次复制数据插入新表的执行时间,选择“固定x秒”则每批次复制间隔时间是固定的x秒。倍数输入范围【0.1-100000】,秒数输入范围【0.001-100】
-
等待超时: 在变更导致数据不一致情况时,等待用户作出处理的时间,超出设置时间未确认则变更任务自动失败,默认7天可编辑修改,输入框只允许输入正整数且范围在【1-30】
-
暂停数据复制时段: 在选择的时间范围内,不进行新旧表之间的数据复制,为暂停状态,时间段过后再继续分片变更任务。(若变更的表数据量大,建议设置“暂停数据复制时段”,错开业务高峰期)
点击【提交】按钮后,系统将分片变更任务提交到计算节点后台执行。可在分片方案在线变更页面查看当前执行情况。任务执行完可通过点击“查看结果”按钮查看任务执行详情。
批量发起变更
- 发起方式
可在分片方案在线变更页面点击“【批量操作】->【批量发起变更任务】”,或在“数据分片方案推荐”功能中选中多个分片推荐方案记录进行【在线修改】批量发起变更。
- 批量发起填写说明
-
批量发起的任务中,如果某个任务预检测失败则整个任务失败。预检测过程中,如果源表所在逻辑库在24小时内已发起过主备一致性检测且结果一致,则该表预检测不再执行“主备数据一致性”检测项
-
批量发起变更中“源表处理”、“复制间隔”设置无法自定义输入值,只支持下拉框选项
- 执行批量任务
-
如果批量发起的多个任务中任意一个任务被手动取消执行,其他任务即使没有发生异常,也会变成失败状态,并提示“因同一批次发起的任务中存在某一任务被人为取消导致当前任务自动被取消”
-
如果批量发起的多个任务中任意一个任务预检测失败(或者大量数据丢失/超出/不一致等异常导致失败),其他任务即使没有发生异常,也会变成失败状态,并提示“同一批次发起的任务中存在某一任务出现异常情况导致该任务自动被置为失败”
-
如果批量发起的多个任务中任意一个任务处于暂停时段,其他任务也不会结束,状态为变更中,即同一批次发起的变更任务,会在同时结束,要么全部成功,要么全部失败
分片方案变更异常情况处理
在分片方案变更任务完成时,发现变更后的新表与源表存在数据不一致的情况,需要根据异常情况做出处理
- 当变更过程中出现少量数据丢失时,管理平台会提示丢失的数据所在的区间范围,并自动弥补丢失的数据,如下图:
- 当变更过程中出现多出少量数据时,管理平台会提示多出的数据所在的区间范围,并自动删除多出的数据,如下图:
- 当变更过程中出现少量数据不一致时,管理平台会提示不一致的数据所在的区间范围,并自动修复不一致的数据,如下图:
- 当变更过程中出现大量数据不一致时,管理平台会提示不一致的数据所在的区间范围,但不会修复大量不一致的数据,如下图:
- 当变更过程中第一次出现少量数据不一致(或缺失、超出)时,管理平台会主动修复不一致的数据,如果在修复完成后再出现数据不一致,管理平台会提示自动修复后依旧不一致,给出不一致(或缺失、超出)数据所在的区间范围,且不会再自动修复,同时等待用户选择:【忽略不一致】或者【放弃变更】
选择【放弃变更】,则变更任务失败,并提示“程序自动修复不一致数据后数据仍然不一致,用户选择放弃本次变更任务”,如下图:
选择【忽略不一致】,则任务成功但存在部分不一致数据,并提示“在线变更完成,用户选择允许变更后部分数据不一致”,如下图: