配置文档

兼容性

  1. 兼容v0.3.2+,包括v0.3.2

文档结构

  • config/application.properties
  1. spring-boot配置文件,可配置运行环境(spring.profiles.active)等,详情参考spring-boot官方文档。
  2. 同样可通过startup.sh脚本指定上述参数,例如 startup.sh --logging.level.root=debug
  • config/application-${env}.properties
  1. spring-boot配置文件,不同运行环境的配置文件。
  • config/tasks/${env}/*.properties
  1. 任务配置文件
  2. 不同的环境(${env})的任务配置在config/tasks目录的不同子目录。
  • 日志生成目录
  1. spring-boot配置参数,默认logging.file=${app.home}/logs/data-porter.log
  2. 其中${app.home}是在启动脚本中指定的,指的是datas-porter的根目录

节点编号

  • porter.id
  1. 用于指定任务节点编号,在所属分布式环境中唯一。用于自描述并在zookeeper上报心跳、实现分布式锁。
  2. eg.
  3. porter.id=100

统计

  • porter.statistic.upload
  1. 是否上传统计信息,包括日志、TPS指标.
  2. 类型:Boolean

集群

porter.cluster

  1. 分布式集群实现,当前仅支持zookeeper
  • porter.cluster.strategy
  1. 指定分布式集群的实现策略
  2. eg.
  3. porter.cluster.strategy=ZOOKEEPER
  • porter.cluster.client.url
  1. 集群连接参数
  2. eg.
  3. porter.cluster.client.url=127.0.0.1:2181
  • porter.cluster.client.sessionTimeout
  1. 集群连接超时时间
  2. eg.
  3. porter.cluster.client.sessionTimeout=超时时间,单位为毫秒。

告警

porter.alert

  1. 告警策略驱动,当前仅支持邮件
  • porter.alert.strategy
  1. 指定告警方式
  2. eg.
  3. porter.alert.strategy=EMAIL
  • porter.alert.frequencyOfSeconds
  1. 相同内容通知接收频率
  2. eg.
  3. porter.alert.frequencyOfSeconds=60
  • porter.alert.client
  1. porter.alert.client.host=smtp服务器
  2. porter.alert.client.username=邮箱
  3. porter.alert.client.password=密码
  4. porter.alert.client.smtpAuth=true
  5. porter.alert.client.smtpStarttlsEnable=true
  6. porter.alert.client.smtpStarttlsRequired=false
  • porter.alert.receiver
  1. 全局告警通知人
  2. 类型:ArrayList
  3. porter.alert.receiver[index].realName=姓名
  4. porter.alert.receiver[index].email=邮箱
  5. porter.alert.receiver[index].phone=手机号

公用连接池

  1. 当多个任务目标端和源端共用数据库连接池时配置,用于节省数据库链接资源。
  2. 类型:Map

porter.source.命名名字

  • porter.source.命名名字.sourceType
  1. 源类型
  2. 类型:enum
  3. 可选参数:JDBC
  • porter.source.命名名字.url
  1. 多个用逗号隔开
  2. eg.
  3. porter.source.命名名字.url=jdbc连接
  • porter.source.命名名字.userName
  1. 账户名
  2. eg.
  3. porter.source.命名名字.userName=账户
  • porter.source.命名名字.password
  1. 密码
  2. eg.
  3. porter.source.命名名字.password=密码
  • porter.source.命名名字.maxWait
  • porter.source.命名名字.minPoolSize
  • porter.source.命名名字.maxPoolSize
  • porter.source.命名名字.initialPoolSize
  • porter.source.命名名字.connectionErrorRetryAttempts
  1. 连接错误重试次数
  2. 类型:Int
  • porter.source.命名名字.dbType
  1. 类型:Enum
  2. 可选参数:MYSQL ORACLE
  • porter.source.命名名字.makePrimaryKeyWhenNo(2.0.1新增)
  1. 类型:Boolean
  2. 当目标端表无主键时,默认全部字段为主键
  3. 默认true

任务配置

porter.task

  1. 节点任务
  2. 类型:ArrayList
  • porter.task[index].taskId
  1. 任务编号
  2. 类型:String
  3. eg.
  4. porter.task[index].taskId=1
  • porter.task[index].receiver
  1. 当前任务告警通知人
  2. 任务告警会通知到porter.task[index].receiver + porter.alert.receiver
  3. 类型:ArrayList
  4. porter.task[index].receiver[index].realName=姓名
  5. porter.task[index].receiver[index].email=邮箱
  6. porter.task[index].receiver[index].phone=手机号
  • porter.task[index].consumer
  1. 任务消费源配置
  2. 类型:DataConsumerConfig
  • porter.task[index].consumer.consumerNameme
  1. 消费器插件
  2. 类型:String
  3. 可选择参数:CanalFetchKafkaFetch
  • porter.task[index].consumer.converter
  1. 消息转换器
  2. 类型:String
  3. 可选择参数:canalRow(1.0新增)、oggJson
  • porter.task[index].consumer.source
  1. 消费器数据来源
  2. 类型:Map
  3. CanalFetch:(1.0新增)
  4. porter.task[index].consumer.source.sourceType=CANAL
  5. porter.task[index].consumer.source.slaveId=mysql slaveId
  6. porter.task[index].consumer.source.address=ip:port
  7. porter.task[index].consumer.source.database=数据库名
  8. porter.task[index].consumer.source.username=账户
  9. porter.task[index].consumer.source.password=密码
  10. porter.task[index].consumer.source.filter=订阅表正则
  11. KafkaFetch:
  12. porter.task[0].consumer.source.sourceType=KAFKA
  13. porter.task[0].consumer.source.servers=ip:port,ip:port
  14. porter.task[0].consumer.source.topics=主题
  15. porter.task[0].consumer.source.group=消费分组
  16. porter.task[0].consumer.source.autoCommit=true|false
  • porter.task[index].consumer.metaSource
  1. 元数据数据源
  2. 类型:Map
  3. 不做配置时,将不会做源端与目标端数据一致对比。(1.1新增规则)
  4. 形式1
  5. porter.task[index].consumer.metaSource.sourceName=公共数据源名字
  6. 形式2:
  7. porter.task[index].consumer.metaSource.dbType
  8. porter.task[index].consumer.metaSource.url
  9. porter.task[index].consumer.metaSource.userName
  10. porter.task[index].consumer.metaSource.password
  11. porter.task[index].consumer.metaSource.maxWait
  12. porter.task[index].consumer.metaSource.minPoolSize
  13. porter.task[index].consumer.metaSource.maxPoolSize
  14. porter.task[index].consumer.metaSource.initialPoolSize
  15. porter.task[index].consumer.metaSource.connectionErrorRetryAttempts
  • porter.task[index].consumer.eventProcessor.className(1.1新增)
  1. 自定义同步数据数据抽取器
  2. 格式:package.className
  • porter.task[index].consumer.eventProcessor.content(1.1新增)
  1. class路径、jar路径、源码内容
  • porter.task[index].consumer.eventProcessor.emptyFetchNoticeSpan(2.0.1新增)
  1. 空查询通知间隔,单位秒
  2. 默认3600
  • porter.task[index].consumer.eventProcessor.emptyFetchThreshold(2.0.1新增)
  1. 空查询通知时间阀值,单位秒
  2. -1时不生效,默认3600
  • porter.task[index].loader
  1. 任务载入器配置
  2. 类型:DataLoaderConfig
  • porter.task[index].loader.loaderName
  1. 目标端载入器插件
  2. 类型:Enum
  3. 可选参数:JdbcBatchJdbcSingle
  • porter.task[index].loader.source
  1. 目标端数据源
  2. 类型:Map
  3. 形式1
  4. porter.task[index].loader.source.sourceName=公共数据源名字
  5. 形式2:
  6. porter.task[index].loader.source.dbType
  7. porter.task[index].loader.source.url
  8. porter.task[index].loader.sourceuserName
  9. porter.task[index].loader.source.password
  10. porter.task[index].loader.source.maxWait
  11. porter.task[index].loader.source.minPoolSize
  12. porter.task[index].loader.source.maxPoolSize
  13. porter.task[index].loader.source.initialPoolSize
  14. porter.task[index].loader.source.connectionErrorRetryAttempts
  • porter.task[index].loader.insertOnUpdateError(2.0新增)
  1. 目标端更新失败转插入开关参数,默认开启
  2. 类型:Boolean
  • porter.task[index].mapper
  1. 源端与目标端schema映射,用于处理源端和目标端命名不一致的情况
  2. 类型:List
  • porter.task[index].mapper[下标].schema
  1. porter.task[index].mapper[index].schema=源端schema,目标端schema
  • porter.task[index].mapper[下标].table
  1. porter.task[index].mapper[index].table=源端表名,目标端表名
  • porter.task[index].mapper[下标].updateDate
  1. 如果不配置或配置错误,数据同步结果检查功能不启用
  2. porter.task[index].mapper[下标].updateDate=源端表自动更新时间字段,目标端表自动更新时间字段
  • porter.task[index].mapper[下标].column
  1. 字段映射,可不配置。
  2. porter.task[index].mapper[下标].column.源端字段名=目标端字段名