PolarDB-X评估迁移工具

当业务增长带来数据扩展挑战,或计划将现有的RDS MySQLPolarDB MySQL等数据库升级到分布式架构以获取水平扩展能力时,可使用PolarDB-X提供的评估迁移工具。该工具是一个可视化的向导式迁移服务,用于将数据迁移至PolarDB-X 2.0企业版,覆盖从存量数据迁移、增量数据实时同步到业务切换的全生命周期。

功能简介

核心迁移流程

整个迁移过程划分为六个主要阶段,遵循准备-执行-验证-切换的逻辑,确保迁移过程清晰可控。

  1. 创建迁移任务:配置源实例和目标实例信息,建立迁移基础。

  2. 预检查与修复:系统自动检查环境、权限和配置,并提供修复指引。

  3. 结构迁移:迁移源实例的表和视图结构,并为分布式环境配置数据拆分规则。

  4. 数据迁移与监控:执行全量数据迁移和增量数据同步,并实时监控迁移状态。

  5. 业务切换:在数据同步延迟极低时,将业务流量切换至新的PolarDB-X 2.0企业版实例。

  6. (可选)业务回滚:若切换后出现非预期问题,可利用反向同步链路将业务安全回滚至源实例。

支持的迁移场景

  • PolarDB-X 1.0/PolarDB-X 2.0标准版升级至PolarDB-X 2.0企业版

  • RDS MySQL/PolarDB MySQL进行分布式改造,迁移至PolarDB-X 2.0企业版

  • PolarDB-X 2.0企业版进行大版本升级(如5.7升级至8.0)或进行跨实例数据迁移。

数据源

目标端

全量迁移

增量DML

数据校验

数据订正

带地址切换

反向同步

PolarDB-X 1.0

PolarDB-X 2.0企业版

支持

支持

支持

支持

支持

支持

RDS MySQL

PolarDB-X 2.0企业版

支持

支持

支持

支持

支持

支持

PolarDB MySQL

PolarDB-X 2.0企业版

支持

支持

支持

支持

支持

支持

PolarDB-X 2.0标准版

PolarDB-X 2.0企业版

支持

支持

支持

支持

支持

支持

PolarDB-X 2.0企业版

PolarDB-X 2.0企业版

支持

支持

支持

支持

支持

支持

适用范围

使用评估迁移工具前,需确认迁移场景满足以下条件。

  • 地域限制:仅支持中国内地以及中国(香港)地域。

  • 目标实例限制

    • 迁移的目标端仅支持PolarDB-X 2.0企业版

    • 若迁移至AUTO模式数据库时,其目标端版本需为polardb-2.3.0_5.4.18-17142802_xcluster5.4.18-20240412或更高。

      说明
      • 由于AUTO模式数据库与DRDS模式数据库之间存在一定的架构差异,建议在切换之前进行业务测试和性能测试。

  • 源实例限制

    • Binlog要求:源实例需开启Binlog。例如,源实例为PolarDB MySQL,或使用PolarDB MySQL作为存储的PolarDB-X 1.0实例,您需提前为该PolarDB MySQL集群开启Binlog。

    • PolarDB-X 1.0特殊限制:若源实例为PolarDB-X 1.0,且需使用带地址切换,则该实例下的所有数据库必须在同一个迁移任务中完成迁移。

注意事项

  • 对象与结构限制

    • 迁移对象:仅支持迁移表(Table)和视图(View)。数据库账号、备份策略等实例级配置,迁移后需手动设置。

    • 迁移粒度:支持一次选择多个库,以及指定迁移库中的部分表。

    • 主键要求:待迁移的表需包含主键或非空唯一键,否则预检查将失败。

    • 命名冲突:目标实例中不能存在与源实例待迁移的表同名的表。

  • 性能影响评估

    • 数据迁移会占用源实例和目标实例一定的读写资源,预计会导致数据库负载(CPUIOPS)上升。建议在业务低峰期执行迁移,并确保实例规格有足够冗余。

    • 不建议将数据迁移到已有线上业务的PolarDB-X 2.0企业版实例,以免对现有业务造成性能干扰。

  • 操作风险与预案

    • 严禁执行的操作:在整个迁移期间(从任务创建到切换完成),请勿对源实例和目标实例执行扩容、缩容、迁移热点表、变更拆分键以及任何DDL操作(如修改表结构)。这些操作可能导致迁移任务失败、数据不一致或相关操作失败。

    • 切换风险:业务切换是核心操作。操作前需详细阅读步骤五:业务切换章节的说明,特别是关于源实例禁写、DNS缓存刷新和回滚的限制。

  • 权限与安全

    • 账号权限

      • 源数据库账号:需拥有Binlog复制和待迁移库的读取权限。

      • 目标实例账号:需拥有待迁移库的读写权限。

    • 白名单

      • 源实例为RDS MySQL/PolarDB MySQL/PolarDB-X 2.0时,迁移工具会自动将IP白名单迁移至目标PolarDB-X 2.0企业版实例,无需手动配置。

      • 源实例为PolarDB-X 1.0时,您需要在迁移后手动为目标PolarDB-X 2.0企业版实例配置IP白名单。

