概览
在选择将数据库迁移到 Cloud SQL 之前,请务必考虑此迁移场景的已知限制。
使用 MySQL 数据库作为来源的已知限制包括:
不支持使用 Percona XtraBackup 物理备份文件迁移到 MySQL 5.6 或 MySQL 8.4。
对于从 MySQL 8.0 到 MySQL 8.4 的迁移:从 8.0 到 8.4 的迁移的其他注意事项包括:
- 目标数据库必须将
local_infile标志设置为ON。 - 源实例上的专用迁移账号不能具有
BACKUP_ADMIN权限。
相关部分(例如 配置源数据库页面)中也介绍了这些注意事项。
- 目标数据库必须将
当您跨 MySQL 主要版本进行迁移(例如从 MySQL 8.0 迁移到 MySQL 8.4)时,需要解决可能存在的不兼容问题,以确保迁移顺利进行,且不会出现数据一致性问题。
在准备进行跨版本迁移时,请查看 Cloud SQL for MySQL 支持的功能 以及 目标主要版本的版本说明,以确定需要解决哪些 不兼容问题。
在完整数据转储阶段,请勿执行任何数据定义语言 (DDL) 更改,例如修改表定义。 在迁移作业进入 CDC 阶段之前执行的 DDL 更改可能会导致迁移作业失败。如需了解详情,请参阅 诊断问题:
Table definition has changed错误。如果来源是 Amazon RDS MySQL、Amazon Aurora MySQL 或不授予 SUPERUSER 权限的来源,则需要执行额外的步骤才能成功迁移,包括在来源上短暂写入停机时间。如需了解详情,请参阅 Amazon RDS 特定部分 和 Amazon Aurora 特定部分。
Database Migration Service 无法从 Amazon Aurora 只读副本实例 的 MySQL 数据库集群迁移数据,因为无法从该实例检索二进制日志文件。如需了解详情,请参阅 Amazon Aurora 特定部分。
MySQL 系统数据库不会作为服务器迁移的一部分进行迁移,这意味着不包含有关用户角色的信息。
您可以使用 Database Migration Service 在迁移时选择特定数据库。 系统会迁移所选数据库中的所有表和架构,但以下系统架构除外:
mysql、performance_schema、information_schema和sys。 在开始迁移之前,请确保源数据库不包含引用这些架构中的表的对象。否则,您的 迁移可能会失败,并显示ERROR 1109 (42S02): Unknown table in <schema name here>消息。 请参阅配置源数据库 和 诊断问题。如果加密数据库需要客户管理的加密密钥来解密数据库中的信息,并且 Database Migration Service 无权访问这些密钥,则无法迁移这些数据库。
Database Migration Service 支持从加密的 Amazon Aurora 或 Amazon RDS 数据库迁移数据,因为这些数据库在其服务中以透明方式处理解密。如需了解详情,请参阅加密 Amazon Aurora 资源和加密 Amazon RDS 资源。
在迁移期间,目标 Cloud SQL 数据库处于只读模式,以防止修改数据库,这可能会导致迁移过程或数据完整性中断。提升目标后,它将变为可写。
目前,Database Migration Service 与 MariaDB 不兼容。
您必须将二进制日志格式设置为
ROW。将二进制日志配置为任何其他格式(例如STATEMENT或MIXED)可能会导致复制失败。例如,使用LOAD DATA IN FILE语句。如果您创建持续迁移作业使用自己的转储文件,请勿使用 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 版本时,数据转储并行处理才可用。
在数据转储开始时,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 个迁移作业。如需为更多任务腾出空间,可以删除一些迁移作业(包括已完成的作业)和连接配置文件。