dm同步大量mysql表

【 TiDB 使用环境】生产\测试环境\ POC
【 TiDB 版本】
tidb:v5.4.1
dm:v6.0.0
【遇到的问题】
同步的表列表超过50张以后启动很慢,检查阶段过不去
【复现路径】做过哪些操作出现的问题
【问题现象及影响】
一直卡在启动任务的位置。
其实我一共有400多张表需要同步
应该怎么操作,数据库里面表太多,用通配符就会把不需要的配进去

【附件】

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

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

怎么配置的,检查过不去报什么错吗?

那就分批同步,一次性启动那么多,如果表的数据量大肯定会慢,你观察下内存资源使用情况。

1 个赞

不知道您是不是遇到了这个问题:dmctl check-task卡住不动,没有错误信息

master3:
[2022/05/31 10:08:02.097 +08:00] [INFO] [server.go:2570] [payload=“task:”# \344\273\273\345\212\241\345\220\215\357\274\214\345\244\232\344\270\252\345\220\214\346\227\266\350\277\220\350\241\214\347\232\204\344\273\273\345\212\241\344\270\215\350\203\275\351\207\215\345\220\215\ name: \“sync_dw_batch2\”\ # \345\205\250\351\207\217+\345\242\236\351\207\217 (all) \350\277\201\347\247\273\346\250\241\345\274\217\ task-mode: \“all\”\ # \344\270\213\346\270\270 TiDB \351\205\215\347\275\256\344\277\241\346\201\257\ target-database:\ host: \"********\"\ port: 4000\ user: \“dw\”\ password: \"*******\"\ \ # \345\275\223\345\211\215\346\225\260\346\215\256\350\277\201\347\247\273\344\273\273\345\212\241\351\234\200\350\246\201\347\232\204\345\205\250\351\203\250\344\270\212\346\270\270 MySQL \345\256\236\344\276\213\351\205\215\347\275\256\ mysql-instances:\ - source-id: \“dw-dw_stage\”\ # \351\234\200\350\246\201\350\277\201\347\247\273\347\232\204\345\272\223\345\220\215\346\210\226\350\241\250\345\220\215\347\232\204\351\273\221\347\231\275\345\220\215\345\215\225\347\232\204\351\205\215\347\275\256\351\241\271\345\220\215\347\247\260\357\274\214\347\224\250\344\272\216\345\274\225\347\224\250\345\205\250\345\261\200\347\232\204\351\273\221\347\231\275\345\220\215\345\215\225\351\205\215\347\275\256\357\274\214\345\205\250\345\261\200\351\205\215\347\275\256\350\247\201\344\270\213\351\235\242\347\232\204 block-allow-list \347\232\204\351\205\215\347\275\256\ block-allow-list: \“bw-rule-1\”\ \ # \351\273\221\347\231\275\345\220\215\345\215\225\351\205\215\347\275\256\ block-allow-list:\ bw-rule-1: # \350\242\253\344\270\212\346\226\207 block-allow-list: \“bw-rule-1\” \345\274\225\347\224\250\ do-dbs: [\“dw\”] # \351\234\200\350\246\201\350\277\201\347\247\273\347\232\204\344\270\212\346\270\270\346\225\260\346\215\256\345\272\223\347\231\275\345\220\215\345\215\225\343\200\202\347\231\275\345\220\215\345\215\225\344\273\245\345\244\226\347\232\204\345\272\223\350\241\250\344\270\215\344\274\232\350\242\253\350\277\201\347\247\273\ do-tables:\ - db-name: \“dw\”\ tbl-name: \“wifi_app_functionall_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_guanwang_functionall_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_hot_master_fun_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_hot_master_show_click_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_ios_bk_connect_success_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_ios_bk_cv_connect_success_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_ios_bk_newold_connect_success_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_ios_bk_newold_cv_connect_success_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_ios_brush_no_active_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_ios_cv_dot_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_ios_cv_front_after_active_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_ios_dot_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_ios_dot_desc\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_ios_front_after_active_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_ios_new_connect_success_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_ios_toutiaoUC_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_ipad_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_login_auth_login_cmcc\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_login_status_user_info_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_login_succ\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_login_user_info_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_manuf_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_manuf_daily_report_2\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_model_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_model_daily_report_2\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_model_sort_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_new_city_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_open_cnt\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_open_connection_count_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_osvercode_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_ov_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_province_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_province_function_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_province_oper_qpwd_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_pwd_monitor_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_qpwd_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_qpwd_one_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_risk_brush_no_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_security_channel_funtion_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_security_cv_channel_funtion_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_security_cv_funtion_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_security_funtion_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_svu_week_cnt\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_toutiao_function_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_ui_using_the_length_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_app_wallet_pv_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_appid_appdesc_mapping\”\ - db-name: \“dw\”\ tbl-name: \“wifi_banner_rate_daily_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_bi_server_rpt_base_report\”\ - db-name: \“dw\”\ tbl-name: \“wifi_bub_report\”\ " errCnt:10 warnCnt:10 "] [request=CheckTask]
[2022/05/31 10:08:02.098 +08:00] [INFO] [server.go:2585] [“will forward after a short interval”] [from=master3] [to=master1] [request=CheckTask]

master1:
[2022/05/31 10:08:02.627 +08:00] [INFO] [checker.go:275] ["\ ************ task sync_dw_batch2 checking items \ mysql_version\ source db dump privilege checker\ mysql_server_id\ mysql_binlog_enable\ mysql_binlog_format\ mysql_binlog_row_image\ source db replication privilege checker\ online ddl checker\ binlog_do_db/binlog_ignore_db check\ table structure compatibility check\ task sync_dw_batch2 checking items ************"] [unit=“task check”]
[2022/05/31 10:10:31.706 +08:00] [INFO] [server.go:2570] [payload="leader:true master:true names:“master1” "] [request=ListMember]
[2022/05/31 10:10:31.807 +08:00] [INFO] [server.go:2570] [payload="leader:true master:true names:“master2” "] [request=ListMember]
[2022/05/31 10:10:31.808 +08:00] [INFO] [server.go:2570] [payload="leader:true master:true names:“master3” "] [request=ListMember]
[2022/05/31 10:10:31.811 +08:00] [INFO] [server.go:2570] [payload="worker:true names:“dm-172.18.19.169-8262” "] [request=ListMember]
[2022/05/31 10:10:31.811 +08:00] [INFO] [server.go:2570] [payload="worker:true names:“dm-10.24.12.34-8262” "] [request=ListMember]
[2022/05/31 10:10:31.811 +08:00] [INFO] [server.go:2570] [payload="worker:true names:“dm-10.24.11.31-8262” "] [request=ListMember]

master2:
[2022/05/31 10:10:31.708 +08:00] [INFO] [server.go:2570] [payload="leader:true master:true names:“master2” "] [request=ListMember]
[2022/05/31 10:10:31.708 +08:00] [INFO] [server.go:2585] [“will forward after a short interval”] [from=master2] [to=master1] [request=ListMember]

这是三个master在check-task报的日志,内存变化不大

我这边整个数据源做一个任务都没问题,50张表应该不会吧。减少表没问题吗?

检查过不去,一直卡在哪,表少的时候没啥问题

观察一下启动时dm-work的资源占用情况,看看是不是资源不够导致的

是不是表太多了,减少一半试一试,排除一下。

task_dw_batch2.yaml (4.6 KB)

dm是常规安装,没设置额外的参数

减少了也不行,是因为数据源头表太多(几千张表)?

我这边也才50多表没问题:sweat_smile:

楼主有解决这个问题吗

贴dm-worker.log看看

执行 check-task的时候没有任何worker的日志

还没解决:master的日志就看到个
\ " errCnt:10 warnCnt:10 “] [request=CheckTask]
[2022/06/06 11:47:29.682 +08:00] [INFO] [checker.go:275] [”\ ************ task sync_dw-dw_stage checking items \ mysql_version\ source db dump privilege checker\ mysql_server_id\ mysql_binlog_enable\ mysql_binlog_format\ mysql_binlog_row_image\ source db replication privilege checker\ online ddl checker\ binlog_do_db/binlog_ignore_db check\ table structure compatibility check\ task sync_dw-dw_stage checking items ************"] [unit=“task check”]

分批 迁移了 可以考虑

感觉就是check很慢,几条的时候就很快,毫秒级,多了就卡住了,有啥加资源的办法不

[2022/06/06 13:15:22.330 +08:00] [INFO] [table_structure.go:135] [“check table structure over”] [“spend time”=30m0.000882282s] check几十张表,花了30分钟,有什么地方可以优化吗

应该是有 check 出 error --> " errCnt:10 warnCnt:10"
worker log 中有没有其他信息?