PolarDB-X提供了评估迁移工具,帮助您将数据库从PolarDB-X 1.0迁移至PolarDB-X 2.0。

相关概念

  • 源实例:待迁移的PolarDB-X 1.0实例。
  • 源数据库(源库):源实例中要进行迁移的数据库。
  • 目标实例:要迁移至的PolarDB-X 2.0实例。
  • 目标数据库(目标库):目标实例中创建好的用于迁移至的数据库。
  • 目标中继数据库:如果目标数据库为AUTO模式,目标实例中需创建用于结构迁移中继的DRDS模式数据库。

费用

评估迁移功能可免费使用。

注意事项

  • 当前评估迁移功能已面向中国地域发布。
  • 当前仅PolarDB-X 1.0 V5.4.9-16300361及以上的实例支持迁移至PolarDB-X 2.0。
  • 当前评估迁移工具支持的是库级别的数据迁移功能。每个迁移任务仅包含一个数据库的数据迁移。
  • 迁移将会对全量数据进行迁移。执行迁移前需评估源库和目标库的性能,因此建议在业务非高峰期执行迁移。迁移时会占用源和目标库一定读写资源,导致数据库的负载上升。
  • 在迁移期间,请勿对源实例和目标实例执行扩容、缩容、迁移热点表、变更拆分键和变更DDL等操作,否则会导致数据迁移任务失败、数据不一致或扩缩容失败等问题。
  • 当前仅支持将存储类型为RDS for MySQL的数据库迁移至PolarDB-X 2.0。
  • 当前支持将PolarDB-X 1.0迁移至PolarDB-X 2.0的DRDS模式数据库和AUTO模式数据库。迁移至AUTO模式数据库时,目标实例版本需在5.4.16-16717637及以上。如果目标库为AUTO模式,需要创建中继DRDS模式数据库并授予相应权限。中继DRDS模式数据库名称需要设置为目标AUTO库名+_drdstoauto。例如目标库为AUTO模式数据库mytest,则目标中继库为DRDS模式数据库mytest_drdstoauto。同时,由于AUTO模式数据库与DRDS模式数据库存在一定架构差异,建议进行业务测试和性能测试后再切换。
  • 迁移期间对目标实例性能有一定影响,不建议迁移至已有线上服务的数据库实例。

迁移前准备

在开始评估迁移前,请在源实例中:
  • 将源实例底层RDS的binlog_row_image设置为FULL,binlog_rows_query_log_events设置为ON。否则预检查阶段会提示报错,且无法成功启动数据迁移任务。支持在控制台的参数设置界面修改RDS参数:456789
  • 建议将源实例本地Binlog日志保存时间设置为至少保留7天,否则可能因无法获取Binlog而导致增量任务失败。支持在控制台的备份恢复界面修改日志保存时间:456789
  • 建议创建和使用迁移专用账号,减少正常业务和迁移之间的互相影响。
  • 待迁移的表需具有主键约束或非空唯一键约束,否则预检查阶段会提示报错,且无法成功启动数据迁移任务。
  • 根据业务情况在源实例库表中删除SIMPLE Sequence(若有)。

此外,请使用相同阿里云账号相同地域购买PolarDB-X 2.0实例作为目标实例,且:

  • 已在目标实例中创建账号。
  • 已在目标实例中创建数据库作为目标数据库,且目标数据库的字符集与源数据库的字符集保持一致。

    例如,若您PolarDB-X 1.0实例中的数据库字符集为utf8mb4,请在PolarDB-X 2.0实例中创建好字符集同为utf8mb4的数据库。

    说明 您可以执行如下命令,查看PolarDB-X 1.0实例中数据库的字符集。
    SELECT default_character_set_name FROM information_schema.SCHEMATA WHERE schema_name = '...'
  • 如果目标数据库为AUTO模式,需在目标实例中创建DRDS模式数据库作为目标中继数据库,且目标中继数据库的字符集与源数据库的字符集保持一致,并授予读写权限。

    例如,若您源库为PolarDB-X 1.0实例中的数据库,名称为“test1”,目标库为PolarDB-X 2.0中的AUTO模式数据库,名称为“test2”,则需在PolarDB-X 2.0实例中创建DRDS模式数据库作为中继数据库,名称为“test2_drdstoauto”。

  • 创建的目标数据库需授权给创建的账号,确保账号有目标数据库的读写权限。
  • 迁移过程中,评估迁移工具不会覆盖目标数据库中已有的表。但请确认目标数据库中不存在与源数据库中的表相同名称的表。否则预检查阶段会提示报错,且无法成功启动数据迁移任务。

