Skip to content

在读取到一个binlog文件的时候出现: InvalidData: stream did not contain valid UTF-8 #36

@liuxuzxx

Description

@liuxuzxx
  1. 具体的日志信息如下:
2026-01-16T15:31:38.720029391+08:00 stderr F read mysql binlog error!: IoError(Error { kind: InvalidData, message: "stream did not contain valid UTF-8" })
  1. 代码如下:
let mut stream = client
        .connect()
        .await
        .expect("connect to mysql read binlog file error!");

    loop {
        let result = stream.read().await; //代码出现问题的地方,stream是BinlogStream类型
        match result {
            Ok((_header, data)) => match data {
                EventData::Rotate(event) => {
                  ...
                }
                EventData::TableMap(event) => {
                   ...
                }
                EventData::WriteRows(event) => {
                  ...
                }
                EventData::DeleteRows(event) => {
                    ...
                }
                EventData::UpdateRows(event) => {
                    ...
                }
                EventData::NotSupported => {
                    ...
                },
                ......其他的事件类型处理
            },
            Err(err) => {
                panic!("read mysql binlog error:{:?}", err);//报错的就是这样抛出来的
            }
        }
    }

背景:

在这个错误之前,服务已经稳定运行了: 大概200天,大概每天处理: 1000个左右的binlog文件. 一共稳定处理了: 20w个.但是在处理这个错误的binlog的文件的时候,从新处理还是不行,尝试了5次,每次都是在同一个position出现问题.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions