mariadb支持多源同步,一对多,多对一,都是ok的,不不过还是会有或多或少的问题,无论是和业务相关,还是数据同步本身的一些限制,整理下平时遇到的一些问题,希望对小伙伴们有帮助。
1、搭建过程
控制台页面:https://console.cloud.tencent.com/tdsql/synctask
正则匹配:这里源库可以随便写,但是目标库只能是写 db.*
牢记下面几点:
至此数据同步任务就搭建成功了。
1.1、这里的同步主要分为以下几个阶段:
源实例导出冷备——》导入冷备到目标实例——》追增量
1.2、数据同步任务完全可以长期使用,任务稳定,非业务行为,一般问题不大
二、数据同步注意点
1、rename 操作和 truncate操作不同步
云mariadb要求建表就要指定主键
1.1 rename操作验证
源库修改完表名后,对t2表做数据更新操作,此时同步任务会报错,因为这个操作到目标库后会找不到t2表
处理方法:在目标库进行相关表的改名操作
任务恢复正常
注意:虽然rename 操作不同步,但是这里数据同步任务会去校验源库的新表,如果说发现了有新表,即t2,它是会再去同步t2的。
1.2 truncate操作验证
truncate操作不会导致任务报错,但是这里最好实在目标库也执行依次,否则会影响正常的数据一致性
1.3 正则匹配模式下的触发器/视图/存储过程是否同步
1.3.1 视图:
视图不同步,此时你在源库对视图做任何操作都是不影响任务,但是如果说其他数据修改依赖到这个视图,任务就会停止,需要我们手动在目标库创建视图
1.3.2 存储过程:
存储过程(Stored Procedure),是一组为了完成特定功能的SQL 语句,经过编译后存储在数据库中,用户通过指定存储过程的名字并给出参数来执行。
创建一个简单的存储过程来验证,可以看到不会同步
如果存储过程被执行了,这个数据更新操作是否会同步。
可以看到这个数据更新操作还是可以正常同步的
1.3.3 触发器也不同步,同样,触发器涉及到的数据更新操作也会同步
3、全量同步模式:
3.1 这里只有全量匹配支持视图/存储过程/触发器,其他两种匹配模式下这三个都不支持
3.2 验证rename操作,也是正常同步的
这里因为数据同步 并没有把相关报错打印在控制台侧,所以其实遇到如果收任务报错或者延迟大的情况下,可以根据自己的操作加上数据同步的限制来分析是哪里出现的问题,然后再去做相应的处理。
如果说不确定或者仍未解决,欢迎随时反馈给腾讯云侧