小唯xx
1
【 TiDB 使用环境】 /测试
【 TiDB 版本】5.7.25-TiDB-v6.5.0
【复现路径】dm同步MySQL数据到tidb 全库 ,忽略几张表
【遇到的问题:同步报错】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
求咨询 1.什么方式可以全部规避这个报错,让其他表顺利同步,
2.这个任务如果重新开始 ,如何修改配置文件可以达到,同步整个库,去除其中几张表的需求
小唯xx
3
[tidb@tidb-server4 ~/dm_prod/tasks]$dmctl --master-addr 10.3.57.4:8266 query-status acornhc_healthdata_task1
{
“result”: true,
“msg”: “”,
“sources”: [
{
“result”: true,
“msg”: “”,
“sourceStatus”: {
“source”: “pingtaiku”,
“worker”: “dm-10.3.57.54-8268”,
“result”: null,
“relayStatus”: null
},
“subTaskStatus”: [
{
“name”: “acornhc_healthdata_task1”,
“stage”: “Paused”,
“unit”: “Load”,
“result”: {
“isCanceled”: false,
“errors”: [
{
“ErrCode”: 10006,
“ErrClass”: “database”,
“ErrScope”: “downstream”,
“ErrLevel”: “high”,
“Message”: “file acornhc_healthdata.phr_test_medical_records.0000002660003.sql: execute statement failed: commit”,
“RawCause”: “Error 1062: Duplicate entry ‘2c94864b8e9892a7018f035b89d94c95’ for key ‘phr_test_medical_records.idx_medical_id’”,
“Workaround”: “”
}
],
“detail”: null
},
“unresolvedDDLLockID”: “”,
“load”: {
“finishedBytes”: “144789461945”,
“totalBytes”: “589632102257”,
“progress”: “24.56 %”,
“metaBinlog”: “(mysql-bin.004614, 59544788)”,
“metaBinlogGTID”: “”
}
}
]
}
]
}
问题1 应该是个 bug 分区表主键插入重复 bug
可以更新到 6.5.10 的版本
小唯xx
5
这个问题是我tidb环境 这个库里已经有这个表了,这个任务本来是想忽略这个表,配置文件里 配置了 但是应该是没生效,我现在有点急想让这个任务先执行成功,想直接忽略这个报错,不知道如何操作
db_user
(Db User)
6
小唯xx
7
应该不是吧 下面是我配置文件,麻烦帮我看看 哪里有问题
黑白名单配置
block-allow-list:
rule-1:
do-tables:
- db-name: “acornhc_healthdata”
tbl-name: “*”
ignore-tables:
- db-name: “acornhc_healthdata”
tbl-name: “member_user_proof”
- db-name: “acornhc_healthdata”
tbl-name: “member_user”
- db-name: “acornhc_healthdata”
tbl-name: “service_provider_proof”
- db-name: “acornhc_healthdata”
tbl-name: “phr_checkup_category”
- db-name: “acornhc_healthdata”
tbl-name: “phr_checkup_item_result”
- db-name: “acornhc_healthdata”
tbl-name: “phr_medical_service_advice_report”
- db-name: “acornhc_healthdata”
tbl-name: “phr_test_medical_records”
- db-name: “acornhc_healthdata”
tbl-name: “base_phr_dataelements_item”
Dump 单元配置
mydumpers:
global:
threads: 4
chunk-filesize: 64
extra-args: “–consistency none”
loaders:
global:
pool-size: 16
dir: “./dumped_data”
syncers:
global:
worker-count: 16
batch: 100
enable-ansi-quotes: true
safe-mode: true
compact: true
multiple-rows: true
mysql-instances:
- source-id: “pingtaiku”
block-allow-list: “rule-1”
mydumper-config-name: “global”
loader-config-name: “global”
syncer-config-name: “global”
db_user
(Db User)
9
感觉白名单把黑名单覆盖了,白名单用正则方式写吧,别用*了
1 个赞
db_user
(Db User)
12
那你黑白名单分成两个rule试下,这个我没试过,不过不行也只能按照前缀正则了
小唯xx
13
这个不可以 那个也是正在同步的表,其他任务在做 那些表是mycat的表
舞动梦灵
(Ti D Ber Nckmz Hmh)
15
我也遇到这个bug了。经常行的 提示主键冲突。但是你执行resume 就恢复了。我就写了一个shell 每分钟检查报错这一行有没有 这个par字段“|grep PRIMARY |wc -l)” 如果有。执行恢复命令。
舞动梦灵
(Ti D Ber Nckmz Hmh)
20
给你参考使用,如果有更好的方案,可以互相讨论
–tiupquery.sh
~/.tiup/bin/tiup dmctl --master-addr=192.168.3.233:8261 query-status mysql-tidb
–auresum.sh
#!/bin/bash
自动监控DM同步出现主键冲突错误,并自动执行恢复命令
date=$(date “+%Y-%m-%d %H:%M:%S”)
monitor1=$(/server/tiupquery.sh 2>/dev/null |grep PRIMARY |wc -l)
if (( ${monitor1} >0 )); then
echo $monitor1,$date,‘订单库’
/server/tiupresume.sh
fi
– tiupresum.sh
~/.tiup/bin/tiup dmctl --master-addr=192.168.3.233:8261 resume-task mysql-tidb
system
(system)
关闭
21
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。