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反向同步,任务重新正常运行。

  • 相关阅读:
    properties to json (通过前缀手动创建json, bean) propsutils
    Drill 常用时间函数 drill
    ubuntu20.04 修改 DNS  ip
    javascript 获取图片的尺寸 how to get image size using javascript
    javascript小数点后保留N位并可以四舍五入
    C# 递归算法求 1,1,2,3,5,8,13···
    自加入屠龙后的成长记
    Session丢值的问题
    第二个网站成长经历,http://www.chaomagou.com/ 潮妈购
    回想自己2012年1月1日到2012年6月19日的所作所为
  • 原文地址:https://www.cnblogs.com/normanlin/p/14062525.html
Copyright © 2011-2022 走看看