全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
数据传输服务DTS

预检查失败修复

更新时间:2017-06-07 13:26:11

实时同步链路在启动之前,会先进行简单的预检查,本小节简单介绍预检查的内容及失败时的修复方式。

预检查项说明

源库连接性检查

  • 检查内容

    这个检查项主要检查数据传输服务器同源RDS实例的连接性。数据传输服务使用JDBC协议尝试连接源RDS实例,如果连接失败,那么这个检查项即检查失败。

  • 失败原因

    1. 数据传输服务暂不支持源实例所在地区的RDS实例的实时同步。
    2. 源实例账号密码有误。
  • 修复方法

    提交工单,联系阿里云技术售后,协助解决。

目标库连接性检查

  • 检查内容

    这个检查项主要检查数据传输服务器同目标RDS实例的连通性。数据传输服务使用JDBC协议尝试连接目标RDS实例,如果连接失败,那么这个检查项即检查失败。

  • 失败原因

    1. 数据传输服务暂不支持目标实例所在地区的RDS实例的实时同步。
    2. 目标实例账号密码有误。
  • 修复方法

    提交工单,联系阿里云技术售后,协助解决。

源库版本检查

  • 检查内容

    这个检查项主要检查:

    1. 源RDS实例的版本号,实时同步功能是否支持。
    2. 目标RDS实例的版本号是否高等于源RDS实例的版本。
  • 失败原因

    1. 源RDS实例的版本低于数据传输服务支持的版本,实时同步暂时只支持MySQL5.1、5.5、5.6 三个版本。
    2. 目标RDS实例版本低于源RDS实例版本。
  • 修复方法

    1. 如果源RDS版本过低,那么请首先到RDS控制台,将源RDS升级到5.6版本后,重新创建同步链路。
    2. 如果是目标RDS实例版本低于源RDS实例,那么请先到RDS控制台,将目标RDS实例升级到5.6版本后,重新创建同步链路 。

数据库存在性检查

  • 检查内容

    这个检查项主要检查同步DB,在目标库是否已经存在。如果同步DB在目标库不存在,那么数据传输服务会自动创建,但是在如下情况下,自动创建DB会出现失败,此时这个检查项还是会提示检查失败。

    1. 数据库名中含有小写字母、数字、下划线、中划线的其他特殊字符。
    2. 数据库的字符集不为utf8、gbk、latin1、utf8mb4中的一种。
    3. 目标库迁移账号无同步库的读写权限。

      当源为RDS实例时,这个检查项不会失败。

源库权限检查

  • 检查内容

    这个检查项主要检查源库同步账号的权限是否满足要求。当权限不满足要求时,这个检查项会失败。当源为RDS实例时,这个检查项不会出现失败。

目标库权限检查

  • 检查内容

    这个检查项主要检查目标库同步账号的权限是否满足要求,当权限不满足时,这个检查项会失败

  • 失败原因

    1. 数据传输服务自动在目标RDS实例创建账号失败。
    2. 数据传输服务对目标RDS实例的同步账号进行读写权限授权失败。
  • 修复方法

    提交工单,联系技术同学协助处理。

同名对象存在性检查

  • 检查内容

    这个检查项只有选择了同步初始化的同步链路时会进行检查,它主要检查目标RDS实例中是否已经存在跟同步对象同名的对象。

  • 失败原因

    当目标RDS实例中已经存在跟同步对象相同名称的对象时,这个检查项会失败。

  • 修复方法

    1. 先将目标库中跟同步对象相同名称的对象删除掉。
    2. 重新创建同步链路,同步初始化选择: 结构初始化+全量数据初始化。

源库server_id检查

  • 检查内容

    这个检查主要检查源数据库的server_id 是否设置为大等于2的整数。如果源为RDS实例,那么这个检查项不会失败。

源库binlog是否开启检查

  • 检查内容

    这个检查项主要检查源数据库是否开启binlog日志。如果检查项失败,那么说明源数据库没有开启binlog。当源为RDS实例时,那么这个检查项不会失败。

源库binlog模式检查

  • 检查内容

    这个检查项主要检查源数据库的binlog模式是否为ROW。如果检查失败,那么说明源数据库的binlog格式不为ROW。 当源为RDS实例时,这个检查项不会失败。

约束完整性检查

  • 检查内容

    这个检查项主要检查同步的对象列表中,有外键依赖关系的父子表是否都被同步,防止破坏外键约束完整性。

  • 失败原因

    当同步的对象中,有部分对象为外键依赖的子表,但是它对应的父表没有同步,破坏了外键约束完整性。

  • 修复方法

    对于这种情况,有如下三种修复方式:

    1. 不进行约束完整性检查失败的子表的同步,重新创建同步作业,不进行这些约束完整性检查失败的子表的同步。
    2. 进行约束完整性检查失败的子表对应的父表的同步,重新创建同步作业,将这些约束完整性检查失败的子表对应的父表添加到同步列表中。
    3. 删除约束完整性检查失败的子表的外键依赖,修改源数据库将这些子表的外键依赖删除掉,重新创建同步作业。

存储引擎检查

  • 检查内容

    这个检查项主要检查同步的对象中,是否存在实时同步不支持的存储引擎。如federated, mrg_myisam,tokudb。

  • 失败原因

    当同步对象中,有表的存储引擎为federated, mrg_myisam或tokudb时,这个检查项会失败。

  • 修复方法

    先将不支持存储引擎的表的存储引擎修改为Innodb后,重新创建同步作业。

字符集检查

  • 检查内容

    这个检查项主要检查同步的对象中,是否存在实时同步不支持的字符集,例如ucs2。

  • 失败原因

    当同步对象的字符集为不支持的字符集时,这个检查项会失败。

  • 修复方法

    先将不支持字符集的表的字符集修改为utf8、gbk、latin1 中的一种后,重新创建同步作业。

复杂拓扑存在性检查

  • 检查内容

    这个检查项主要检查同步作业的源跟目标RDS实例上是否存在不支持的同步架构。目前实时同步只能支持:

    • 1对1

      进入DTS控制台

    • 1对多

      进入DTS控制台

两种架构,对于多对1,级联,双向等同步架构暂不支持。

  • 失败原因

    1. 源RDS实例上已经存在同步作业,且其为同步作业的目标实例。
    2. 目标RDS实例上已经存在同步作业。
    3. 源跟目标RDS存在正在运行的迁移任务,且这个迁移任务迁移的对象跟要创建的同步作业重叠。
  • 修复方法

    1. 如果源跟目标RDS实例同已存在同步作业相同,创建新同步作业是为了同步新的对象,那么直接修改已经存在的同步链路,修改同步对象,将要添加对象添加进去即可。
    2. 如果这个同步链路同已经存在的迁移任务冲突,那么必须等迁移任务完成后,才能重新创建同步作业。
    3. 如果新建同步作业会跟老的同步作业构成:级联架构或双向同步或多对1架构,那么暂不支持。

MySQL老密码格式检查

  • 检查内容

    这个检查项,主要检查源实例使用的密码是否为old password。 当源为RDS实例时,这个检查项不会失败。

本文导读目录