Amazon Relational Database Service
사용 설명서 (API 버전 2014-10-31)

Amazon RDS MySQL용 GTID 기반 복제 사용

전역 트랜잭션 ID(GTIDs) are unique identifiers generated for committed MySQL transactions. MySQL은 복제에 다음 두 가지 유형의 트랜잭션을 사용합니다.

  • GTID 트랜잭션 – GTID로 식별되는 트랜잭션.

  • 익명 트랜잭션 – GTID가 할당되지 않은 트랜잭션.

복제 구성의 GTID는 모든 DB 인스턴스에서 고유합니다. GTID를 사용하면 로그 파일 위치를 참조할 필요가 없기 때문에 복제 구성이 간편해집니다. 또한 GTID를 사용하면 복제된 트랜잭션을 추적하고 마스터 및 복제본이 일치하는지를 쉽게 확인할 수 있습니다.

GTID 기반 복제를 사용하여 Amazon RDS MySQL 읽기 전용 복제본 또는 외부 MySQL 데이터베이스로 데이터를 복제할 수 있습니다. Amazon RDS MySQL 읽기 전용 복제본의 경우 읽기 전용 복제본을 새로 만들 때 GTID 기반 복제를 구성할 수 있습니다. 또는 기존 읽기 전용 복제본을 GTID 기반 복제를 사용하도록 변환할 수 있습니다.

Amazon RDS MySQL을 사용하여 지역 복제 구성에서 GTID 기반 복제를 사용할 수도 있습니다. 자세한 내용은 MySQL을 사용한 지연 복제 구성 단원을 참조하십시오.

MySQL을 사용한 GTID 기반 복제에 대한 자세한 내용은 MySQL 설명서에서 전역 트랜잭션 ID를 사용한 복제를 참조하십시오.

참고

GTID 기반 복제는 Amazon RDS MySQL 버전 5.7.23 및 이후 MySQL 5.7 버전에서 지원됩니다. 복제 구성의 모든 Amazon RDS MySQL DB 인스턴스가 이 요구 사항을 충족해야 합니다. Amazon RDS MySQL 5.5, 5.6, 8.0에서는 GTID 기반 복제가 지원되지 않습니다.

참고

외부 데이터베이스로의 GTID 기반 복제를 구성하는 방법에 대한 자세한 내용은 Amazon RDS 외부에서 실행 중인 MySQL 또는 MariaDB 인스턴스를 사용한 복제 단원을 참조하십시오.

GTID 기반 복제 파라미터

다음 파라미터를 사용하여 GTID 기반 복제를 구성할 수 있습니다.

파라미터 유효한 값 설명

gtid_mode

OFF, OFF_PERMISSIVE, ON_PERMISSIVE, ON

OFF는 새 트랜잭션을 익명 트랜잭션(GTID가 없음)으로 지정하며, 트랜잭션을 복제하려면 익명이어야 합니다.

OFF_PERMISSIVE는 새 트랜잭션을 익명 트랜잭션(GTID가 없음)으로 지정하지만, 모든 트랜잭션을 복제할 수 있습니다.

ON_PERMISSIVE는 새 트랜잭션을 GTID 트랜잭션으로 지정하지만, 모든 트랜잭션을 복제할 수 있습니다.

ON은 새 트랜잭션을 GTID 트랜잭션으로 지정하고, 트랜잭션을 복제하려면 GTID 트랜잭션이어야 합니다.

enforce_gtid_consistency

OFF, ON, WARN

OFF는 트랜잭션이 GTID 일관성을 위반하는 것을 허용합니다.

ON은 트랜잭션이 GTID 일관성을 위반하지 않도록 합니다.

WARN은 트랜잭션이 GTID 일관성을 위반하는 것을 허용하지만, 위반이 발생할 경우 경고를 생성합니다.

Amazon RDS MySQL DB 인스턴스 또는 읽기 전용 복제본에 GTID 기반 복제를 사용하려면 DB 인스턴스 또는 읽기 전용 복제본의 파라미터 그룹에서 이러한 파라미터가 GTID 기반 복제를 활성화하도록 설정되었는지 확인하십시오. 파라미터 그룹에 대한 자세한 내용은 DB 파라미터 그룹 작업 단원을 참조하십시오.

참고

AWS Management 콘솔 콘솔에서 gtid_mode 파라미터는 gtid-mode로 표시됩니다.

새 읽기 전용 복제본에 대한 GTID 기반 복제 구성

Amazon RDS MySQL DB 인스턴스에 대해 GTID 기반 복제를 활성화하면 DB 인스턴스의 읽기 전용 복제본에 대해 GTID 기반 복제가 자동으로 구성됩니다.

