[MySQL] Replication 및 AUTO_INCREMENT

다음 예외를 제외하고 AUTO_INCREMENT, LAST_INSERT_ID () TIMESTAMP 값의 기반 복제가 올바르게 수행됩니다.

MySQL 5.7.1 이전의 기반 복제를 사용하는 경우 복제본의 테이블에있는 AUTO_INCREMENT 열은 소스의 동일한 열과 일치해야합니다. , AUTO_INCREMENT 열은 AUTO_INCREMENT 열에 복제되어야합니다.

 

• AUTO_INCREMENT 열을 업데이트하는 트리거 또는 함수를 호출하는 문은 기반 복제를 사용하여 올바르게 복제되지 않습니다. 이러한 진술은 안전하지 않은 것으로 표시됩니다.

 

복합 키의 번째 열이 아닌 AUTO_INCREMENT 열을 포함하는 복합 기본 키가있는 테이블에 대한 INSERT 기반 로깅 또는 복제에 안전하지 않습니다. 이러한 진술은 안전하지 않은 것으로 표시됩니다. (버그 # 11754117, 버그 # 45670)

 

• AUTO_INCREMENT 열이있는 InnoDB 테이블에는 자동 증가 열이 유일한 또는 가장 왼쪽 열인 키가 하나 이상 필요하기 때문에이 문제는 InnoDB 스토리지 엔진을 사용하는 테이블에 영향을주지 않습니다.

 

• ALTER TABLE이있는 테이블에 AUTO_INCREMENT 열을 추가하면 복제본과 소스에서 순서가 동일하지 않을 있습니다. 이는 번호가 매겨지는 순서가 테이블에 사용 특정 스토리지 엔진과 행이 삽입 순서에 따라 달라지기 때문에 발생합니다. 소스와 복제본에서 동일한 순서를 갖는 것이 중요한 경우 AUTO_INCREMENT 번호를 할당하기 전에 행을 정렬해야합니다. col1 col2 열이있는 테이블 t1 AUTO_INCREMENT 열을 추가한다고 가정하면 다음 문은 t1 동일하지만 AUTO_INCREMENT 열이있는 테이블 t2 생성합니다.

CREATE TABLE t2 LIKE t1;
ALTER TABLE t2 ADD id INT AUTO_INCREMENT PRIMARY KEY;
INSERT INTO t2 SELECT * FROM t1 ORDER BY col1, col2;

 

방금 제공된 지침에는 CREATE TABLE ... LIKE 제한 사항이 적용됩니다. DATA DIRECTORY INDEX DIRECTORY 테이블 옵션과 마찬가지로 외래 정의가 무시됩니다. 테이블 정의에 이러한 특성이 포함 경우 t1 만드는 사용 것과 동일하지만 AUTO_INCREMENT 열을 추가하여 CREATE TABLE 문을 사용하여 t2 만듭니다.

 

AUTO_INCREMENT 열이있는 복사본을 만들고 채우는 사용 방법에 관계없이 마지막 단계는 원본 테이블을 삭제 다음 복사본의 이름을 바꾸는 것입니다.

DROP t1;
ALTER TABLE t2 RENAME t1;

Designed by JB FACTORY