在选择将数据库迁移到 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 或不授予 SUPERUSER 权限的来源,则需要执行额外的步骤才能成功迁移,包括在来源上短暂停止写入。如需了解详情,请参阅为 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语句。如果您使用自己的转储文件创建持续迁移作业,请勿使用 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 秒 5 万 49 秒
迁移到现有目标实例的限制
- 现有目标实例只能包含在创建目标实例时自动设置的默认系统数据库。不支持迁移到包含用户数据(例如系统架构中的表或数据库)的现有目标实例。
如果您因现有目标实例中的额外数据而遇到问题,请清除目标实例中的数据库,然后重试迁移作业。 请参阅从现有目标实例中清除额外数据。
- 每个目标实例只能配置一个迁移作业。
- 您只能迁移到独立的 Cloud SQL 实例。不支持迁移到外部服务器副本。
- 如需迁移到具有读取副本的 Cloud SQL 实例,您需要为源实例启用全局交易 ID (GTID) 日志记录。
- 您无法将 Cloud SQL for MySQL 只读副本用作迁移目标实例。
- 对于 Terraform 用户:Database Migration Service 会修改目标实例的备份和恢复设置。这可能会导致目标实例设置与您用于预配的 Terraform 配置不同。如果您遇到此问题,请按照诊断问题中的指南操作。
配额
- 在任何给定时间,最多可以存在 2000 个连接配置文件和 1000 个迁移作业。如需腾出空间,您可以删除迁移作业(包括已完成的作业)和连接配置文件。