17.4.1.3 Replication and Character Sets
다음 사항은 다른 문자 집합을 사용하는 MySQL 서버 간 복제에 적용됩니다.
마스터가 MySQL 4.1를 사용하는 경우, 슬레이브 MySQL 버전에 관계없이 마스터와 슬레이브에서 항상 동일한 글로벌 문자 집합 및 정렬 순서를 사용해야합니다. (이들은
--character-set-server
및--collation-server
옵션으로 제어됩니다.) 그렇지 않은 경우 슬레이브로 중복 키 오류가 발생할 수 있습니다. 마스터 문자 집합에서 고유 키가 슬레이브 문자 집합에서 고유하지 않은 경우가 있기 때문입니다. 마스터와 슬레이브가 모두 MySQL 5.0 이상 일 때, 이것은 걱정거리가되지 않습니다.마스터가 MySQL 4.1.3 이전의 경우 클라이언트 문자 집합을 글로벌 값과 달라야는 안됩니다. 이 캐릭터 세트의 변경은 노예로 인식되지 않기 때문입니다. 즉, 클라이언트는
SET NAMES
,SET CHARACTER SET
등을 사용하지 마십시오. 마스터와 슬레이브 모두가 4.1.3 이상이면 클라이언트 문자 집합 변수의 세션 값을 자유롭게 설정할 수 있습니다. 이러한 설정이 바이너리 로그에 기록되기 때문에 노예로 인식되기 때문입니다. 즉, 클라이언트는SET NAMES
또는SET CHARACTER SET
을 사용하거나collation_client
과collation_server
등의 변수를 설정할 수 있습니다. 그러나 클라이언트는 이러한 변수의 전역 값을 변경할 수 없습니다. 전술 한 바와 같이, 마스터와 슬레이브는 항상 동일한 글로벌 문자 세트 값을 사용해야합니다. 이것은 문 기반 복제 및 행 기반 복제의 어느 쪽을 사용하는 경우에도 적용됩니다.마스터 데이터베이스 문자 집합이 글로벌
character_set_server
값과 다를 데이터베이스의 디폴트 캐릭터 세트를 암시 적으로 신뢰하지 않도록CREATE TABLE
문을 설계하십시오. 권장되는 해결 방법은CREATE TABLE
문에 명시 적으로 문자 셋과 콜레 션을 지정하는 것입니다.