-
Notifications
You must be signed in to change notification settings - Fork 2.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
关于建临时表->灌数据->drop原表->改名为原表的动作 #807
Comments
主要是select节点来维护,otter支持canal开启tsdb |
这两天调查了下,发现setl中etl三个步骤里都有回查逻辑,整个链路上我测了下,3个相关类中findtable函数都有可能出错,原因就是回查数据库时,目标表已经被删除了。由于公司项目依赖第三方数据库,第三方库操作流程不可控,只好想其他办法解决。 修改代码后,自己测试已经通过还没上生产 |
后端的etl可以选择关闭反查表结构的动作,前提是源库和目标是一致的结构 |
这样啊,我们这边源库目标库是一致的,具体怎么设置,我跟了下源码,不知道我理解的对不对
E阶段的DatabaseExtractor.java类:
T阶段的RowDataTransformer.java类:
我用:
执行的sql语句是:
应该是DatabaseExtractor.java文件里DatabaseExtractWorker类的run函数里的
这里的findtable函数报的,是我漏了什么设置项吗? PS:另外之前在L阶段的DbLoadAction.java类里的findtable函数好像也有报过,那边好像没看到可以跳过的判断,但是L阶段应该是目标库上找表信息了,理论上如果是顺序执行的话,应该不会找不到,不过这个类里有一段代码好像判断逻辑不太对,不知道会不会影响到这个逻辑:
|
同步一致性,选择基于binlog |
建临时表->灌数据->drop原表->改名为原表的动作,自己这边生产环境偶尔会挂起,查了下原因,应该是灌临时表时,想要获取临时表的meta信息的时候回查源库时,已经被改名为原表,导致临时表表名回查失败。
看了下canal的解决方案,貌似可以用tsdb保留meta信息,想问下otter里现在支持用这个吗,tsdb是普通数据库吗,我看了下相关xml文件,好像需要配置专用的数据源,otter的配置界面里只找到开关,没看到相关数据源的配置,有什么办法解决吗
PS:发现select节点和load节点都会有类似错误发生,如果是tsdb的话,select节点和load节点都有相应的tsdb来维护吗,还是只是select节点维护,load会通过其他方式问select要?
The text was updated successfully, but these errors were encountered: