DM同步过程报错ERROR 1236 (HY000): could not find next log

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:DM v1.0.6

  • 【问题描述】:由于上游mysql主库的日志被删除,导致备库不会同步,进而影响了DM的同步进程,报错信息如下,我想问下,这类场景是否有恢复的手段?谢谢

                              "Message": "TCPReader get relay event with error: ERROR 1236 (HY000): could not find next log; the first event 'mysql-bin.001499' at 498476795, the last event read from '/data/binlog/mysql-bin.001502' at 274, the last byte read from '/data/binlog/mysql-bin.001502' at 274.",
                              "RawCause": "ERROR 1236 (HY000): could not find next log; the first event 'mysql-bin.001499' at 498476795, the last event read from '/data/binlog/mysql-bin.001502' at 274, the last byte read from '/data/binlog/mysql-bin.001502' at 274."

因为 binlog 文件已经被清理了,无法拉取到 binlog ,所以只能通过重做 task 的方式重新拉取全量上游数据恢复同步

好的,发这个贴就想看看还有没有补救措施,失望啦……心好痛……

嗯嗯,这个要不就是比对上下游数据手动进行补偿

刚刚在task上增加了参数remove-meta: true,然后把worker的relay_log改了个名字,然后start-task task,但是相同的报错信息依旧存在,这种情况是否只能修改task里面的name(但我又不太想该这个名字,因为都是按照表名来填写的)?

我现在只想在重新全量同步的时候别在打印那个报错,请问是否有办法?

query-status broker2
{
“result”: true,
“msg”: “”,
“workers”: [
{
“result”: true,x
“worker”: “x:8262”,
“msg”: “”,
“subTaskStatus”: [
{
“name”: “broker2”,
“stage”: “Running”,
“unit”: “Load”,
“result”: null,
“unresolvedDDLLockID”: “”,
“load”: {
“finishedBytes”: “1157046797”,
“totalBytes”: “18654189000”,
“progress”: “6.20 %”,
“metaBinlog”: “(mysql-bin.000016, 278675546)”
}
}
],
“relayStatus”: {
“masterBinlog”: “(mysql-bin.000016, 278675546)”,
“masterBinlogGtid”: “57136ecc-aa4f-11ea-b12b-fad8cb202900:1-607150,56b5a383-aa4f-11ea-a59e-fa2c42ff9900:1-451331”,
“relaySubDir”: “432ce6bf-b90c-11ea-97a3-fa37ff3f0600.000001”,
“relayBinlog”: “(mysql-bin.001502, 0)”,
“relayBinlogGtid”: “57136ecc-aa4f-11ea-b12b-fad8cb202900:326402-510773,432ce6bf-b90c-11ea-97a3-fa37ff3f0600:1-170,56b5a383-aa4f-11ea-a59e-fa2c42ff9900:177645-429431”,
“relayCatchUpMaster”: false,
“stage”: “Paused”,
“result”: {
“isCanceled”: false,
“errors”: [
{
“Type”: “UnknownError”,
“msg”: “”,
“error”: {
“ErrCode”: 30015,
“ErrClass”: 8,
“ErrScope”: 1,
“ErrLevel”: 3,
“Message”: “TCPReader get relay event with error: ERROR 1236 (HY000): Could not find first log file name in binary log index file”,
“RawCause”: “ERROR 1236 (HY000): Could not find first log file name in binary log index file”
}
}
],
“detail”: null
}
},
“sourceID”: “mysql-replica-06”
}

因为上游 binlog 已经被清理了,所以需要先恢复 dm-worker 拉取 binlog 的同步,可以参照以下步骤恢复