본문 바로가기

[DataBase]/DB

mysqlbinlog 에러

반응형

mysqlbinlog에러

이전 포스팅에서 mysql 또는 mariadb의 백업파일이 없을 때 복구하는 포스팅을 작성한적이 있다.
https://ppoble.tistory.com/56
설정한 기간동안 바이너리 파일들이 저장되고있으니 해당 기간에는 쿼리를 복원이 가능하다는 내용이었는데.
해당 내용으로 다른 시스템에서 복구를 할일이 있었는데 다음과 같은 에러가 발생했다.

ERROR: Error in Log_event::read_log_event(): 'Sanity check failed', data_len: 43, event_type: -93
ERROR: Could not read entry at offset 256: Error in log format or read error.

엥 이건 또 뭔소리야. 로그파일이 깨졌나? 로그파일이 사용중인가? 생각해서 여러 시도를 해봤는데 정답을 찾지 못했었다.
그러던중 mysql 버전이 다르다는 글을 접할 수가 있었다. 무슨말이냐면 지금 서비스중인 mysql내가 지금 쓰는 명령어인 mysqlbinlog의 버전이 서로 다르다는 뜻이다.
이전에 mysql을 설치했었고 그 뒤에 다른 버전을 추가로 설치했었던 상황이었던것이다.
그래서 다른 버전의 경로를 찾아가서 직접 실행시켜주었다.

기존

mysqlbinlog mysql-bin.000001 > output.sql

이 때의 mysqlbinglog의 위치는 /usr/bin/mysqlbinlog였었다.(which mysql로 확인이 가능하다.)

변경

/usr/local/mariadb-10.6.8-linux-systemd-x86_64/bin/mysqlbinlog mysql-bin.000001 > output.sql

/usr/local/mariadb-10.6.8-linux-systemd-x86_64/bin/mysqlbinlog경로에 있는 mysqlbinlog로 실행을 해야하는것이다..

이렇게 진행해서 문제 없이 되었고 앞으로 편하게 쓰기위해 mysqlbinlog의 환경변수를 바꿔주는작업으로 마무리했다.

반응형