排查错误
迁移作业过程在运行时可能会发生错误。
- 对于某些错误,Database Migration Service 会自动重试故障操作,以继续迁移过程并避免中断。 迁移作业状态会更改为正在运行,但有错误。此状态表示 Database Migration Service 会继续迁移不受错误影响的数据。
- 某些错误无法恢复。当 Database Migration Service 遇到不可恢复的错误时,迁移作业状态会更改为失败。在这种情况下,需要在问题解决后重启迁移作业。
如需排查错误,请前往受影响的迁移作业,查看错误,然后按照错误消息中所述的步骤操作。您还可以通过查看 Cloud SQL 目标实例的 Cloud Monitoring 日志来获取更多详细信息。使用迁移作业详情页面上的 Cloud Monitoring 链接。
在下表中,您可以找到一些问题示例及其解决方法:
| 针对此问题… | 可能的原因… | 请尝试以下操作… |
|---|---|---|
错误消息:The BAK file's database major version number
{backup_version_num} must not be higher than the current database
major version number {your Cloud SQL for SQL Server version number}。 |
您尝试从比 Cloud SQL for SQL Server 目标实例中使用的 SQL Server 版本更高的 SQL Server 版本导入备份文件。
如果您满足跨版本兼容性准则,Database Migration Service 仅支持从较低版本到较高版本的跨版本迁移。请参阅 支持的来源数据库和目标数据库。 |
重新创建 Cloud SQL for SQL Server 目标实例,以使用更高版本的 SQL Server,并使用新实例重试迁移过程。 |
出错提示:The following database already exists in destination: {database_name}。 |
您的 Cloud SQL 目标实例已包含一个与迁移作业中包含的某个数据库同名的数据库。 | 请移除命名冲突。请参阅 错误:目标位置已存在数据库 |
出错提示:
Permission denied for {cloudsql.databases.get} on the Database Migration Service service account. |
Database Migration Service 服务账号缺少权限。 | 向 Database Migration Service 服务账号添加缺少的权限。 请参阅 使用 IAM 进行访问权限控制。 |
出错提示:
Missing WAL file at Log Sequence Number (LSN) {log_number_here} |
您的事务日志文件可能使用了不正确的纪元时间戳,导致其包含的更新顺序不正确。 Database Migration Service 使用日志序列号和纪元时间戳来控制事务日志文件复制到 Cloud SQL 目标实例的顺序。 | 检查并调整最新事务日志文件的文件名中使用的公元纪元时间戳。请参阅 调整错误的事务日志名称。 |
| 如果您迁移所选数据库,但迁移作业无法将数据复制到一个或多个数据库,则数据库列表中会显示失败状态。 | 各种迁移作业错误。 | 在错误列中,点击查看错误并修正错误。修正错误后,点击重启。 |
错误:目标位置已存在数据库
您会遇到以下错误消息:The following database already exists in destination: {database_name}。
可能的原因
您的 Cloud SQL 目标实例已包含一个与迁移作业中包含的某个数据库同名的数据库。
可以尝试的操作
根据您的迁移场景,您可以通过不同的方式解决数据库重复问题。请尝试以下操作之一:
重命名源 Cloud Storage 存储桶,以使用其他名称迁移数据库。
Database Migration Service 在目标 Cloud SQL 实例中创建的数据库名称派生自 Cloud Storage 中存储备份文件的文件夹名称。如果您有两个同名的不同数据库,并且都需要将它们迁移到 Cloud SQL 目标实例,则可以重命名文件夹并重新创建迁移作业,以避免命名冲突。
执行以下步骤:
- 为受命名冲突影响的源数据库创建新文件夹。请参阅将备份文件存储在 Cloud Storage 存储桶中 。
- 重新创建迁移作业。请参阅
创建迁移作业。
您可以向现有迁移作业添加新数据库,但无法从迁移作业中移除数据库。因此,您需要重新创建整个迁移作业。
从 Cloud SQL for SQL Server 实例中删除重复的数据库。
如果 Cloud SQL 目标实例中的数据库是重复的,您可以将其从实例中删除,然后继续执行迁移作业。 请参阅 Cloud SQL for SQL Server 文档中的删除数据库。
调整事务日志文件名,以应对 WAL 文件顺序错乱的情况
可能的原因
您的事务日志文件可能使用了不正确的纪元时间戳,导致其包含的更新顺序不正确。 Database Migration Service 使用日志序列号和纪元时间戳来控制事务日志文件复制到 Cloud SQL 目标实例的顺序。
可以尝试的操作
文件上传可能会延迟或顺序错乱。请等待几分钟,让问题自行解决,或者检查 Cloud Storage 存储桶中是否有缺失的文件。
如果问题仍未解决,请验证并调整 事务日志文件名中的公元纪元时间戳。
执行以下步骤:
- 在 Cloud SQL for SQL Server 目标实例上查看事务日志导入操作列表。在 Google Cloud 控制台中,前往 Cloud SQL 实例页面。
- 点击查看所有操作 > 查看 SQL Server 错误日志。
- 查看事务日志文件的所有导入操作,并验证其文件名是否包含正确的纪元时间戳。
- 如果您发现最近的事务日志文件使用的名称包含无序的纪元时间戳,请前往 Cloud Storage 存储桶并重命名该文件。Database Migration Service 会自动检测更改,并尝试导入相关的事务日志文件。
- 仅限 Amazon RDS:在导出到 S3 的过程中,可能会遗漏一些事务日志文件。请尝试针对 WAL 文件缺失的时间段重新运行事务日志导出函数。