[MySQL] Replication 및 AUTO_INCREMENT
- Databases/MySQL
- 2021. 2. 14.
다음 예외를 제외하고 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;
'Databases > MySQL' 카테고리의 다른 글
[MySQL] mysql shell(mysqlsh) 설치 및 사용방법 (0) | 2021.02.17 |
---|---|
[MySQL] Sys Schema (0) | 2021.02.14 |
[MySQL] Replication 및 max_allow_packet (0) | 2021.02.14 |
[MySQL] ERROR 1290 --secure-file-priv option 장애 (0) | 2021.02.04 |
[MySQL] 복제(Replication)과 트리거(Trigger) 관계 (0) | 2021.01.26 |