开发者社区> 问答> 正文

预检查的内容及失败时的修复方式有什么


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

预检查项说明



源库连接性检查


  • 检查内容
    这个检查项主要检查数据传输服务器同源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

  • 1对多

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

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

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


MySQL老密码格式检查


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

展开
收起
云栖大讲堂 2017-10-31 11:42:14 2295 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
面向失败设计 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载