1.使用adapter同步mysql到es
    数据量大避免子表同步,使用主表驱动防止同步丢失数据 canal-admin 配置实例
    sql 查询无法建立在视图上基于mysql binlog
    子表判断条件 必须出现在select后
    canal 重启 检查同步yml 查看错误日志排除错误
    etlCondition 使用于全量同步 有入参的情况

    1. #################################################
    2. ## mysql serverId , v1.0.26+ will autoGen
    3. # canal.instance.mysql.slaveId=0
    4. # enable gtid use true/false
    5. canal.instance.gtidon=false
    6. # position info
    7. canal.instance.master.address=xxx.xxx.xxx.xxx:3306
    8. canal.instance.master.journal.name=
    9. canal.instance.master.position=
    10. canal.instance.master.timestamp=
    11. canal.instance.master.gtid=
    12. # rds oss binlog
    13. canal.instance.rds.accesskey=
    14. canal.instance.rds.secretkey=
    15. canal.instance.rds.instanceId=
    16. # table meta tsdb info
    17. canal.instance.tsdb.enable=false
    18. #canal.instance.tsdb.url=jdbc:mysql://127.0.0.1:3306/canal_tsdb
    19. #canal.instance.tsdb.dbUsername=canal
    20. #canal.instance.tsdb.dbPassword=canal
    21. #canal.instance.standby.address =
    22. #canal.instance.standby.journal.name =
    23. #canal.instance.standby.position =
    24. #canal.instance.standby.timestamp =
    25. #canal.instance.standby.gtid=
    26. # username/password
    27. canal.instance.dbUsername=xxx
    28. canal.instance.dbPassword=xxx
    29. canal.instance.defaultDatabaseName=xxx
    30. canal.instance.connectionCharset = UTF-8
    31. # enable druid Decrypt database password
    32. canal.instance.enableDruid=false
    33. #canal.instance.pwdPublicKey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALK4BUxdDltRRE5/zXpVEVPUgunvscYFtEip3pmLlhrWpacX7y7GCMo2/JM6LeHmiiNdH1FWgGCpUfircSwlWKUCAwEAAQ==
    34. # table regex
    35. canal.instance.filter.regex=xxx
    36. # table black regex
    37. canal.instance.filter.black.regex="xxx.undo_log"
    38. # table field filter(format: schema1.tableName1:field1/field2,schema2.tableName2:field1/field2)
    39. #canal.instance.filter.field=test1.t_product:id/subject/keywords,test2.t_company:id/name/contact/ch
    40. # table field black filter(format: schema1.tableName1:field1/field2,schema2.tableName2:field1/field2)
    41. #canal.instance.filter.black.field=test1.t_product:subject/product_image,test2.t_company:id/name/contact/ch
    42. # mq config
    43. canal.mq.topic=xxx
    44. # dynamic topic route by schema or table regex
    45. #canal.mq.dynamicTopic=mytest1.user,mytest2\\..*,.*\\..*
    46. canal.mq.partition=0
    47. # hash partition config
    48. #canal.mq.partitionsNum=3
    49. #canal.mq.partitionHash=test.table:id^name,.*\\..*
    50. #################################################

    2.问题 数据过大产生 json 截断
    参考:
    https://www.cnblogs.com/javabg/p/14265558.html
    3.yml 列子

    1. LEFT JOIN (select request_id,GROUP_CONCAT(JSON_OBJECT(
    2. 'requestId',request_id,
    3. 'id',id)) as json
    4. from xxx group by request_id) as x on 主表.request_id = x.request_id

    优化

    # 优化了canal 源码
    CONCAT('[',(select GROUP_CONCAT(JSON_OBJECT(
                   'creator',creator,
                   'creatorId',creator_id,
                   'createTime',date_format(create_time,'%Y-%m-%dT%H:%i:%S+08:00'),
                   'updater',updater,
                   'updaterId',updater_id,
                   'updateTime',date_format(update_time,'%Y-%m-%dT%H:%i:%S+08:00'),
                   'id',id)) as json
                   from 子表 where enabled_flag = 1 and 主表.id = 子表.id),']') as xxxList
    

    问题:
    数据的抓取多条 之同步一条
    两个yml id 相同 同步到同一个 idex
    解决办法
    不同服务 建立不同的同步服务 不共用一个 每个服务消耗700-800M的内存