创建并执行迁移任务

按照以下步骤完成从数据库到PolarDB-X 2.0企业版实例的迁移。

步骤一:创建迁移任务

配置迁移的源端和目标端信息,启动迁移流程。

  1. 前往PolarDB分布式版控制台,在页面左上角选择目标实例所在地域。

  2. 您可以按照如下两种方式中的任意一种进入创建迁移任务页面:

    1. 在左侧导航栏选择实例列表并切换至PolarDB-X 2.0页签,单击评估迁移image

    2. 在左侧导航栏选择评估迁移,单击创建迁移任务image

  3. 创建迁移任务页面,配置以下信息:

    • 任务名称:根据您的业务场景,填写任务名称。

    • 源数据库:选择源数据库类型(如RDS MySQLPolarDB MySQL等)、实例地域、具体实例以及需要迁移的数据库,并填写具备所需权限的账号和密码。

    • 目标数据库:选择目标PolarDB-X 2.0企业版实例,并指定要迁移数据库,以及填写具备读写权限的账号和密码。

    image

  4. 单击下一步进入预检查阶段。

步骤二:预检查与修复

系统将自动校验迁移所需的环境、权限和配置是否满足要求,并对失败项提供明确的修复指引。如果所有检查项均通过,则可以直接进入下一阶段。若出现失败项,需根据相应的修复指南进行处理,然后单击重试image

检查项

失败原因分析与修复指南

CONNECTIVITY

  • 原因:网络不通,或源/目标实例的账号、密码、权限不正确。

  • 修复:检查并确保一下内容

    • 源/目标实例处于正常运行状态。

    • 填写的用户名和密码准确无误。

    • 账号具备必要的读写和复制权限。

BINLOG_CONFIG

  • 原因:源实例的Binlog配置不满足增量同步要求。

  • 修复:登录源实例,开启Binlog。

    • RDS MySQL或使用RDS MySQL作为存储的PolarDB-X 1.0实例:binlog_row_image参数需设置为FULL

    • PolarDB MySQL前往控制台开启Binlog

TABLE_META

  • 原因:待迁移的库中存在无主键或无非空唯一键的表。

  • 修复:为保障增量数据同步和数据校验,需为所有待迁移的表添加主键或非空唯一键。

CONFLICT

  • 原因:目标数据库中已存在与源实例待迁移的表同名的表。

  • 修复:重命名或删除目标实例中的同名表。为保证数据安全,迁移工具不允许覆盖已有数据。

步骤三:结构迁移

将源实例的表和视图结构迁移至目标PolarDB-X 2.0企业版实例,并为分布式环境配置核心的拆分规则。

  1. 结构迁移页面,系统会列出所有待迁移的表。可全选所有对象,或勾选特定的表进行迁移。

  2. 配置拆分规则:对于需要分片的表,单击目标表右侧的调整表结构,配置其拆分规则。

    • 拆分规则定义PolarDB-X是分布式数据库,数据被分散存储在多个节点上。拆分规则是定义数据分散(拆分)存储的策略。通常,选择一个列(如user_idorder_id)作为拆分键,PolarDB-X会根据这个键的值(例如通过HASH算法)来决定某一行数据具体存放在哪个物理分片上。

    • 拆分键选择:选择查询中最常作为筛选条件的列作为拆分键,可以提升查询性能。例如,用户表常按user_id查询,订单表常按order_idbuyer_id查询。

    说明
  3. 确认无误后,单击开始结构迁移 。系统将在目标实例中创建相应的表结构。

