DataX调度流程:一个DataX作业,并且配置了20个并发,目的是将一个100张分表的mysql数据同步
官网解释:
- DataXJob根据分库分表切分成了100个Task。
- 根据20个并发,DataX计算共需要分配4个TaskGroup。
- 4个TaskGroup平分切分好的100个Task,每一个TaskGroup负责以5个并发共计运行25个Task。
- 总结:一个并发:5张表 / 一个TaskGroup:五个并发,25个Task
1、mysqltomysql
mysqlreader参数说明:
参数 | 是否必须 | 说明 |
---|---|---|
jdbcUrl | 是 | |
username | 是 | 数据源用户名 |
password | 是 | 数据源密码 |
table | 是 | 必须在connection中配置 |
column | 是 | [*]表示所有列配置。支持列裁剪,支持列换序,支持常量配置,用户需要按照Mysql SQL语法格式: ["id", "`table`", "1", "'bazhen.csy'", "null", "to_char(a + 1)", "2.3" , "true"] id为普通列名,`table`为包含保留字的列名,1为整形数字常量,'bazhen.csy'为字符串常量,null为空指针,to_char(a + 1)为表达式,2.3为浮点数,true为布尔值。 |
splitPk | 否 | 表示希望用户使用splitPk代表的字段进行数据分片,推荐使用表主键,可提高效能。仅支持整形数据切分,不支持其他, |
where | 否 | MysqlReader根据指定的column、table、where条件拼接SQL,并根据这个SQL进行数据抽取。在实际业务场景中,往往会选择当天的数据进行同步,可以将where条件指定为gmt_create > $bizdate 。注意:不可以将where条件指定为limit 10,limit不是SQL的合法where子句。如果不填写where语句,包括where的key和value,将视为全量同步 |
querysql | 否 | 用户可以通过该配置型来自定义筛选SQL。当用户配置了这一项之后,DataX系统就会忽略table,column这些配置型,直接使用这个配置项的内容对数据进行筛选,例如需要进行多表join后同步数据,使用select a,b from table_a join table_b on table_a.id = table_b.id。
当用户配置querySql时,MysqlReader直接忽略table、column、where条件的配置,querySql优先级大于table、column、where选项。 |
mysqlwriter参数说明:
参数 | 是否必须 | 说明 |
---|---|---|
jdbcUrl | 是 | |
username | 是 | 数据源用户名 |
password | 是 | 数据源密码 |
table | 是 | table 和 jdbcUrl 必须包含在 connection 配置单元中 |
cloumn | 是 | [*]表示所有列配置 **column配置项必须指定,不能留空!** 不能配置任何常量 |
session | 否 | 描述: DataX在获取Mysql连接时,执行session指定的SQL语句,修改当前connection session属性 |
presql | 否 | 描述:写入数据到目的表前,会先执行这里的标准语句。 如果 Sql 中有你需要操作到的表名称,请使用 @table 表示,这样在实际执行 Sql 语句时,会对变量按照实际表名称进行替换。 比如你的任务是要写入到目的端的100个同构分表(表名称为:datax_00,datax01, ... datax_98,datax_99),并且你希望导入数据前,先对表中数据进行删除操作,那么你可以这样配置:"preSql":["delete from 表名"],效果是:在执行到每个表写入数据前,会先执行对应的 delete from 对应表名称 |
postsql | 否 | 写入数据到目的表后,会执行这里的标准语句。(原理同 preSql ) |
writeMode | 是 | 描述:控制写入数据到目标表采用 insert into 或者 replace into 或者 ON DUPLICATE KEY UPDATE 语句 所有选项:insert/replace/update |
batchSize | 否 | 描述:一次性批量提交的记录数大小,该值可以极大减少DataX与Mysql的网络交互次数,并提升整体吞吐量。但是该值设置过大可能会造成DataX运行进程OOM情况。 默认:1024 |
代码:
{
"job": {
"setting": {
"speed": {
"channel":1
}
},
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"username": "账号",
"password": "密码",
"column": [
"id",
"vegetableBaskets",
"Times",
"grainOil",
"agricultures"
],
"connection": [
{
"querySql": [
"SELECT id,vegetableBaskets,Times,grainOil,agricultures FROM post;"
],
"jdbcUrl": [
"jdbc:mysql://192.28.66.44:23306/post?useSSL=false"
]
}
]
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"username": "账号",
"password": "密码",
"writeMode": "insert",
"column": [
"id",
"vegetableBaskets",
"Times",
"grainOil",
"agricultures"
],
"preSql": [],
"postSql": [],
"session": [],
"connection": [
{
"jdbcUrl": "jdbc:mysql://192.11.10.44:23306/HHH?useSSL=false",
"table": ["post"]
}
]
}
}
}
]
}
}