새 읽기 전용 복제본에 대해 GTID 기반 복제를 활성화하려면

  1. DB 인스턴스와 연결된 파라미터 그룹에서 다음과 같이 파라미터가 설정되어 있는지 확인합니다.

    • gtid_modeON 또는 ON_PERMISSIVE

    • enforce_gtid_consistencyON

    파라미터 그룹에 대한 자세한 내용은 DB 파라미터 그룹 작업 단원을 참조하십시오.

  2. DB 인스턴스의 파라미터 그룹을 변경한 경우 DB 인스턴스를 재부팅하십시오. 이 작업을 수행하는 방법에 대한 자세한 내용은 DB 클러스터에서 DB 인스턴스 단원을 참조하십시오.

  3. DB 인스턴스의 읽기 전용 복제본을 한 개 이상 만듭니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 읽기 전용 복제본 만들기 단원을 참조하십시오.

Amazon RDS는 MASTER_AUTO_POSITION를 사용하여 MySQL DB 인스턴스와 읽기 전용 복제본 간에 GTID 기본 복제를 설정하려고 시도합니다. 이 시도가 실행할 경우 Amazon RDS는 읽기 전용 복제본으로의 복제에 로그 파일 위치를 사용합니다. MASTER_AUTO_POSITION에 대한 자세한 내용은 MySQL 설명서에서 GTID 자동 배치를 참조하십시오.

기존 읽기 전용 복제본에 대한 GTID 기반 복제 구성

읽기 전용 복제본을 포함하는 Amazon RDS MySQL DB 인스턴스가 있고 데이터가 GTID 기반 복제를 사용하여 복제되고 있지 않는 경우, DB 인스턴스와 읽기 전용 복제본 간에 GTID 기반 복제를 구성할 수 있습니다.

기존 읽기 전용 복제본에 대해 GTID 기반 복제를 활성화하려면

  1. DB 인스턴스 또는 읽기 전용 복제본이 Amazon RDS MySQL 버전 5.7.22 이하를 사용하는 경우 DB 인스턴스 또는 읽기 전용 복제본을 Amazon RDS MySQL 버전 5.7.23 또는 이후 MySQL 5.7 버전으로 업그레이드하십시오.

    자세한 내용은 MySQL DB 엔진 업그레이드 단원을 참조하십시오.

  2. (선택 사항) GTID 파라미터를 재설정하고 DB 인스턴스와 읽기 전용 복제본의 동작을 테스트합니다.

    1. DB 인스턴스 및 각 읽기 전용 복제본과 연결된 파라미터 그룹에서 enforce_gtid_consistency 파라미터가 WARN으로 설정되어 있는지 확인합니다.

      파라미터 그룹에 대한 자세한 내용은 DB 파라미터 그룹 작업 단원을 참조하십시오.

    2. DB 인스턴스의 파라미터 그룹을 변경한 경우 DB 인스턴스를 재부팅하십시오. 읽기 전용 복제본의 파라미터 그룹을 변경한 경우 읽기 전용 복제본을 재부팅하십시오.

      자세한 내용은 DB 클러스터에서 DB 인스턴스 단원을 참조하십시오.

    3. 보통의 워크로드로 DB 인스턴스와 읽기 전용 복제본을 실행하고 로그 파일을 모니터링합니다.

      GTID 비호환 트랜잭션에 대한 경고가 표시될 경우, GTID 호환 기능만 사용하도록 애플리케이션을 조정하십시오. 다음 단계로 진행하기 전에 DB 인스턴스에서 GTID 비호환 트랜잭션에 대한 경고가 표시되지 않는지 확인합니다.

  3. 읽기 전용 복제본이 모든 트랜잭션을 처리할 때까지 익명 트랜잭션을 허용하는 GTID 기반 복제에 대한 GTID 파라미터를 재설정합니다.

    1. DB 인스턴스 및 각 읽기 전용 복제본과 연결된 파라미터 그룹에서 다음과 같이 파라미터가 설정되었는지 확인합니다.

      • gtid_modeON_PERMISSIVE

      • enforce_gtid_consistencyON

    2. DB 인스턴스의 파라미터 그룹을 변경한 경우 DB 인스턴스를 재부팅하십시오. 읽기 전용 복제본의 파라미터 그룹을 변경한 경우 읽기 전용 복제본을 재부팅하십시오.

  4. 익명 트랜잭션이 모두 복제될 때까지 기다립니다. 이러한 트랜잭션이 복제되었는지 확인하려면 다음과 같이 합니다.

    1. 기본 DB 인스턴스에서 다음 명령문을 실행합니다.

      SHOW MASTER STATUS;

      FilePosition 열의 값을 메모합니다.

    2. 각 읽기 전용 복제본에서 이전 단계에서 메모한 마스터의 파일 및 위치 정보를 사용하여 다음 쿼리를 실행합니다.

      SELECT MASTER_POS_WAIT(file, position);

      예를 들어, 파일 이름이 mysql-bin-changelog.000031이고 위치가 107일 경우 다음 명령문을 실행합니다.

      SELECT MASTER_POS_WAIT(mysql-bin-changelog.000031, 107);

      읽기 전용 복제본이 지정된 위치에 전달되면 쿼리가 즉시 반환합니다. 그렇지 않으면 함수가 대기합니다. 모든 읽기 전용 복제본에 대해 쿼리가 반환하면 다음 단계로 진행합니다.

  5. GTID 기반 복제에 대해서만 GTID 파라미터를 재설정합니다.

    1. DB 인스턴스 및 각 읽기 전용 복제본과 연결된 파라미터 그룹에서 다음과 같이 파라미터가 설정되었는지 확인합니다.

      • gtid_modeON

      • enforce_gtid_consistencyON

    2. DB 인스턴스와 각 읽기 전용 복제본을 재부팅합니다.

  6. 각각의 읽기 전용 복제본에서 다음 프로시저를 실행합니다.

    CALL mysql.rds_set_master_auto_position(1);

