17.1.4.2 Replication 마스터 옵션 및 변수
이 섹션에서는 복제 마스터 서버에서 사용할 수있는 서버 옵션 및 시스템 변수에 대해 설명합니다. 옵션은 명령 행 또는 옵션 파일 에서 지정할 수 있습니다. 시스템 변수 값은SET
을 사용하여 지정할 수 있습니다. 마스터와 각 슬레이브는 server-id
옵션을 사용하여 고유 복제 ID를 설정해야합니다. 서버마다 고유 한 양의 정수를 1에서 2 32 - 1의 범위에서 선택하십시오. 각 ID는 다른 복제 마스터 또는 슬레이브가 사용하는 다른 모든 ID와 달라야합니다. 예 : server-id=3
.
바이너리 로깅을 제어하기 위해 마스터에서 사용되는 옵션은 섹션 17.1.4.4 "바이너리 로그 옵션과 변수" 를 참조하십시오.
복제 마스터로 사용되는 시스템 변수
다음 시스템 변수는 복제 마스터를 제어하는 데 사용됩니다.
auto_increment_increment
System Variable Name auto_increment_increment
Variable Scope Global, Session Dynamic Variable Yes Permitted Values Type integer
Default 1
Min Value 1
Max Value 65535
auto_increment_increment
및auto_increment_offset
마스터에서 마스터에 복제에 사용하기위한 것으로,AUTO_INCREMENT
컬럼의 동작을 제어하는 데 사용할 수 있습니다. 두 변수는 글로벌 값과 세션 값을 가지며 각 값은 1에서 65,535 (1 65,535 포함) 사이의 정수 값을 취할 수 있습니다. 이러한 두 변수 중 하나의 값을 0으로 설정하면 대신 그 값은 1로 설정됩니다. 이러한 두 변수 중 하나의 값을 65,535보다 큰 정수 또는 0보다 작은 정수로 설정하려고하면 대신 그 값은 65,535로 설정됩니다.auto_increment_increment
또는auto_increment_offset
값을 정수가 아닌 값으로 설정하려고하면 오류가 발생하고 변수의 실제 값은 변화하지 않습니다.참고auto_increment_increment
는NDB
테이블에서 사용하는 경우에도 지원됩니다.이 두 변수는 다음과 같이
AUTO_INCREMENT
컬럼의 동작에 영향을줍니다.auto_increment_increment
는 연속 된 컬럼 값의 간격을 제어합니다. 예 :mysql>
SHOW VARIABLES LIKE 'auto_inc%';
+--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | auto_increment_increment | 1 | | auto_increment_offset | 1 | +--------------------------+-------+ 2 rows in set (0.00 sec) mysql>CREATE TABLE autoinc1
->(col INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
Query OK, 0 rows affected (0.04 sec) mysql>SET @@auto_increment_increment=10;
Query OK, 0 rows affected (0.00 sec) mysql>SHOW VARIABLES LIKE 'auto_inc%';
+--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | auto_increment_increment | 10 | | auto_increment_offset | 1 | +--------------------------+-------+ 2 rows in set (0.01 sec) mysql>INSERT INTO autoinc1 VALUES (NULL), (NULL), (NULL), (NULL);
Query OK, 4 rows affected (0.00 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql>SELECT col FROM autoinc1;
+-----+ | col | +-----+ | 1 | | 11 | | 21 | | 31 | +-----+ 4 rows in set (0.00 sec)auto_increment_offset
는AUTO_INCREMENT
컬럼 값의 시작점을 지정합니다. 다음의 것은auto_increment_increment
의 기술로 예와 같이 동일한 세션 동안 이러한 명령문이 실행된다고 가정합니다.mysql>
SET @@auto_increment_offset=5;
Query OK, 0 rows affected (0.00 sec) mysql>SHOW VARIABLES LIKE 'auto_inc%';
+--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | auto_increment_increment | 10 | | auto_increment_offset | 5 | +--------------------------+-------+ 2 rows in set (0.00 sec) mysql>CREATE TABLE autoinc2
->(col INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
Query OK, 0 rows affected (0.06 sec) mysql>INSERT INTO autoinc2 VALUES (NULL), (NULL), (NULL), (NULL);
Query OK, 4 rows affected (0.00 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql>SELECT col FROM autoinc2;
+-----+ | col | +-----+ | 5 | | 15 | | 25 | | 35 | +-----+ 4 rows in set (0.02 sec)auto_increment_offset
값이auto_increment_increment
값보다 크면auto_increment_offset
값은 무시됩니다.이러한 변수 중 하나가 변경된 후
AUTO_INCREMENT
컬럼을 포함하는 테이블에 새로운 행이 삽입되는 경우, 결과는 반 직관적으로 보일 수 있습니다.AUTO_INCREMENT
값 시리즈는 컬럼에 이미 존재하는 값에 관계없이 계산되어 삽입되는 다음 값이AUTO_INCREMENT
컬럼에있는 최대 값보다 큰 시리즈에 최소이기 때문입니다. 시리즈는 다음과 같이 계산됩니다.auto_increment_offset
+N
×auto_increment_increment
여기서
N
은 시리즈에서 양의 정수 [1, 2, 3, ...]입니다. 예 :
mysql>
SHOW VARIABLES LIKE 'auto_inc%';
+--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | auto_increment_increment | 10 | | auto_increment_offset | 5 | +--------------------------+-------+ 2 rows in set (0.00 sec) mysql>SELECT col FROM autoinc1;
+-----+ | col | +-----+ | 1 | | 11 | | 21 | | 31 | +-----+ 4 rows in set (0.00 sec) mysql>INSERT INTO autoinc1 VALUES (NULL), (NULL), (NULL), (NULL);
Query OK, 4 rows affected (0.00 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql>SELECT col FROM autoinc1;
+-----+ | col | +-----+ | 1 | | 11 | | 21 | | 31 | | 35 | | 45 | | 55 | | 65 | +-----+ 8 rows in set (0.00 sec)auto_increment_increment
과auto_increment_offset
에 표시된 값은 시리즈 5 +N
× 10, 즉 [5, 15, 25, 35, 45, ...을 생성합니다.INSERT
이전에col
컬럼에있는 최대 값은 31,AUTO_INCREMENT
시리즈에서 사용 가능한 다음 값은 35이므로,col
에 삽입되는 값은 그 지점에서 시작, 결과는SELECT
쿼리로 나타나는 것입니다 .이러한 두 변수의 영향을 단일 테이블로 제한 할 수 없습니다. 이 변수는 MySQL 서버의 모든 테이블의 모든
AUTO_INCREMENT
컬럼의 동작을 제어합니다. 어느 변수의 전역 값이 설정되면 글로벌 값이 변경되거나 세션 값의 설정에 의해 재정의 될 때까지 또는 mysqld가 다시 시작될 때까지 그 효과가 지속됩니다. 로컬 값이 설정되면 새 값은 세션 기간에 현재 사용자가 새 행을 삽입 한 모든 테이블의AUTO_INCREMENT
컬럼에 영향을줍니다 (그 세션 동안 그 값이 변경되는 경우를 제외 ).auto_increment_increment
의 기본값은 1입니다. 섹션 17.4.1.1 "복제 및 AUTO_INCREMENT" 를 참조하십시오.auto_increment_offset
System Variable Name auto_increment_offset
Variable Scope Global, Session Dynamic Variable Yes Permitted Values Type integer
Default 1
Min Value 1
Max Value 65535
auto_increment_increment
의 설명을 참조하십시오.참고auto_increment_offset
는NDB
테이블에서 사용하는 경우에도 지원됩니다.