已知限制

在选择将数据库迁移到 Cloud SQL 之前,请考虑此迁移方案的已知限制。

使用 MySQL 数据库作为来源时的已知限制包括:

  • 如需迁移加密的数据库,您需要向 Database Migration Service 提供加密密钥。Database Migration Service 支持从加密的 Amazon Aurora 或 Amazon RDS 数据库迁移数据,因为这些数据库会在其服务中以透明方式处理解密。如需了解详情,请参阅 加密 Amazon Aurora 资源、 加密 Amazon RDS 资源和 配置客户管理的加密密钥 (CMEK)。

  • 不支持使用 Percona XtraBackup 物理备份文件迁移到 MySQL 5.6、MySQL 8.4 或 MySQL 9.7。

  • 对于从 MySQL 8.0 到 MySQL 8.4 以及从 MySQL 8.4 到 MySQL 9.7 的迁移:

    • 目标数据库的 local_infile 标志必须设置为 ON。
    • 源实例上的专用迁移账号不能具有 BACKUP_ADMIN 权限。

    相关部分(例如 “配置源数据库”页面)中也介绍了这些注意事项。

  • 当您跨 MySQL 主要版本进行迁移(例如从 MySQL 8.0 迁移到 MySQL 8.4)时,需要解决可能存在的不兼容问题,以确保迁移顺利进行,且不会出现数据一致性问题。

    在为跨版本迁移做准备时,请查看 Cloud SQL for MySQL 支持的功能 以及目标主要版本的 版本说明,以确定需要解决哪些 不兼容问题。

  • 在完整数据转储阶段,您无法对源数据库执行任何数据定义语言 (DDL) 操作(例如 ALTER TABLE、DROP TABLE、TRUNCATE TABLE)。如果在完整转储阶段运行这些操作,可能会 导致元数据死锁,从而导致迁移过程失败(并显示 Table definition has changed 错误)或停止响应(并报告 超时错误,例如 ERROR: While 'Loading data': Dump timeout 或 MySQL Error 2013 (HY000): Lost connection to MySQL server during query)。 您可以在 CDC 阶段对源数据库执行 DDL 更改。 如需了解详情,请参阅问题排查部分中的以下条目:

  • 如果来源是 Amazon RDS MySQL、Amazon Aurora MySQL 或不授予超级用户权限的来源,则需要执行额外的步骤才能成功迁移,包括在来源上短暂写入停机。 如需了解详情,请参阅 Amazon RDS 的配置源数据库和 Amazon Aurora 特定部分。

  • Database Migration Service 无法从 Amazon Aurora 读取副本实例 或 Oracle Cloud Infrastructure (OCI) MySQL 读取副本实例迁移数据,因为无法从该实例检索二进制日志文件。如需详细了解 Amazon Aurora,请参阅 Amazon Aurora 特定部分。

  • 从自行管理的 MySQL 读取副本进行迁移时,不支持 GTID。 您必须使用基于二进制日志文件和位置的复制。如需了解详情,请参阅 迁移类型和阶段。

  • MySQL 系统数据库不会作为服务器迁移的一部分进行迁移,因此不包含有关用户账号、登录信息和角色的信息。

  • 虽然您可以选择要迁移的特定数据库,但在使用 Database Migration Service 进行迁移时,无法过滤或选择数据库中的各个数据库对象(例如特定表、视图或存储过程)。 系统会迁移每个所选数据库中的所有 InnoDB 表和对象,但以下系统架构除外:mysql、performance_schema、information_schema 和 sys。 在开始迁移之前,请确保源数据库不包含引用这些架构中的表的对象。否则,您的 迁移可能会失败,并显示 ERROR 1109 (42S02): Unknown table in <schema name here> 消息。 请参阅配置源数据库 和 诊断问题。

  • 在迁移期间,目标 Cloud SQL 数据库处于只读模式,以防止修改数据库,这可能会导致迁移过程中断或数据完整性受损。提升目标后,它将变为可写。

  • Database Migration Service 与 MariaDB 不兼容。

  • 您必须将二进制日志格式设置为ROW。如果将二进制日志配置为任何其他格式(例如 STATEMENT 或 MIXED),可能会导致复制失败。例如,使用 LOAD DATA IN FILE 语句。

    详细了解 STATEMENT 或 MIXED 格式的此限制。

  • 如果您使用自己的转储文件创建持续迁移作业,请不要使用 MySQL 5.7.36 版中的 mysqldump 实用程序。如需了解详情,请参阅 MySQL 文档中的 bug #105761。

  • InnoDB 是 Cloud SQL 唯一支持的存储引擎。使用 MyISAM 进行迁移可能会导致数据不一致且需要验证数据。如需有关将表从 MyISAM 转换为 InnoDB 方面的帮助,请参阅 MySQL 文档。

  • Private Service Connect 接口连接方法 仅支持迁移到现有目标实例。 如果您想使用专用 IP 连接并迁移到新的目标实例,请使用 VPC 对等互连。

数据转储并行处理注意事项

借助数据转储并行处理,您可以使用高性能转储机制从 MySQL 数据库进行迁移,从而显著提高迁移速度。 使用数据转储并行处理时,请考虑以下事项:

  • 只有在迁移到 MySQL 5.7、8.0、8.4 或 9.7 版时,才能使用数据转储并行处理。

  • 在数据转储开始时,Database Migration Service 会短暂锁定源数据库,使其暂时无法写入。 锁定持续时间取决于源数据库中的表数量:

    表数 大致锁定时间
    100 1 秒
    10,000 9 秒
    50,000 49 秒

迁移到现有目标实例的限制

  • 现有目标实例只能包含在您创建目标实例时自动设置的默认系统数据库 。 不支持迁移到包含用户数据(例如系统架构中的表或数据库)的现有目标实例。

    如果您因现有目标 实例中的额外数据而遇到问题,请清除目标实例中的数据库,然后重试迁移作业。 请参阅 清除现有目标实例中的额外数据。

  • 每个目标实例只能配置一个迁移作业。
  • 您只能迁移到独立的 Cloud SQL 实例。不支持迁移到 外部服务器副本。
  • 如需迁移到具有 读取副本 的 Cloud SQL 实例,您的源实例必须启用全局交易 ID (GTID) 日志记录 。
  • 您无法将 Cloud SQL for MySQL 读取副本用作迁移目标 实例。
  • 对于 Terraform 用户:Database Migration Service 会修改目标实例的备份 和恢复设置。这可能会导致 目标实例设置与您用于预配的 Terraform 配置不同。如果您遇到此问题, 请按照诊断问题中的指南操作。

配额

  • 在任何给定时间,最多可以存在 2000 个连接配置文件和 1000 个迁移作业。如需为更多迁移作业腾出空间,可以删除迁移作业(包括已完成的作业)和连接配置文件。