DataX icon indicating copy to clipboard operation
DataX copied to clipboard

datax怎么读取不同mysql实例场景下的分库分表数据,不同mysql实例的账号密码是不一样的

Open GdHuni opened this issue 2 years ago • 5 comments

image

类似这样的情况是需要一样的账号密码,假如不同的账号密码需要怎么配置在一个datax json中

GdHuni avatar Jan 16 '23 07:01 GdHuni

jdbcurl虽然是个数组,但他只能配置一个. PS:之所以使用JSON数组描述连接信息,是因为阿里集团内部支持多个IP探测,如果配置了多个,MysqlReader可以依次探测ip的可连接性,直到选择一个合法的IP。如果全部连接失败,MysqlReader报错。 注意,jdbcUrl必须包含在connection配置单元中。对于阿里集团外部使用情况,JSON数组填写一个JDBC连接即可。

不同的Mysql实例只能配置多个任务,不能在一个任务中配置.

mysqlreader/doc/mysqlreader.md 这个文档说得很清楚.

Y-evil avatar Jan 16 '23 09:01 Y-evil

jdbcurl虽然是个数组,但他只能配置一个. PS:之所以使用JSON数组描述连接信息,是因为阿里集团内部支持多个IP探测,如果配置了多个,MysqlReader可以依次探测ip的可连接性,直到选择一个合法的IP。如果全部连接失败,MysqlReader报错。 注意,jdbcUrl必须包含在connection配置单元中。对于阿里集团外部使用情况,JSON数组填写一个JDBC连接即可。

不同的Mysql实例只能配置多个任务,不能在一个任务中配置.

mysqlreader/doc/mysqlreader.md 这个文档说得很清楚. image image

-- 不同的Mysql实例只能配置多个任务,不能在一个任务中配置. 针对这个回答。其实是因为我做了测试 在不同实例下的mysql 表数据 能通过一个配置进行抽取,前提是一样的账号密码,所以我想请教下 是不是不同账号密码的不同实例下的mysql 表数据 是不是也能通过一个配置搞定,只是我没发现怎么配置?

GdHuni avatar Jan 16 '23 09:01 GdHuni

应该不行,username和password这两个参数是和connection这个参数一级的,而jdbcurl是参数connection的子级.

对子任务的配置处理,在代码里是JobContainer.split()这个方法,然后调用doReaderSplit()方法,在MysqlReader中,最终是调用ReaderSplitUtil.整个链路看下来,所有的子任务都是用的同一个username和password.

Y-evil avatar Jan 17 '23 01:01 Y-evil

其实这就很奇怪了,都能支持分实例同一个配置脚本抽数了,为什么不支持不同账号密码的,应该将账号密码与jdbcurl一级别,也就是放在connection里面 就能解决了

GdHuni avatar Jan 17 '23 02:01 GdHuni

嗯,要这个功能的话,只能自己在源码的基础上改改了.

不想改源码的话,也就多配置几个任务的事,也不是太麻烦.

Y-evil avatar Jan 17 '23 06:01 Y-evil