mysqlbinlog 에러 Error in Log_event::read_log_event(): ‘Found invalid event in binary log’ 처리방법

환경 : Mysql 5.0.96

Mysql 5.0.96버전을 사용하고 있는데 DB 복구 및 리플리케이션을 위해 binlog를 읽어 보았더니 다음과 같은 오류가 나면서 읽어지지 않는다. 물론 리플리케이션도 안된다.

/usr/local/mysql/bin/mysqlbinlog bin-log.000007 > /dev/null
ERROR: Error in Log_event::read_log_event(): 'read error', data_len: 131668, event_type: 102

해결방법

DB를 종료할 수 없다면, root 권한으로 다음과 같이 입력한다.

set global lc_time_names='ko_KR';
flush logs;

DB 재시작시 자동 설정되게 my.cnf에 다음 내용 추가한다.

lc_time_names="ko_KR"

원인 및 설명

쿼리중 now()등 시간 관련 함수를 사용하는 경우,bin로그에 이상한 내용이 기록되면서 읽을 수 없게 된다.

MySQL 5.0.xx 버전의 문제라고 해서 하위 버전 설치했지만, 동일한 문제가 발생했다. 일부 사용자들 중에는 5.0.92 버전을 설치하면 이상 없다고 한다. 하지만 필자와 같은 에러 메시지 증상을 경험한 사람들이 존재한다.

다음 내용을 보면 확인가능하다.

show global variables like '%time%';
+----------------------------+-------------------+
| Variable_name              | Value             |
+----------------------------+-------------------+
| connect_timeout            | 10                | 
| datetime_format            | %Y-%m-%d %H:%i:%s | 
| delayed_insert_timeout     | 300               | 
| flush_time                 | 0                 | 
| innodb_lock_wait_timeout   | 60                | 
| innodb_rollback_on_timeout | OFF               | 
| interactive_timeout        | 28800             | 
| lc_time_names              | en_US             | 
| long_query_time            | 5                 | 
| net_read_timeout           | 30                | 
| net_write_timeout          | 60                | 
| slave_net_timeout          | 3600              | 
| slow_launch_time           | 2                 | 
| system_time_zone           | KST               | 
| table_lock_wait_timeout    | 50                | 
| time_format                | %H:%i:%s          | 
| time_zone                  | SYSTEM            | 
| timed_mutexes              | OFF               | 
| wait_timeout               | 120               | 
+----------------------------+-------------------+

time zone은 KST인데, lc_time_names는 영어(en_US)이다. 한국어(ko_KR)으로 변경하니 이러한 문제가 사라졌다.

TIP!

시간함수를 사용할 경우에도 마찬가지로 정상적으로 적용이 안되는 경에도 마찬가지로 문제가 생긴다.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다