PolarDB是阿里云自研的下一代关系型云数据库,有三个独立的引擎,分别可以100%兼容MySQL、100%兼容PostgreSQL、高度兼容Oracle语法,适用于企业多样化的数据库应用场景。通过使用数据传输服务DTS(Data Transmission Service),您可以实现PolarDB-O集群间的数据迁移。

前提条件

  • 由于该功能目前仅在华东2(上海)地域支持,要求源和目标PolarDB-O集群均属于华东2(上海)地域。
  • 源PolarDB-O集群中,待迁移的表需具备主键或非空唯一索引。
  • 源PolarDB-O集群中,wal_level参数的值需设置为logical,即在预写式日志WAL(Write-ahead logging)中增加支持逻辑编码所需的信息。详情请参见设置集群参数

注意事项

  • DTS在执行全量数据迁移时将占用源库和目标库一定的读写资源,可能会导致数据库的负载上升,在数据库性能较差、规格较低或业务量较大的情况下(例如源库有大量慢SQL、存在无主键表或目标库存在死锁等),可能会加重数据库压力,甚至导致数据库服务不可用。因此您需要在执行数据迁移前评估源库和目标库的性能,同时建议您在业务低峰期执行数据迁移(例如源库和目标库的CPU负载在30%以下)。
  • 一个数据迁移任务只能迁移一个数据库,如有多个数据库需要迁移,您需要为每个数据库配置数据迁移任务。
  • 在增量数据迁移过程中,如果迁移对象的选择粒度为Schema,在待迁移的Schema中创建了新的表或使用RENAME命令重建了待迁移的表,您需要在对该表写入数据前执行ALTER TABLE schema.table REPLICA IDENTITY FULL;命令。
    说明 将上述命令中的 schematable替换成真实的Schema名和表名。
  • 为保障增量数据迁移延迟时间展示的准确性,DTS会在源库中新增一个表,表名为dts_postgres_heartbeat,结构及内容如下图所示。表结构
  • 对于迁移失败的任务,DTS会触发自动恢复。在您将业务切换至目标库之前,请务必先停止或释放该任务,避免该任务被自动恢复,导致源端数据覆盖目标库的数据。

费用说明

迁移类型 链路配置费用 公网流量费用
结构迁移和全量数据迁移 不收费。 通过公网将数据迁移出阿里云时将收费,详情请参见产品定价
增量数据迁移 收费,详情请参见产品定价

迁移类型说明

迁移类型 说明
结构迁移 DTS将迁移对象的结构定义迁移到目标PolarDB集群。目前支持的对象包括:表、视图、同义词、触发器(不兼容)、存储过程、存储函数、包、自定义类型。
注意 不兼容触发器。当迁移对象包含了触发器可能导致数据不一致。
全量数据迁移 DTS会将源库中迁移对象的存量数据,全部迁移至目标PolarDB集群。
注意 在结构迁移和全量数据迁移完成之前,请勿对迁移对象执行DDL操作,否则可能导致迁移失败。
增量数据迁移 DTS在全量数据迁移的基础上轮询并捕获源库产生的Redo Log,将源库的增量更新实时迁移到目标PolarDB集群。目前支持仅支持同步DML操作(INSERT、UPDATE、DELETE),暂不支持同步DDL操作。

通过增量数据迁移可以实现在应用不停服的情况下,平滑地完成数据迁移。

操作步骤

  1. 登录数据传输控制台
  2. 在左侧导航栏,单击数据迁移
  3. 迁移任务列表页面顶部,选择迁移的目标集群所属地域。
    选择地域
  4. 单击页面右上角的创建迁移任务
  5. 配置迁移任务的源库和目标库连接信息。
    polardb o间迁移
    类别 配置 说明
    任务名称 DTS会自动生成一个任务名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。
    源库信息 实例类型 选择PolarDB
    实例地区 选择源PolarDB集群所属地域。
    PolarDB实例ID 选择源PolarDB集群ID。
    数据库名称 填入待迁移的数据库名称。
    数据库账号 填入源PolarDB集群的高权限账号,详情请参见创建数据库账号
    数据库密码 填入该数据库账号的密码。
    说明 源库信息填写完毕后,您可以单击 数据库密码后的 测试连接来验证填入的源库信息是否正确。源库信息填写正确则提示 测试通过;如果提示 测试失败,单击 测试失败后的 诊断,根据提示调整填写的源库信息。
    目标库信息 实例类型 选择PolarDB
    实例地区 选择目标PolarDB集群所属地域。
    PolarDB实例ID 选择目标PolarDB集群ID。
    数据库名称 填入待迁入数据的数据库名称。
    数据库账号 填入目标PolarDB集群的数据库账号,该账号需具备数据库Owner权限。
    注意 数据库Owner在创建数据库时已指定。
    数据库密码 填入该数据库账号的密码。
    说明 目标库信息填写完毕后,您可以单击 数据库密码后的 测试连接来验证填入的目标库信息是否正确。目标库信息填写正确则提示 测试通过;如果提示 测试失败,单击 测试失败后的 诊断,根据提示调整填写的目标库信息。
  6. 配置完成后,单击页面右下角的授权白名单并进入下一步
    DTS服务器的IP地址会自动添加到源和目标PolarDB集群的白名单中,用于保障DTS服务器能够正常连接源和目标PolarDB集群。
  7. 选择迁移类型和迁移对象。
    选择迁移对象
    配置 说明
    迁移类型
    • 如果只需要进行全量迁移,同时勾选结构迁移全量数据迁移
    • 如果需要进行不停机迁移,同时勾选结构迁移全量数据迁移增量数据迁移
    注意
    • 如果未勾选增量数据迁移,为保障数据一致性,在结构迁移或全量数据迁移期间请勿在源数据库中写入新的数据。
    • 在结构迁移和全量数据迁移完成之前,请勿对迁移对象执行DDL操作,否则可能导致迁移失败。
    迁移对象 迁移对象框中单击待迁移的对象(Schema、表或列),然后单击向右小箭头图标将其移动至已选择对象框。
    注意
    • 默认情况下,迁移完成后,迁移对象的名称不会变化。如果您需要改变迁移对象在目标PolarDB集群中的名称,需要使用对象名映射功能,详情请参见库表列映射
    • 如果使用了对象名映射功能,可能会导致依赖这个对象的其他对象迁移失败。
  8. 单击页面右下角的预检查并启动
    注意
    • 在迁移任务正式启动之前,会先进行预检查。只有通过预检查,DTS才能迁移数据。
    • 如果预检查失败,单击具体检查项后的提示图标,查看失败详情。根据提示修复后,重新进行预检查。
  9. 预检查通过后,单击下一步
  10. 在弹出的购买配置确认对话框,选择链路规格并选中数据传输(按量付费)服务条款
  11. 单击购买并启动,迁移任务正式开始。
    • 结构迁移+全量数据迁移

      请勿手动结束迁移任务,否则可能会导致数据不完整。您只需等待迁移任务完成即可,迁移任务会自动结束。

    • 结构迁移+全量数据迁移+增量数据迁移

      迁移任务不会自动结束,您需要手动结束迁移任务。

      注意 请选择合适的时间手动结束迁移任务,例如业务低峰期或准备将业务切换至目标集群时。
      1. 观察迁移任务的进度变更为增量迁移,并显示为无延迟状态时,将源库停写几分钟,此时增量迁移的状态可能会显示延迟的时间。
      2. 等待迁移任务的增量迁移再次进入无延迟状态后,手动结束迁移任务。结束增量迁移任务

相关文档

业务切换流程