步骤1:创建迁移任务

说明

评估迁移工具提供了库级别的数据迁移功能。每个迁移任务仅包含一个数据库的数据迁移。因此若您有多个数据库,请创建多个迁移任务。

  1. 登录PolarDB分布式版控制台
  2. 在页面左上角选择目标实例所在地域。
  3. 实例列表页,单击PolarDB-X 2.0页签。
  4. 右侧导航栏单击评估迁移
  5. 单击创建迁移任务
  6. 在打开的页面中,填写如下内容。
    配置项说明
    任务名称为本次评估与迁移任务自定义一个名称。
    PolarDB-X 1.0实例实例地域选择源PolarDB-X 1.0实例所在的地域。

    PolarDB-X 1.0实例与目标PolarDB-X 2.0实例需要位于同一地域下。

    实例选择源PolarDB-X 1.0实例。

    当选定实例地域后,该地域下的所有PolarDB-X 1.0的实例将展示在实例下拉列表中。

    数据库选择PolarDB-X 1.0实例下要迁移的源数据库。

    当选定实例后,该实例下的所有数据库将展示在数据库下拉列表中。

    数据库账号、数据库密码对已选定的数据库拥有读写权限的账号及对应的密码。
    PolarDB-X 2.0实例选择实例选择与PolarDB-X 1.0实例处于同一地域下的PolarDB-X 2.0实例。

    当选定源实例地域后,该地域下所有PolarDB-X 2.0实例将展示在实例下拉列表中。

    说明 您也可选择新购实例,并设置想要购买的实例的规格和节点数,了解对应的价格。
    数据库

    选择PolarDB-X 2.0实例下要迁移至的目标数据库。

    当选定实例后,该实例下的所有数据库将展示在数据库下拉列表中。

    数据库账号、数据库密码对已选定的数据库有读写权限的账号及对应的密码。
    456789
  7. 配置完源PolarDB-X 1.0实例和目标PolarDB-X 2.0实例后,您可以了解1.0和2.0实例的价格区别。
  8. 价格确认无误后,单击开始兼容性评估,进入下一步。

步骤2:兼容性评估

迁移任务创建完成后,将进行SQL兼容性评估。由于PolarDB-X 1.0与2.0的SQL语法略有差异,因此需要进行兼容性评估,评估源库的SQL语句是否完全兼容PolarDB-X 2.0的SQL语法。若不兼容,则需要对其进行针对性的改造。

当单击开始兼容性评估后,评估迁移工具将开始评估源库和目标库的兼容性情况。

兼容性

若存在未通过的SQL,您可根据PolarDB-X 2.0的SQL语法说明进行SQL改造。您也可先进行下一步,然后在迁移开始并校验完成后,对相关SQL进行改造。

步骤3:预检查

兼容性评估完成后,单击兼容性评估后进行下一步,进入预检查阶段。

456879

预检查项有:

  • CONNECTIVITY:检查源实例对应库和目标实例对应库的用户名、密码、权限是否正确,以及两者的网络连通性。若失败,请检查实例的用户名、密码以及相关权限是否正确。如目标库为AUTO模式数据库,则需额外检查目标中继库的用户名、密码以及相关权限是否正确。
  • BINLOG_CONFIG:检查源实例底层RDS的Binlog参数设置是否正确。请确保已将源实例底层RDS的binlog_row_image设置为FULL,binlog_rows_query_log_events设置为ON。
  • TABLE_META:检查源实例库表的主键情况。若失败,请检查源实例待迁移的表,确保其需具有主键约束或非空唯一键约束。
  • SEQUENCE:检查源库是否存在SIMPLE Sequence。由于PolarDB-X 2.0不支持SIMPLE Sequence,因此需要在源库根据业务情况删除此Sequence。
  • CONFLICT:检查目标库中是否存在与源库中同名的表。若失败,请修改目标库中对应同名表的名称。

