zoukankan      html  css  js  c++  java
  • 原创-阿里云DTS双向同步,反向同步失败案例

    近期有需求,从自建ECS数据库迁移至RDS,因担心有迁移失败的风险,选择了DTS双向同步做迁移。

    正向同步:源同步数据至目标。

    反向同步:目标同步至源。需在正向同步完成后配置,确保目标已经有源的所有数据,切换至目标后反向同步就可以把新数据迁移回源。

    刚开始很正常,所有数据均同步至RDS直到将入口切换至RDS之后,反向同步开始报错:

     查看报错原因

    DTS-071001: the Table XXXXX_db_0000.resource_info_cd Information Loaded failed in Target DB. cause by [com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Table 'XXXXX_db_0000.resource_info_cd' doesn't exist] About more information in [https://yq.aliyun.com/articles/505378].

    备注:上述XXXXX是数据库名,因数据敏感替换成XXXXX表达。

    大概意思是表resource_info_cd不存在。

    看了下源数据库,表是resource_info_CD,有大小写问题。

    对比了一下lower_case_table_names,发现

    源ECS自建数据库是0,RDS数据库是1。 

    查看概念:

    lower_case_table_names: 此参数不可以动态修改,必须重启数据库
    lower_case_table_names = 1  表名存储在磁盘是小写的,但是比较的时候是不区分大小写
    lower_case_table_names=0  表名存储为给定的大小和比较是区分大小写的 
    lower_case_table_names=2, 表名存储为给定的大小写但是比较的时候是小写的。

    可以得出,在反向同步时,由于源数据库是lower_case_table_names=0,区分大小写,而正向同步过程中,dts将数据库表大写转为小写,因此在反向小写写入源数据库时,因为大小写问题查询不到源库,导致反向同步失败。

    这个时候可以通过源数据库改参数lower_case_table_names=1解决。

    修改参数后重启源数据库,重试dts反向同步,任务重新正常运行。

  • 相关阅读:
    LeetCode Power of Three
    LeetCode Nim Game
    LeetCode,ugly number
    LeetCode Binary Tree Paths
    LeetCode Word Pattern
    LeetCode Bulls and Cows
    LeeCode Odd Even Linked List
    LeetCode twoSum
    549. Binary Tree Longest Consecutive Sequence II
    113. Path Sum II
  • 原文地址:https://www.cnblogs.com/normanlin/p/14062525.html
Copyright © 2011-2022 走看看