17.4.1.34 복제 및 변수
시스템 변수는 다음 변수를 제외 (세션 범위에서 사용될 때), STATEMENT
모드 사용시 제대로 복제되지 않습니다.
auto_increment_increment
auto_increment_offset
character_set_client
character_set_connection
character_set_database
character_set_server
collation_connection
collation_database
collation_server
foreign_key_checks
identity
last_insert_id
lc_time_names
pseudo_thread_id
sql_auto_is_null
time_zone
timestamp
unique_checks
MIXED
모드 사용시 위의 목록에서 변수가 세션 범위에서 사용될 때 명령문 기반에서 행 기반 로깅로 전환됩니다. 섹션 5.2.4.3 "혼합 형식의 바이너리 로깅 형식" 을 참조하십시오.
NO_DIR_IN_CREATE
모드의 경우를 제외하고 sql_mode
도 복제됩니다. 슬레이브는 항상 NO_DIR_IN_CREATE
에 그 자신의 가치를 유지합니다 (마스터에서 변경에 관계없이). 이것은 모든 복제 형식에 적용됩니다.
그러나 mysqlbinlog가 SET @@sql_mode =
문을 분석 할 때, mode
NO_DIR_IN_CREATE
을 포함한 전체 mode
값이 수신 서버에 전달됩니다. 따라서 이러한 문 복제는 STATEMENT
모드 사용시 안전하지 않을 수 있습니다.
default_storage_engine
및 storage_engine
시스템 변수는 로깅 모드에 관계없이 복제되지 않습니다. 이것은 서로 다른 스토리지 엔진 간의 복제를 용이하게하기위한 것입니다.
read_only
시스템 변수는 복제되지 않습니다. 또한이 변수를 사용하면 임시 테이블, 테이블 잠금 및 SET PASSWORD
명령문에 대한 효과는 MySQL 버전에 따라 다릅니다.
max_heap_table_size
시스템 변수는 복제되지 않습니다. 슬레이브에서이 변수의 값을 늘리지 않고 마스터에서 늘리면 결국 슬레이브에서 Table is full 오류가 발생할 수 있습니다 (슬레이브 대응하는 것보다 커질 수 허용 된 마스터에서 MEMORY
테이블에서 INSERT
문을 실행하려고 할 때). 자세한 내용은 섹션 17.4.1.21 "복제 및 MEMORY 테이블" 을 참조하십시오.
문 기반 복제 세션 변수는 테이블을 업데이트하는 명령문에서 사용할 때 제대로 복제되지 않습니다. 예를 들어, 다음 순서의 문은 마스터와 슬레이브로 동일한 데이터를 삽입하지 않습니다.
SET max_join_size = 1000; INSERT INTO mytable VALUES (@@ max_join_size);
이것은 일반적인 순서에는 적용되지 않습니다.
SET time_zone = ...; INSERT INTO mytable VALUES (CONVERT_TZ (..., ..., @@ time_zone));
세션 변수의 복제는 열 기반 리플리케이션을 사용하는 경우에는 문제가 없습니다. 이 경우, 세션 변수는 항상 안전하게 복제됩니다. 섹션 17.1.2 "복제 형식" 을 참조하십시오.
MySQL 5.6에서는 다음의 세션 변수는 로깅 형식에 관계없이 바이너리 로그에 기록 된 바이너리 로그를 분석 할 때 리플리케이션에 의해 허용됩니다.
sql_mode
foreign_key_checks
unique_checks
character_set_client
collation_connection
collation_database
collation_server
sql_auto_is_null
문자 셋과 콜레 션에 관련된 세션 변수는 바이너리 로그에 기록 되더라도, 다른 문자 집합 사이의 복제는 지원되지 않습니다.
혼란의 가능성을 줄이기 위해 마스터와 슬레이브에서 lower_case_table_names
시스템 변수에 항상 동일한 설정을 사용하는 것이 좋습니다 (특히 파일 시스템이 대소 문자를 구별 플랫폼에서 MySQL을 실행하는 경우 ).
이전 버전의 MySQL에서 대소 문자를 구분하는 파일 시스템을 사용하는 경우이 변수를 슬레이브로 1 마스터에서 다른 값으로 설정하면 복제가 실패 할 수있었습니다. 이 문제는 MySQL 5.6.1에서 해결되고 있습니다. (Bug # 37656)