읽기 전용 복제본을 사용하는 Amazon RDS MySQL DB 인스턴스에 대해 GTID 기반 복제 비활성화

읽기 전용 복제본을 사용하는 Amazon RDS MySQL DB 인스턴스에 대해 GTID 기반 복제를 비활성화할 수 있습니다.

읽기 전용 복제본을 사용하는 RDS MySQL DB 인스턴스에 대해 GTID 기반 복제를 비활성화하려면

  1. 각각의 읽기 전용 복제본에서 다음 프로시저를 실행합니다.

    CALL mysql.rds_set_master_auto_position(0);
  2. gtid_modeON_PERMISSIVE로 재설정합니다.

    1. Amazon RDS MySQL DB 인스턴스 및 각 읽기 전용 복제본과 연결된 파라미터 그룹에서 gtid_mode 파라미터가 ON_PERMISSIVE으로 설정되어 있는지 확인합니다.

      파라미터 그룹에 대한 자세한 내용은 DB 파라미터 그룹 작업 단원을 참조하십시오.

    2. Amazon RDS MySQL DB 인스턴스와 각 읽기 전용 복제본을 재부팅합니다. 재부팅에 대한 자세한 내용은 DB 클러스터에서 DB 인스턴스 단원을 참조하십시오.

  3. gtid_modeOFF_PERMISSIVE로 재설정합니다.

    1. Amazon RDS MySQL DB 인스턴스 및 각 읽기 전용 복제본과 연결된 파라미터 그룹에서 gtid_mode 파라미터가 OFF_PERMISSIVE으로 설정되어 있는지 확인합니다.

    2. Amazon RDS MySQL DB 인스턴스와 각 읽기 전용 복제본을 재부팅합니다.

  4. 모든 읽기 전용 복제본에서 모든 GTID 트랜잭션이 적용될 때까지 기다립니다. 이러한 트랜잭션이 적용되었는지 확인하려면 다음과 같이 합니다.

    1. Amazon RDS MySQL DB 인스턴스에서 SHOW MASTER STATUS 명령을 실행합니다.

      다음과 같은 출력이 표시됩니다.

      File Position ------------------------------------ mysql-bin-changelog.000031 107 ------------------------------------

      출력에서 파일 및 위치를 메모합니다.

    2. 각 읽기 전용 복제본에서 이전 단계에서 메모한 마스터의 파일 및 위치 정보를 사용하여 다음 쿼리를 실행합니다.

      SELECT MASTER_POS_WAIT(file, position);

      예를 들어, 파일 이름이 mysql-bin-changelog.000031이고 위치가 107일 경우 다음 명령문을 실행합니다.

      SELECT MASTER_POS_WAIT(mysql-bin-changelog.000031, 107);

      읽기 전용 복제본이 지정된 위치에 전달되면 쿼리가 즉시 반환합니다. 그렇지 않으면 함수가 대기합니다. 모든 읽기 전용 복제본에 대해 쿼리가 반환하면 다음 단계로 진행합니다.

  5. GTID 기반 복제를 비활성화하도록 GTID 파라미터를 재설정합니다.

    1. Amazon RDS MySQL DB 인스턴스 및 각 읽기 전용 복제본과 연결된 파라미터 그룹에서 다음과 같이 파라미터가 설정되었는지 확인합니다.

      • gtid_modeOFF

      • enforce_gtid_consistencyOFF

    2. Amazon RDS MySQL DB 인스턴스와 각 읽기 전용 복제본을 재부팅합니다.