image

步骤四:数据迁移与监控

执行全量数据的复制和增量数据的同步,并实时监控迁移进度和延迟。

  1. 结构迁移成功后,单击开始数据迁移

  2. 开始迁移后,返回评估迁移列表,任务状态将变为迁移准备中,并在资源准备好后进入数据迁移中阶段。image

  3. 单击任务的操作 > 详情按钮进入任务详情页面。在数据迁移详情页面,可查看详细进度。迁移过程分为三个自动衔接的子阶段:

    • 全量迁移:将源实例中待迁移对象的存量数据完整地复制到目标实例。

    • 增量迁移:全量迁移完成后自动开始。此阶段会持续将源实例新产生的数据变更(增、删、改)同步到目标实例,确保数据动态一致。

      说明

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

    • 数据校验:当增量迁移延迟低于30秒时,系统会自动启动数据校验任务,逐行对比源实例和目标实例的数据,确保数据完全一致。

    image

切换时机判断:当数据校验进度达到100%且无不一致数量,同时增量迁移的延迟稳定在20秒以内时,表明已具备业务切换的条件。建议在切换前,观察延迟数据连续5分钟稳定在5秒以内。

步骤五:业务切换

在确保数据同步后,将应用流量从源数据库切换到目标PolarDB-X 2.0企业版实例。切换是迁移流程中的关键步骤,操作前需阅读本节内容。

选择切换方式

评估迁移工具提供两种切换方式,根据业务场景选择:

切换方式

优点

缺点

适用场景

带地址切换

应用程序无需修改任何连接配置,对应用透明。

  • 依赖DNS缓存刷新,生效有短暂延迟(通常为30秒至5分钟)

  • 对网络环境有一定要求。

无法或不便修改应用代码/配置的场景。

不带地址切换

切换过程更可控,不依赖DNS。

需要手动修改所有应用服务的数据库连接字符串。

能够自主控制应用配置发布的场景。

写操作限制

为保证数据一致性,切换过程中系统会自动或需要您手动禁止对源实例的写操作。

  • 源实例为PolarDB-X 1.0(版本低于5.3.8-15489913):在单击开始正向切换前,您需手动停止应用对源实例的所有写操作,并维持该状态直至切换完成。

  • 源实例为PolarDB-X 1.0(版本等于或高于5.3.8-15489913):单击开始正向切换后,系统会自动禁写源实例24小时。若您选择不带地址切换,请务必在24小时内完成应用连接地址的修改。若超时,您需自行通过回收权限等方式确保源实例在切换结束前保持禁写。

  • 源实例为RDS MySQL/PolarDB MySQL/PolarDB-X 2.0时:单击开始正向切换后,系统会自动禁写源实例,直至您完成切换或执行回滚操作。

带地址切换

此方式通过交换源实例和目标实例的连接地址,实现应用的自动切换。

额外限制

  • 端口要求:源实例和目标实例的端口号必须一致。

  • 源实例限制:若源实例为PolarDB-X 1.0,其下的所有数据库必须在同一个迁移任务中进行迁移。

  • 切换地址范围

    • 该功能默认仅支持交换私网主地址和公网主地址。只读地址不会被修改,若您的业务使用了只读实例,请另行处理。

    • 若源实例为PolarDB MySQL,则仅支持交换集群地址。

  • 手动配置项:切换仅修改连接地址,不会修改实例名。依赖实例名进行配置的服务(如DMS、DTS、DataWorks等)需要您手动修改配置。

  • DNS缓存生效时间:切换地址后,应用连接到新数据库需等待客户端DNS缓存失效,此过程通常需要30秒至5分钟。您可登录应用服务器手动刷新DNS缓存来加速生效。

操作步骤

  1. 前往评估迁移列表,单击任务的操作 > 详情按钮进入任务详情页面。

  2. 切换详情页面,单击开始正向切换

  3. 在弹出的对话框中,选择带地址切换(应用程序不用改连接配置),然后单击确定

  4. 系统自动执行:

    • 禁写源实例:系统会立即禁止向源实例写入数据,此禁写状态持续24小时。

    • 等待同步:等待增量数据完全同步至目标实例。

    • 交换地址:将目标PolarDB-X 2.0企业版的连接地址替换为源实例的原地址。此过程约耗时2分钟。

  5. 验证与确认:

    • 等待应用服务器的DNS缓存失效(通常为30秒至5分钟,也可手动刷新)。应用将自动连接到新的PolarDB-X 2.0企业版实例。

    • 通过show processlist命令或其他监控手段,确认源实例已无业务连接。

    • 确认无误后,单击确定源库无业务连接。系统将解除对源实例的禁写,并建立用于回滚的反向同步链路。

