현상
mysqlbinlog 또는 mysqldump 시에 아래와 같은 에러가 발생할 수 있습니다.
원인
MySQL 5.5.3 부터 default-character-set 이라는 옵션이 없어졌기 때문입니다.
mysqlbinlog 프로그램은 기본적으로 my.cnf 를 읽게 되어 있는데 여기에 default-character-set 설정이 있었기 때문에 해당 변수를 이해하지 못하기 때문에 발생합니다.
5.5.3 Release Note : https://dev.mysql.com/doc/relnotes/mysql/5.5/en/news-5-5-3.html
해결방법
방법(1) --no-defaults 옵션 사용
이것은 기본적으로 읽어들이는 my.cnf 를 무시하여 my.cnf 에 명시된 잘못된 character-set 설정을 읽지 않도록하여 상황을 회피하기 위한 옵션입니다. 하지만 원인을 해결한 것은 아닙니다.
방법(2) default-character-set=utf8 제거 character-set-server=utf8 추가
5.5.3 부터는 my.cnf 에 default-character-set 옵션이 불필요하도록 변경되었습니다.
아래와 같이 [mysqld] 부분에 character-set-server 만 설정해주면 됩니다.
기타
추가로 더 살펴보면 MySQL 5.5.3 부터 utf8mb4 가 추가된 것을 알 수 있고 utf16, utf32 도 추가되었습니다.
그리고 performance_schema 도 추가되었고 show engine innodb status 명령어도 이 때 굳어졌습니다.
이 버전에서 캐릭터셋에 대한 중요한 변화들을 포함하여 많은 변화가 있었던 시점이었던 것 같습니다.
또하나 대단한 것은 2009년 12월에 처음 시작된 Release Note 가 2019년인 현재까지 이어져 있습니다. RC 버전까지 더하면 10년 이상을 새로운 버전(5.6, 5.7)의 주요 변경을 반영하여 호환성 맞추거나 버그를 fix 하여 사용자를 위해 계속 힘써왔다고 보여집니다.
참고자료