京东云RDS数据迁移常见场景攻略
字数 1787 2025-08-11 08:35:57

京东云RDS数据迁移常见场景攻略详解

一、数据迁移上云

1.1 迁移工具介绍

京东云提供两种DTS(Data Transformation Service)迁移工具:

  • 数据迁移:适合传统迁移场景
  • 数据同步:适合高效同步需求

1.2 迁移原理详解(以MySQL为例)

迁移三阶段

  1. 全量迁移阶段

    • 数据迁移工具
      • 使用mysqldump --single-transaction获取一致性快照
      • 无法保证非事务引擎表的数据一致性
      • 串行操作
    • 数据同步工具
      • 多表并行select方式
      • 根据主键顺序分批获取记录(无主键则全表查询)
      • 不加锁、不开启事务,全量期间数据不一致
      • 只提供"全量+增量"和"增量"选项
  2. 增量迁移阶段

    • 两种工具都通过记录的gtid点位抓取binlog同步到目标端
    • 区别:
      • 数据迁移:串行执行
      • 数据同步:合并同表事务后一次提交(效率更高)
  3. 数据校验阶段

    • 源库数据分块计算crc
    • 校验信息存储在目标库_jdts_check前缀的库下checksum表
    • 目标库同步完成后进行相同算法计算比较

1.3 常见问题解答

  1. 迁移速度调整

    • 数据迁移:不可调整
    • 数据同步:可选择更大迁移实例和增加并发(基于表粒度)
  2. 迁移进度显示超过100%

    • 原因:基于数据字典记录数估算,不完全准确
  3. 迁移延时问题

    • 可能原因:
      • 源库写操作压力大
      • 目标库读写压力大
      • 迁移实例压力大
  4. 目标库读写建议

    • 理论上可读写但不建议
    • 弊端:
      • 可能导致校验不一致
      • 增加目标库压力,减缓同步速度
  5. 同名库表处理

    • 目标库有数据:预检报错
    • 目标库为空:直接写入
  6. 网络不通问题

    • 检查源库和目标库白名单
    • 需添加dts迁移实例IP
  7. _jdts前缀库处理

    • 迁移完成后可删除
  8. 只读实例同步

    • 支持,只要源实例是gtid方式复制
  9. 内网迁移格式限制

    • 数据迁移:只能使用json格式(迁移实例未创建无法判断连通性)
    • 数据同步:已改进,内外网均可图形化选择库表
  10. 源实例影响

    • 两种工具都会产生读IO压力
    • 建议:
      • 业务低峰期同步
      • 从只读实例同步
      • 数据同步可通过控制台暂停/启动
  11. MySQL系统库迁移

    • 不支持迁移MySQL库
    • 建议:
      • 目标库提前创建用户和权限
      • 使用mysqldump等工具导入
  12. Got fatal error 1236报错

    • 原因:增量需要的binlog在源端被删除
    • 解决方案:
      • 迁移期间保留较长时间binlog
      • 无法找回则需重新迁移
  13. 版本一致性要求

    • 数据迁移:要求版本一致
    • 数据同步:支持低→高版本迁移

二、异地灾备方案

2.1 跨地域备份同步

  • 特点
    • 定期同步最新备份到异地
    • 简单免费
  • 缺点
    • 数据非实时
    • 灾备恢复会有数据丢失

2.2 灾备同步(仅支持MySQL)

  • 实现方式
    1. 创建异地灾备实例
    2. 使用DTS数据同步功能
    3. 同步方式选择"灾备同步"
  • 特点
    • 利用MySQL原生复制
    • 灾备实例与源实例完全一致(相当于异地只读实例)

2.3 灾备实例注意事项

  1. 源端限制

    • 仅支持京东云MySQL
    • 不支持自建或第三方云实例
  2. 操作限制

    • 无法进行变配/重启/主从切换
    • 需提前选好规格
  3. 实例特性

    • 主从架构
    • 可读不可写(类似异地只读实例)
    • 可手工提升为主备实例
  4. 同步终止

    • 手工结束同步后,灾备实例自动提升为普通主备实例

三、数据订阅服务

3.1 适用场景

  • 订阅数据到ES扩展搜索
  • 上下游订阅价格变更/服务通知
  • 多业务库数据合并/构建宽表

3.2 支持情况

  • 源端:MySQL/Percona/MariaDB/PostgreSQL
  • 目标端:仅支持Kafka

3.3 数据格式示例

{
  "operation": "update",
  "data": {
    "before": {"id":1,"price":100},
    "after": {"id":1,"price":120}
  }
}

3.4 注意事项

  1. 消息长度限制

    • 超过中间件最大长度时消息将被丢弃
    • 存在丢失数据风险
  2. 订阅起点

    • 默认从订阅实时时间点开始
    • 需要全量订阅需联系京东云技术支持

四、自建MySQL与云上MySQL相互复制

