本页面介绍了如何为持续同构 MySQL 迁移配置以下源数据库实例:
- Cloud SQL for MySQL
- 自行托管的 MySQL
- Amazon RDS for MySQL
- Amazon Aurora for MySQL
- Microsoft Azure Database for MySQL
配置 Cloud SQL for MySQL 来源
如需为迁移过程配置 Cloud SQL for MySQL 源实例,请执行以下操作:
- 检查源数据库是否包含用户使用
DEFINER子句定义的元数据。请参阅使用DEFINER子句验证元数据。Database Migration Service for MySQL 同构迁移不会迁移用户账号和登录信息。如果来源包含由用户账号使用
DEFINER子句定义的元数据,则可能会阻止迁移。 - 如果源数据库包含引用
mysql、performance_schema、information_schema、ndbinfo或sys系统架构中的表的对象,请确保副本数据库也包含这些系统架构表。如果副本数据库没有这些表,您的迁移作业可能会失败,并显示
Unknown table in system schema。 -
在源数据库上启用并配置二进制日志。
在 Cloud SQL for MySQL 中,当您使用时间点恢复 (PITR) 时,系统会自动启用二进制日志记录。您可以使用 Cloud SQL 中提供的系统标志来配置日志格式和保留期限。 执行以下操作:
- 在实例上启用 PITR。此功能会自动启用二进制日志记录。在 Cloud SQL 中,无法在不启用 PITR 的情况下启用二进制日志记录。请参阅 Cloud SQL 文档中的时间点恢复 (PITR)。
- 使用 Cloud SQL 标志调整日志记录配置。
如需了解详情,请参阅 Cloud SQL 文档中的配置数据库标志。
- Database Migration Service 要求将
binlog_format设置为ROW。您无需调整此设置,Cloud SQL for MySQL 会自动将binlog_format标志设置为ROW。 - 将日志保留期限设置为足够长的时间段,以支持数据库迁移。通常,一周就足够了。
使用以下标志之一:
- MySQL 5.6 - 5.7:
expire_logs_days - MySQL 8.0 及更高版本:
expire_logs_days、binlog_expire_logs_seconds
- MySQL 5.6 - 5.7:
- Database Migration Service 要求将
-
在实例中创建专用的迁移用户账号。 请参阅 Cloud SQL 文档中的创建用户。请确保:
- 您允许专用用户账号从任何主机 (
host=%) 连接。 - 账号密码长度不超过 32 个字符。 如需详细了解 MySQL 用户密码长度限制,请参阅 MySQL Bug #43439。
- 您允许专用用户账号从任何主机 (
-
为专用迁移用户账号分配必要的权限。 对于持续迁移,所需权限的完整列表取决于您是提供自己的转储文件还是使用 Database Migration Service 托管式转储功能:
代管式转储
如果您希望 Database Migration Service 自动对源数据库进行完整转储,请为用户账号分配以下权限:
REPLICATION SLAVEEXECUTEREPLICATION CLIENTSELECTSHOW VIEWTRIGGERRELOAD- 对于源 MySQL 8.0 或更高版本:确保迁移账号没有
BACKUP_ADMIN权限。
手动转储
如果您提供使用
mysqldump创建的自己的转储文件,则需要提供 CDC 阶段所需的权限:
配置自托管 MySQL 数据源
如需为迁移过程配置自托管式 MySQL 源实例,请执行以下操作:
- 确保所有表(系统数据库中的表除外)都使用 InnoDB 存储引擎。如果您使用其他存储引擎,则可能需要转换表。 如需了解详情,请参阅将表从 MyISAM 转换到 InnoDB。
- 检查源数据库是否包含用户使用
DEFINER子句定义的元数据。请参阅使用DEFINER子句验证元数据。Database Migration Service for MySQL 同构迁移不会迁移用户账号和登录信息。如果来源包含由用户账号使用
DEFINER子句定义的元数据,则可能会阻止迁移。 - 如果源数据库包含引用
mysql、performance_schema、information_schema、ndbinfo或sys系统架构中的表的对象,请确保副本数据库也包含这些系统架构表。如果副本数据库没有这些表,您的迁移作业可能会失败,并显示
Unknown table in system schema。 - 将
server-id设置配置为1或更大的值。如需了解详情,请参阅复制和二进制日志记录选项和变量。 -
确保
GTID_MODE设置为ON或OFF,不支持任何其他值。在以下情况下,Database Migration Service 要求将
GTID_MODE设置为ON:如需详细了解
GTID_MODE,请参阅全局交易 ID 系统变量。 -
在源数据库上启用并配置二进制日志。执行以下操作:
- 在源数据库上启用二进制日志。
- 将
binlog_format设置为'ROW'。 请参阅基于行的二进制日志记录。 - 将日志保留期限设置为足够长的时间段,以支持数据库迁移。通常,一周时间就足够了。
使用以下标志之一:
- MySQL 5.5 - 5.7:
expire_logs_days - MySQL 8.0:
expire_logs_days、binlog_expire_logs_seconds
- MySQL 5.5 - 5.7:
-
在实例中创建专用的迁移用户账号。 请参阅账号管理声明。请确保:
- 您允许专用用户账号从任何主机 (
host=%) 连接。 - 账号密码长度不超过 32 个字符。 如需详细了解 MySQL 用户密码长度限制,请参阅 MySQL Bug #43439。
- 您允许专用用户账号从任何主机 (
-
为专用迁移用户账号分配必要的权限。 对于持续迁移,所需权限的完整列表取决于您是提供自己的转储文件还是使用 Database Migration Service 托管式转储功能:
代管式转储
如果您希望 Database Migration Service 自动对源数据库进行完整转储,请为用户账号分配以下权限:
REPLICATION SLAVEEXECUTEREPLICATION CLIENTSELECTSHOW VIEWTRIGGER- 对于具有
GTID_MODE = ON设置的来源:RELOAD在托管式转储流程中,仅当您迁移到已启用读取副本的现有目标实例时,Database Migration Service 才需要
GTID_MODE = ON设置。 - 对于源 MySQL 8.0 或更高版本:确保迁移账号没有
BACKUP_ADMIN权限。
手动转储
如果您提供自己的使用
mysqldump创建的转储文件,则需要提供 CDC 阶段所需的权限:
配置 Amazon RDS for MySQL 源
如需为迁移过程配置 Amazon RDS for MySQL 源实例,请执行以下操作:
- Amazon RDS for MySQL 默认使用 InnoDB 存储引擎,但也允许使用其他存储引擎。确保所有表(系统数据库中的表除外)都使用 InnoDB 存储引擎。 如果您使用其他存储引擎,则可能需要转换表。 如需了解详情,请参阅将表从 MyISAM 转换到 InnoDB。
- 检查源数据库是否包含用户使用
DEFINER子句定义的元数据。请参阅使用DEFINER子句验证元数据。Database Migration Service for MySQL 同构迁移不会迁移用户账号和登录信息。如果来源包含由用户账号使用
DEFINER子句定义的元数据,则可能会阻止迁移。 - 如果源数据库包含引用
mysql、performance_schema、information_schema、ndbinfo或sys系统架构中的表的对象,请确保副本数据库也包含这些系统架构表。如果副本数据库没有这些表,您的迁移作业可能会失败,并显示
Unknown table in system schema。 -
确保
GTID_MODE设置为ON或OFF,不支持任何其他值。 Amazon RDS for MySQL 默认使用GTID_MODE = OFF。在以下情况下,Database Migration Service 要求将
GTID_MODE设置为ON:如需详细了解
GTID_MODE,请参阅全局交易 ID 系统变量。 -
在源数据库上验证并配置二进制日志。执行以下操作:
- 确保您的实例使用自动备份。Amazon RDS 仅在启用自动备份时生成二进制日志。 如需了解详情,请参阅 Amazon RDS 文档中的启用自动备份。
-
将日志保留期限设置为足够长的时间段,以支持数据库迁移。通常,一周时间就足够了。 请参阅 Amazon RDS 文档中的设置和显示二进制日志配置。
- 重启服务器,使您所做的更改生效。
-
在实例中创建专用的迁移用户账号。 请参阅账号管理声明。请确保:
- 您允许专用用户账号从任何主机 (
host=%) 连接。 - 账号密码长度不超过 32 个字符。 如需详细了解 MySQL 用户密码长度限制,请参阅 MySQL Bug #43439。
- 您允许专用用户账号从任何主机 (
-
为专用迁移用户账号分配必要的权限。 对于持续迁移,所需权限的完整列表取决于您是提供自己的转储文件还是使用 Database Migration Service 托管式转储功能:
代管式转储
如果您希望 Database Migration Service 自动对源数据库进行完整转储,请为用户账号分配以下权限:
REPLICATION SLAVEEXECUTEREPLICATION CLIENTSELECTSHOW VIEWTRIGGERLOCK TABLES- 对于具有
GTID_MODE = ON设置的来源:RELOAD在托管式转储流程中,仅当您迁移到已启用读取副本的现有目标实例时,Database Migration Service 才需要
GTID_MODE = ON设置。 - 对于源 MySQL 8.0 或更高版本:确保迁移账号没有
BACKUP_ADMIN权限。
手动转储
如果您提供自己的使用
mysqldump创建的转储文件,则需要提供 CDC 阶段所需的权限:
配置 Amazon Aurora for MySQL 来源
如需为迁移过程配置 Amazon Aurora for MySQL 源实例,请执行以下操作:
- 检查源数据库是否包含用户使用
DEFINER子句定义的元数据。请参阅使用DEFINER子句验证元数据。Database Migration Service for MySQL 同构迁移不会迁移用户账号和登录信息。如果来源包含由用户账号使用
DEFINER子句定义的元数据,则可能会阻止迁移。 - 如果源数据库包含引用
mysql、performance_schema、information_schema、ndbinfo或sys系统架构中的表的对象,请确保副本数据库也包含这些系统架构表。如果副本数据库没有这些表,您的迁移作业可能会失败,并显示
Unknown table in system schema。 -
确保
GTID_MODE设置为ON或OFF,不支持任何其他值。 Amazon Aurora for MySQL 默认使用GTID_MODE = OFF。在以下情况下,Database Migration Service 要求将
GTID_MODE设置为ON:如需详细了解
GTID_MODE,请参阅全局交易 ID 系统变量。 -
在源数据库上启用并配置二进制日志。执行以下操作:
- 为 MySQL 数据库启用二进制日志记录。
-
将日志保留期限设置为足够长的时间段,以支持数据库迁移。通常,一周就足够了。 请参阅设置和显示二进制日志配置。
- 重启服务器,使您所做的更改生效。
-
在实例中创建专用的迁移用户账号。 请参阅账号管理声明。请确保:
- 您允许专用用户账号从任何主机 (
host=%) 连接。 - 账号密码长度不超过 32 个字符。 如需详细了解 MySQL 用户密码长度限制,请参阅 MySQL Bug #43439。
- 您允许专用用户账号从任何主机 (
-
为专用迁移用户账号分配必要的权限。 对于持续迁移,所需权限的完整列表取决于您是提供自己的转储文件还是使用 Database Migration Service 托管式转储功能:
代管式转储
如果您希望 Database Migration Service 自动对源数据库进行完整转储,请为用户账号分配以下权限:
REPLICATION SLAVEEXECUTEREPLICATION CLIENTSELECTSHOW VIEWTRIGGERLOCK TABLES- 对于具有
GTID_MODE = ON设置的来源:RELOAD在托管式转储流程中,仅当您迁移到已启用读取副本的现有目标实例时,Database Migration Service 才需要
GTID_MODE = ON设置。 - 对于源 MySQL 8.0 或更高版本:确保迁移账号没有
BACKUP_ADMIN权限。
手动转储
如果您提供自己的使用
mysqldump创建的转储文件,则需要提供 CDC 阶段所需的权限:
配置 Microsoft Azure Database for MySQL 来源
如需为迁移过程配置 Microsoft Azure Database for MySQL 源实例,请执行以下操作:
- 检查源数据库是否包含用户使用
DEFINER子句定义的元数据。请参阅使用DEFINER子句验证元数据。Database Migration Service for MySQL 同构迁移不会迁移用户账号和登录信息。如果来源包含由用户账号使用
DEFINER子句定义的元数据,则可能会阻止迁移。 - 如果源数据库包含引用
mysql、performance_schema、information_schema、ndbinfo或sys系统架构中的表的对象,请确保副本数据库也包含这些系统架构表。如果副本数据库没有这些表,您的迁移作业可能会失败,并显示
Unknown table in system schema。 -
确保
GTID_MODE设置为ON或OFF,不支持任何其他值。 Microsoft Azure Database for MySQL 默认使用GTID_MODE = OFF。在以下情况下,Database Migration Service 要求将
GTID_MODE设置为ON:如需详细了解
GTID_MODE,请参阅全局交易 ID 系统变量。 -
在源数据库上验证并配置二进制日志记录设置。 执行以下操作:
- 默认情况下,Microsoft Azure Database for MySQL 会启用二进制日志记录。您无需启用该功能,但请确认该功能已启用。 如需了解详情,请参阅 Microsoft 文档。
-
将
binlog_expire_logs_seconds设置为足够长的时间段,以支持数据库迁移。通常,一周就足够了。如需了解详情,请参阅在 Azure Database for MySQL 中配置服务器参数以及 Microsoft 文档中的
binlog_expire_logs_seconds参数。 - 重启服务器,使您所做的更改生效。
检查
require_secure_transport设置的值。默认情况下,Microsoft Azure 数据库要求对所有传入连接使用 SSL/TLS 加密。根据
require_secure_transport值,在创建来源连接配置文件时使用以下加密设置之一:- 如果
require_secure_transport设置为on,请选择基本、TLS 或 mTLS。 - 如果
require_secure_transport设置为off,请选择无。
- 如果
-
在实例中创建专用的迁移用户账号。 请参阅账号管理声明。请确保:
- 您允许专用用户账号从任何主机 (
host=%) 连接。 - 账号密码长度不超过 32 个字符。 如需详细了解 MySQL 用户密码长度限制,请参阅 MySQL Bug #43439。
- 您允许专用用户账号从任何主机 (
-
为专用迁移用户账号分配必要的权限。 对于持续迁移,所需权限的完整列表取决于您是提供自己的转储文件还是使用 Database Migration Service 托管式转储功能:
代管式转储
如果您希望 Database Migration Service 自动对源数据库进行完整转储,请为用户账号分配以下权限:
REPLICATION SLAVEEXECUTEREPLICATION CLIENTSELECTSHOW VIEWTRIGGER- 对于具有
GTID_MODE = ON设置的来源:RELOAD在托管式转储流程中,仅当您迁移到已启用读取副本的现有目标实例时,Database Migration Service 才需要
GTID_MODE = ON设置。 - 对于源 MySQL 8.0 或更高版本:确保迁移账号没有
BACKUP_ADMIN权限。
手动转储
如果您提供自己的使用
mysqldump创建的转储文件,则需要提供 CDC 阶段所需的权限:
后续步骤
如需获取同构 Cloud SQL for MySQL 迁移的完整分步迁移演示,请参阅 Cloud SQL for MySQL 迁移入门。