dm同步不到数据. 求助,究竟是哪里配置错了?

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
v5.4.0

【概述】 场景 + 问题概述
dm5.4.0同步不到mysql的数据.
【备份和数据迁移策略逻辑】
指定表同步
【背景】 做过哪些操作
数据源配置:
source-id: “mysql-gege”
from:
host: “192.168.128.112”
user: “gege”
password: “xxxx”
port: 3306

任务配置:
name: task2
task-mode: all

mysql-instances:
  - source-id: "mysql-gege"                
    block-allow-list:  "bw-rule-1"               

target-database:
  host: "192.168.128.101"
  port: 4000
  user: "root"
  password: "xxxxxxxxxxxxxxx"

block-allow-list:                     
  bw-rule-1:                          
    do-tables:                        
    - db-name: "CDC"
      tbl-name: "cdc_order_excel_price"

【现象】 业务和数据库现象
任务状态:
{
“result”: true,
“msg”: “”,
“sources”: [
{
“result”: true,
“msg”: “”,
“sourceStatus”: {
“source”: “mysql-gege”,
“worker”: “dm-192.168.128.105-8262”,
“result”: null,
“relayStatus”: null
},
“subTaskStatus”: [
{
“name”: “task2”,
“stage”: “Running”,
“unit”: “Sync”,
“result”: null,
“unresolvedDDLLockID”: “”,
“sync”: {
“totalEvents”: “122”,
“totalTps”: “0”,
“recentTps”: “0”,
“masterBinlog”: “(bogon-bin.000002, 308928403)”,
“masterBinlogGtid”: “”,
“syncerBinlog”: “(bogon-bin.000002, 308928207)”,
“syncerBinlogGtid”: “”,
“blockingDDLs”: [
],
“unresolvedGroups”: [
],
“synced”: false,
“binlogType”: “remote”,
“secondsBehindMaster”: “0”
}
}
]
}
]
}

【问题】 当前遇到的问题
start-task task2.yml --remove-meta 之后显示成功:
{
“result”: true,
“msg”: “”,
“sources”: [
{
“result”: true,
“msg”: “”,
“source”: “mysql-gege”,
“worker”: “dm-192.168.128.105-8262”
}
]
}
但是任务状态直接就变成sync,查询tidb根本没有同步数据, 连表都没建.
以为是与新版mysql不兼容导致的,可是测试了mysql5.7.22/5.7.37以及mysql8.0 都是一样.
也不是routes的问题, 加不加route-rule都一样.
我想知道我到底哪里配置错了. :sob:

【业务影响】

【TiDB 版本】
v5.4.0
【附件】

  • 相关日志、配置文件、Grafana 监控(https://metricstool.pingcap.com/)
  • TiUP Cluster Display 信息
  • TiUP CLuster Edit config 信息
  • TiDB-Overview 监控
  • 对应模块的 Grafana 监控(如有 BR、TiDB-binlog、TiCDC 等)
  • 对应模块日志(包含问题前后 1 小时日志)

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

配置文件里,参考文档把dumper loader syncer也配置上试试

谢谢回复, 我试过.没用. 最开始的时候就是带着mydumper,loader,syncer配置的, 后来逐步的连routes都删了, 也就是全用默认值了. 还是不行.

你好,看下这个 task 当前 dm-worker (dm-192.168.128.105-8262)的日志呢?默认情况下,主库上的 binlog 事件会通过这个 dm-worker 写入到下游的 TiDB,你看下日志中有没啥异常。

多谢,日志确实有异常,
[WARN] [source_worker.go:1030] [“different case-sensitive config between task config and source config, use true for it.”]
只是这个异常我有点儿搞不懂,task配置里有case-sensitive是针对库/表名的,而source的case-sensitive确是用于binlog event filter的.
https://docs.pingcap.com/zh/tidb/stable/task-configuration-file-full
https://docs.pingcap.com/zh/tidb/stable/dm-source-configuration-file#case-sensitive-false

虽然不明白为什么会有这样一个warn,不过猜测可能是源库名是大写的原因. 稍后我测试一下同步小写库名的表试试.

日志后面的信息倒是很清楚:
[INFO] [common.go:108] [“no tables need to sync”] [schema=CDC]

可以试一下:在 source 和 task 配置里都加上 case-sensitive: false 的配置项

你好,可以尝试在 task 配置文件中增加 case-sensitive: true,详见 https://docs.pingcap.com/zh/tidb/stable/task-configuration-file-full。

经测试, 确实是源库名大写导致的同步不到数据.
同步库名小写的表没问题.
我尝试在source和task的配置里都加上case-sensitive: false ,尽管文档上说它的默认值就是false
但是并没用.
创建了source之后查看source的配置, 发现自动变成ture:
» config source mysql-gege
{
“result”: true,
“msg”: “”,
“cfg”: “enable-gtid: false\ auto-fix-gtid: false\ relay-dir: relay-dir\ meta-dir: “”\ flavor: mysql\ charset: “”\ enable-relay: false\ relay-binlog-name: “”\ relay-binlog-gtid: “”\ source-id: mysql-tata\ from:\ host: 123.57.xxx.xxx\ port: 3306\ user: world\ password: ‘******’\ max-allowed-packet: null\ session: {}\ security: null\ purge:\ interval: 3600\ expires: 0\ remain-space: 15\ checker:\ check-enable: true\ backoff-rollback: 5m0s\ backoff-max: 5m0s\ check-interval: 5s\ backoff-min: 1s\ backoff-jitter: true\ backoff-factor: 2\ server-id: 429512654\ tracer: {}\ case-sensitive: true\ filters: []\ ”
}
注意倒数第二个KV : case-sensitive: true

而start-task后, query-status task-name 并不能查询到task使用的case-sensitive参数的值.

所以, 问题依旧…

  1. 看下我上楼回复的,注意值应该是 “true”,表示区分大小写。
  2. DM 相关配置文件中,库名也需要区分大小写,保持和源库的一致。

问题解决:
source不需要配置case-sensitive,使用默认值false即可.
由于源库名大写, 所以task要配置case-sensitive: true

是的, 我搞错了. 一心想着dm-worker日志warn显示自动设置为true了都还不行. 所以就想当然的把source和task都写成false测试. :stuck_out_tongue_winking_eye:

好的,解决了问题就好。:smiley:

谢啦…
也感谢楼上诸位热心兄弟…

不客气哈:blush:

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。