4.1 复制方向限制

  1. 云上MySQL作为自建MySQL从库

    • 不支持(京东云账号无super权限,无法执行change master)
  2. 自建MySQL作为云上MySQL从库

    • 技术上可行(自建MySQL有super权限)
    • 但不建议使用(非标准操作)

4.2 潜在问题

  • 复制中断风险
    • 云上MySQL主从切换时
    • 自建从库有复制延迟时
    • 可能导致binlog缺失,报错1236

4.3 缓解方案

  • 扩容时选择延迟切换
  • 避开业务高峰
京东云RDS数据迁移常见场景攻略详解 一、数据迁移上云 1.1 迁移工具介绍 京东云提供两种DTS(Data Transformation Service)迁移工具: 数据迁移 :适合传统迁移场景 数据同步 :适合高效同步需求 1.2 迁移原理详解(以MySQL为例) 迁移三阶段 全量迁移阶段 数据迁移工具 : 使用 mysqldump --single-transaction 获取一致性快照 无法保证非事务引擎表的数据一致性 串行操作 数据同步工具 : 多表并行select方式 根据主键顺序分批获取记录(无主键则全表查询) 不加锁、不开启事务,全量期间数据不一致 只提供"全量+增量"和"增量"选项 增量迁移阶段 两种工具都通过记录的gtid点位抓取binlog同步到目标端 区别: 数据迁移:串行执行 数据同步:合并同表事务后一次提交(效率更高) 数据校验阶段 源库数据分块计算crc 校验信息存储在目标库 _jdts_check 前缀的库下checksum表 目标库同步完成后进行相同算法计算比较 1.3 常见问题解答 迁移速度调整 数据迁移:不可调整 数据同步:可选择更大迁移实例和增加并发(基于表粒度) 迁移进度显示超过100% 原因:基于数据字典记录数估算,不完全准确 迁移延时问题 可能原因: 源库写操作压力大 目标库读写压力大 迁移实例压力大 目标库读写建议 理论上可读写但不建议 弊端: 可能导致校验不一致 增加目标库压力,减缓同步速度 同名库表处理 目标库有数据:预检报错 目标库为空:直接写入 网络不通问题 检查源库和目标库白名单 需添加dts迁移实例IP _jdts 前缀库处理 迁移完成后可删除 只读实例同步 支持,只要源实例是gtid方式复制 内网迁移格式限制 数据迁移:只能使用json格式(迁移实例未创建无法判断连通性) 数据同步:已改进,内外网均可图形化选择库表 源实例影响 两种工具都会产生读IO压力 建议: 业务低峰期同步 从只读实例同步 数据同步可通过控制台暂停/启动 MySQL系统库迁移 不支持迁移MySQL库 建议: 目标库提前创建用户和权限 使用mysqldump等工具导入 Got fatal error 1236报错 原因:增量需要的binlog在源端被删除 解决方案: 迁移期间保留较长时间binlog 无法找回则需重新迁移 版本一致性要求 数据迁移:要求版本一致 数据同步:支持低→高版本迁移 二、异地灾备方案 2.1 跨地域备份同步 特点 : 定期同步最新备份到异地 简单免费 缺点 : 数据非实时 灾备恢复会有数据丢失 2.2 灾备同步(仅支持MySQL) 实现方式 : 创建异地灾备实例 使用DTS数据同步功能 同步方式选择"灾备同步" 特点 : 利用MySQL原生复制 灾备实例与源实例完全一致(相当于异地只读实例) 2.3 灾备实例注意事项 源端限制 : 仅支持京东云MySQL 不支持自建或第三方云实例 操作限制 : 无法进行变配/重启/主从切换 需提前选好规格 实例特性 : 主从架构 可读不可写(类似异地只读实例) 可手工提升为主备实例 同步终止 : 手工结束同步后,灾备实例自动提升为普通主备实例 三、数据订阅服务 3.1 适用场景 订阅数据到ES扩展搜索 上下游订阅价格变更/服务通知 多业务库数据合并/构建宽表 3.2 支持情况 源端 :MySQL/Percona/MariaDB/PostgreSQL 目标端 :仅支持Kafka 3.3 数据格式示例 3.4 注意事项 消息长度限制 : 超过中间件最大长度时消息将被丢弃 存在丢失数据风险 订阅起点 : 默认从订阅实时时间点开始 需要全量订阅需联系京东云技术支持 四、自建MySQL与云上MySQL相互复制 4.1 复制方向限制 云上MySQL作为自建MySQL从库 : 不支持(京东云账号无super权限,无法执行change master) 自建MySQL作为云上MySQL从库 : 技术上可行(自建MySQL有super权限) 但不建议使用(非标准操作) 4.2 潜在问题 复制中断风险 : 云上MySQL主从切换时 自建从库有复制延迟时 可能导致binlog缺失,报错1236 4.3 缓解方案 扩容时选择延迟切换 避开业务高峰