[FAQ] dm 同步上游大写及中文数据库表名正确姿势

【问题澄清】

  • 上游数据库中存在中文表名大写数据库名称,同步报错,未匹配到 kk 数据库。 query-status 报错如下:

“msg”: "[code=10001:class=dm-master:scope=upstream:level=high] fail to initial checker: database driver error: Error 1049: Unknown database ‘kk’\ngithub.com/pingcap/dm/pkg/terror.(*Error).Delegate\n\t

【解决方案】

  • 针对大小写匹配问题:在 task 文件中设置 case-sensitive: true,开启 schema/table 大小写敏感。与 task-name 对齐

  • 针对中文数据库表名称:在 task 文件中 mydumpers 标签下使用 extra-args,进行设置

mydumpers:                        
  global:                     
    mydumper-path: "./bin/mydumper"  
    threads: 4               
    chunk-filesize: 64           
    skip-tz-utc: true          
    extra-args: " --regex=test.|sbtest.*" 

【扩展】

  • mydumper 的 extra-args 也可以用于 tables-list 包含表名字符过多导致的备份问题。此问题没有明显报错,需要在 dm-worler.log 中 search 上述关键词,如果没有打印完全,即可能是此问题导致

【经典案例】