请确保所有预检查项均通过,否则无法开始迁移。

步骤4:数据迁移

  1. 当预检查的所有结果均通过后,单击开始升级

    开始迁移后,返回迁移任务列表,能够查看任务状态。

    456789
  2. 开始迁移后,任务状态变为迁移准备中,包括创建表和一些资源的准备。
    说明 若出现错误提示,或者一直处于该状态下无法开始迁移,请联系我们
  3. 迁移准备完成后,任务状态变为数据迁移中。单击任务名称,在界面左侧单击数据迁移详情,该阶段将对全量数据和增量数据进行迁移。任务详情

    迁移过程说明如下:

    1. 首先开始全量迁移。开始迁移后,源库中待迁移对象的存量数据,将全部迁移到目标库中。
    2. 全量迁移的进度达到100%后,将立即自动开始增量迁移,将全量迁移开始后源库中更新的数据持续同步至目标库。

      增量迁移是一个动态持续进行的过程,在业务正式切换到目标库以前,是不会停止的。

    3. 增量迁移开始后,当源库和目标库中的数据大致追平后(表现为增量迁移的延迟在30秒以内),将自动开始数据校验,校验源库和目标库中的数据一致性,确保两端数据是动态一致的。
    说明 以上三种迁移状态若出现错误提示,或者长时间没有进度变化,请联系我们
  4. 数据校验进度达到100%后,界面左侧导航栏单击评估与验证,查看是否有评估未通过的SQL,并进行针对性改造。

步骤5:开启回流迁移,并切换业务至PolarDB-X 2.0

当增量迁移的延迟在10秒内,且数据校验达到100%,SQL兼容性评估全部通过后,表明源库和目标库的数据除增量迁移的延迟外,已经达到一致。

图 1. 增量迁移的延迟小于10秒且校验进度达到100%
增量迁移的延迟小于10秒且校验进度达到100%
图 2. SQL兼容性评估全部通过
SQL兼容性评估全部通过

当业务应用连接的数据库的迁移任务都达到以上状态时,可将业务从源实例切换至目标实例。

业务切换前,为了防止风险的发生(例如发现迁移的数据有误、新迁移的数据不符合预期等),建议开启回流迁移功能,将切换后新写入目标数据库的业务数据同步到源数据库,从而及时实现可逆的操作。

说明 当前您需要联系我们申请开启回流迁移

开启回流迁移后,可按照如下步骤将业务的应用连接从源实例切换至目标实例:

警告 切换操作会导致业务中断,直至重新连接至目标实例后恢复。请在业务低峰期进行切换。
  1. 停止应用,检查源数据库是否还有连接,保证源数据库连接已经完全停止。
    说明
    • 您可以检查源数据库的会话数(连接数),当会话值逐渐降低为0时,表示应用已经完全停止。
    • 请确保源库和目标库都无回流迁移之外的同时写入,包括触发器、任务、业务写入等,否则无法保证两侧数据一致性。
    • 由于增量迁移存在一定的延迟(10秒内),因此为了保证源库和目标库的数据完全一致,应用的停止时间需长于该延迟时间。
  2. 修改应用内的连接地址配置。您可前往目标实例的基本信息页获取新的连接地址信息。
  3. 重新启动应用,观察目标数据库的连接情况。

    当切换至PolarDB-X 2.0实例后,新的业务数据将灌入对应数据库中。若您开启了回流迁移功能,切换后新产生的数据将同时增量同步至PolarDB-X 1.0实例对应的数据库中。