• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 1. InnoDB 소개
    2. InnoDB의 개념과 아키텍처
    3. InnoDB 구성
    4. InnoDB 관리
    5. InnoDB 테이블 스페이스 관리
    6. InnoDB 테이블 관리
    7. InnoDB 압축 테이블
    8. InnoDB 파일 형식 관리
    9. InnoDB Row Storage and Row Formats
    10. InnoDB 디스크 I/O 및 파일 영역 관리
    11. InnoDB와 온라인 DDL
    12. InnoDB 부팅 옵션 및 시스템 변수
    13. InnoDB의 성능
    14. InnoDB INFORMATION_SCHEMA 테이블
    15. InnoDB 모니터
    16. InnoDB 백업 및 복구
    17. InnoDB와 MySQL 복제
    18. InnoDB 및 memcached의 통합
    19. InnoDB 문제 해결
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

14.17 InnoDB와 MySQL 복제

MySQL 복제는 MyISAM 테이블에서 작동하는 것과 같이 InnoDB 테이블에서 작동합니다. 또한 슬레이브의 스토리지 엔진 마스터의 원래의 스토리지 엔진과 동일 않은 상황에서 복제를 사용할 수 있습니다. 예를 들어 마스터에서 InnoDB 테이블에 변경을 슬레이브에서 MyISAM 테이블에 복제 할 수 있습니다.

마스터에 새로운 슬레이브를 설정하려면 InnoDB 테이블 스페이스 및 로그 파일 이외에 InnoDB 테이블의 .frm 파일의 사본을 만들고 그 사본을 노예로 이동합니다. innodb_file_per_table 옵션이 활성화되어있는 경우 .ibd 파일도 복사합니다. 이렇게 올바른 지침은 섹션 14.16 "InnoDB 백업 및 복구" 를 참조하십시오.

마스터 또는 기존의 슬레이브를 중단하지 않고 새로운 슬레이브를 작성하려면 MySQL Enterprise Backup 제품을 사용합니다. 마스터 또는 기존의 슬레이브를 종료 할 경우, InnoDB 테이블 스페이스 및 로그 파일의 콜드 백업 을 만들고 그것을 사용하여 슬레이브를 설정합니다.

마스터에 실패한 트랜잭션 복제에 영향을주지 않습니다. MySQL 복제는 데이터를 변경하는 SQL 문을 MySQL에 의해 기록 된 바이너리 로그를 기반으로합니다. 실패한 트랜잭션 (예를 들어, 외부 키 위반으로 인해 또는 롤백되어 있기 때문에)는 바이너리 로그에 기록되지 않기 때문에 슬레이브에 전송되지 않습니다. 섹션 13.3.1 "START TRANSACTION, COMMIT 및 ROLLBACK 구문" 을 참조하십시오.

복제와 CASCADE 마스터에서 InnoDB 테이블에 대한 연쇄 작업은 외부 키 관계를 공유하는 테이블이 마스터와 슬레이브에서 InnoDB 를 사용하는 경우에만 슬레이브에 복제됩니다. 이것은 문 기반 복제 및 행 기반 복제의 어느 쪽을 사용하는 경우에도 적용됩니다. 복제를 시작한 후에 다음 CREATE TABLE 문을 사용하여 마스터에 두 테이블을 만들었다 고합니다.

 CREATE TABLE fc1 (
     i INT PRIMARY KEY,
    j INT
 ) ENGINE = InnoDB;

 CREATE TABLE fc2 (
     m INT PRIMARY KEY,
     n INT,
     FOREIGN KEY ni (n) REFERENCES fc1 (i)
         ON DELETE CASCADE
 ) ENGINE = InnoDB;

슬레이브는 InnoDB 지원이 활성화되어 있지 않다고 가정합니다. 이 경우, 슬레이브에 테이블이 만들어집니다 만, 그 테이블은 MyISAM 스토리지 엔진을 사용하여 FOREIGN KEY 옵션은 무시됩니다. 다음은 마스터 테이블에 필요한 내용을 삽입합니다.

 master> INSERT INTO fc1 VALUES (1, 1), (2, 2);
 Query OK, 2 rows affected (0.09 sec)
 Records : 2 Duplicates : 0 Warnings : 0

 master> INSERT INTO fc2 VALUES (1, 1), (2, 2), (3, 1);
 Query OK, 3 rows affected (0.19 sec)
 Records : 3 Duplicates : 0 Warnings : 0

이 시점에서 다음과 같이 마스터와 슬레이브에서 테이블 fc1 에는 두 줄이 포함 테이블 fc2 에는 3 줄이 포함되어 있습니다.

master> SELECT * FROM fc1;
+---+------+
| i | j    |
+---+------+
| 1 |    1 |
| 2 |    2 |
+---+------+
2 rows in set (0.00 sec)

master> SELECT * FROM fc2;
+---+------+
| m | n    |
+---+------+
| 1 |    1 |
| 2 |    2 |
| 3 |    1 |
+---+------+
3 rows in set (0.00 sec)

slave> SELECT * FROM fc1;
+---+------+
| i | j    |
+---+------+
| 1 |    1 |
| 2 |    2 |
+---+------+
2 rows in set (0.00 sec)

slave> SELECT * FROM fc2;
+---+------+
| m | n    |
+---+------+
| 1 |    1 |
| 2 |    2 |
| 3 |    1 |
+---+------+
3 rows in set (0.00 sec)

여기서 마스터에서 다음 DELETE 문을 실행했다고합니다.

 master> DELETE FROM fc1 WHERE i=1;
 Query OK, 1 row affected (0.09 sec)

캐스케이드 위해, 마스터 테이블 fc2 1 행만 포함되지 않습니다했습니다.

master> SELECT * FROM fc2;
+---+---+
| m | n |
+---+---+
| 2 | 2 |
+---+---+
1 row in set (0.00 sec)

그러나 슬레이브는 fc1 에 대한 DELETE 의해 fc2 에서 행이 삭제되지 않기 때문에, 캐스케이드 슬레이브에 전달되지 않습니다. 노예 fc2 사본은 계속 먼저 삽입 된 모든 행이 포함되어 있습니다.

slave> SELECT * FROM fc2;
+---+---+
| m | n |
+---+---+
| 1 | 1 |
| 3 | 1 |
| 2 | 2 |
+---+---+
3 rows in set (0.00 sec)

이러한 차이는 계단식 삭제가 실제로는 InnoDB 스토리지 엔진에서 내부적으로 처리되기 때문에오고있다. 즉, 어떤 변화가 기록되지 않습니다.

서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved