分片变更操作指导
本章节以RDS for MySQL实例为例说明分片变更的使用方法。
前提条件
- DDM实例中已创建逻辑库。
- 已有RDS for MySQL实例与DDM实例处于相同的VPC,该RDS for MySQL实例没有被其它DDM实例使用。如果需增加DN实例,则DN实例与DDM实例需要处于相同的VPC。
- 本特性需满足DDM内核版本大于等于3.0.8.3版本,建议您使用最新的内核版本来进行分片变更。
- DDM实例关联的数据节点不能处于只读状态。
- 拆分模式为“非拆分”的逻辑库暂不支持分片变更功能。
操作步骤
- 登录分布式数据库中间件控制台。
- 在实例管理列表页面,选择目标DDM实例,单击实例名称,进入实例基本信息页面。
- 在实例基本信息页面左侧导航栏,选择“逻辑库管理”选项卡,查看DDM实例逻辑库。
- 在逻辑库列表页面,单击“操作”列“分片变更”。
图1 选择分片变更操作
- 在“分片变更”页面,填选对应参数,单击“测试”。
图2 分片变更
表1 参数说明 参数名称
说明
已有实例和分片
展示已有实例和分片数的信息。
变更后逻辑库总分片数
默认显示的是当前已有的总分片数,如果需要增加分片,请填写增加后的总分片数,DDM会尽量均匀分配到数据节点上。
变更模式
默认为共享式变更模式,您可以业务需要选择变更模式。
切换策略
支持手动切换和自动切换两种方式。
切换任务会将读写流量切换到新增的实例上,在切换过程中,会有一到两次闪断,服务不受影响。建议在业务低峰期执行切换。
选择实例
默认选中的是已有的实例,您可以根据业务需要选择是否增加数据库实例。
数据库实例需要填写账号密码进行连接测试,测试连接成功后才可进行下一步操作。
- DDM分片变更不支持无主键表。
- 逻辑库在单数据节点上的物理分片数不超过64。如果因业务需要分片数超过64,请联系DDM客服人员。
- 数据库账号所需权限:SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER WITH GRANT OPTION。
- 测试通过后,单击“下一步”,进入预检查页面。
图3 预检查
- 预检查时,实际还未开始真正的变更,只有单击“确定”下发任务后才开始。
- 检查项中如果出现风险项,请确保该风险项不会影响业务后,再单击“忽略此风险”,建议先解决风险项,再进行变更。
- 检查完成后,单击“开始分片变更”。
- 分片变更任务进行中,数据迁移分为全量迁移和增量待处理两个阶段。
单击任务前的可查看本次分片变更的任务详情,包含变更前后逻辑库总分片数、变更前后数据节点数、切换策略等详细内容。
图4 查看分片变更任务进度条
也可以通过在SQL客户端执行“show migrate status”命令来查看分片变更的操作进度。图5 执行命令查看进度
一个源RDS实例查询出一条记录,存在N个源RDS实例会查询出N条记录。
SOURCE_RDS:源RDS实例。
MIGRATE_ID:扩容ID。
SUCCEED_TABLE_STRUCTURE:已经迁移成功的表结构数。
TOTAL_TABLE_STRUCTURE:需要迁移的表结构总数。
SUCCEED_TABLE_DATA:已经迁移成功的表数据的数量,以表为计量单位。
TOTAL_TABLE_DATA:需要迁移表数据的总数量,以表为计量单位。
SUCCEED_INDEX_DATA:已经迁移成功的索引的数量,以表为计量单位。
TOTAL_INDEX_DATA:需要迁移索引的总数量,以表为计量单位。
FULL_SUCCEED_COUNT:当前扩容子任务的已完成全量迁移的对象总量。
FULL_TOTAL_COUNT:当前扩容子任务的全部全量迁移对象总量。
FULL_PERCENTAGE:当前扩容子任务的全量迁移完成百分比。
将各个扩容子任务的全部全量对象总量和已完成全量对象总量进行汇聚,得到当前扩容任务的全量迁移总量和已完成量,即展示在“任务中心”的进度条数据
- 在“任务中心”单击操作栏的“更多 > 修改切换策略”可以对分片变更的切换策略进行修改。
图6 修改切换策略
- 在“任务中心”单击操作栏的“更多 > 查看运行日志”可以查看任务的日志记录。
图7 查看运行日志
- 数据迁移完成,如果切换策略选择了手动切换,需要在“任务中心”操作栏单击“切换”将路由切换到新的分片上或者数据节点上。如果切换策略选择了自动切换,任务将在设置的切换时间内,自动进行切换。
图8 手动切换
- 切换是本次变更的核心操作,未切换前本次分片变更还没有对原数据库中数据产生实质影响,可以通过取消任务来结束本次分片变更任务。
- 切换过程中,如果分片数未变只增加了RDS for MySQL实例进行分片平移,会禁写,如果分片数有变化,则会禁写禁读。
- 为了确保数据一致性,切换过程中DDM服务会进行数据完整性校验,导致切换时间变长,具体时间由数据量大小决定,建议在业务低峰期操作。
- 分片变更任务进行中,数据迁移分为全量迁移和增量待处理两个阶段。
- 分片变更结束后数据将会重新分布,确认完数据无误后可单击“清理”来清除原RDS for MySQL数据库实例的数据。
图9 清理数据
- 请仔细阅读弹窗内容,确认任务没有问题后单击“是”进行清理。
- 清理完成。
图10 清理完成
清理操作使用drop语句对残留的原数据进行清理,由于MySQL的特性,清理完成后磁盘空间可能无法立刻完成释放。
- 分片变更结束后,可使用以下命令进行检查。
show data node:查询新的数据节点和物理分片的对应关系。
show db status:查询逻辑库磁盘预估占用。