不带地址切换

此方式需手动修改应用的数据库连接配置。

操作建议

为防止因部分应用漏改连接配置而导致双写(即同时写入源和目标实例),造成数据不一致的严重问题,强烈建议您在修改应用连接地址前,先通过数据库账号权限管理等方式,回收应用对源实例的写权限。

操作步骤

  1. 前往评估迁移列表,单击任务的操作 > 详情按钮进入任务详情页面。

  2. 切换详情页面,单击开始正向切换

  3. 在弹出的对话框中,选择不带地址切换(应用程序需要改为新的PolarDB-X连接配置),然后单击确定

  4. 系统会立即禁止向源实例写入数据,此禁写状态持续24小时。

  5. 手动切换与确认:

    1. 当页面提示可以开始手动切换业务侧连接串时,请将所有应用的数据库连接地址修改为目标PolarDB-X 2.0企业版实例的地址,并重启或重新加载应用。

    2. 通过show processlist命令或其他监控手段,确认源实例已无业务连接。

    3. 确认无误后,单击确定源库无业务连接。系统将建立用于回滚的反向同步链路。

步骤六:(可选)业务回滚

当业务切换至PolarDB-X 2.0企业版后,若发现严重问题(如性能不达预期、功能异常),可执行回滚操作,将业务切回源数据库。

重要

回滚是单向操作,将导致当前迁移任务中止且不可再次发起切换。 此为高风险操作,需谨慎执行。如果回滚后希望重新迁移,必须删除当前任务并创建一个全新的迁移任务。

  1. 前往评估迁移列表,单击任务的操作 > 详情按钮进入任务详情页面。

  2. 切换详情页面,单击开启反向回滚确定

  3. 系统会立即禁止向目标PolarDB-X 2.0企业版实例写入数据,此禁写状态持续24小时。

  4. 根据您在正向切换时选择的方式,完成后续步骤:

    • 若正向切换时选择了带地址切换(应用程序不用改连接配置)

      • 数据一致后,系统会自动切换回PolarDB-X 2.0企业版的连接地址与源实例的连接地址。此过程约耗时2分钟。

      • 连接地址修改完成后,待应用侧DNS缓存失效,您无需在应用程序端修改任何配置即可自动连接到源实例。

        说明

        此过程耗时取决于业务侧DNS缓存失效时间,通常为30秒至5分钟。您可以在应用侧手动刷新DNS缓存,加速地址修改生效。

    • 若正向切换时选择了不带地址切换(应用程序需要改为新的PolarDB-X连接配置)

      • 数据一致后,控制台会提示可以开始手动切换业务侧连接地址到源库。此时请修改业务侧连接串,将应用连接至源实例。

  5. 确认回滚:持续观察目标实例,确认业务已完全切回源实例后,单击确定目标库无业务连接。系统将解除对目标实例的禁写。此时,正向和反向同步链路均会暂停,本次迁移切换中止。

    说明

    您可以使用SHOW PROCESSLIST命令查看连接的客户端IP,确定是否有来自业务侧的连接。

计费说明

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

常见问题

带地址切换后,应用无法连接新数据库应如何处理?

此问题通常由应用服务器的DNS缓存未刷新导致。可尝试以下方法:

  • 等待自动刷新:DNS缓存通常在30秒到5分钟内会自动失效。

  • 手动刷新:请根据您服务器实际操作系统及版本进行DNS刷新操作。以Alibaba Cloud Linux 2/3为例,可以使用如下方式进行主动刷新DNS缓存:

    1. 首先,请检查systemd-resolved是否正在运行。如果服务正在运行,您将会看到类似于Active: active (running)的状态信息。

      sudo systemctl status systemd-resolved
    2. 刷新systemd-resolvedDNS缓存。

      sudo systemd-resolve --flush-caches
  • 检查应用配置:特别是Java应用,JVM默认会永久缓存DNS解析结果。可能需要重启应用,或在启动参数中设置一个较短的DNS缓存时间。