Aurora MySQL에 GTID 기반 복제 사용 - Amazon Aurora

Aurora MySQL에 GTID 기반 복제 사용

아래에서는 Aurora MySQL 클러스터와 외부 소스 간 이진 로그(binlog) 복제를 통해 전역 트랜잭션 식별자(GTID)를 사용하는 방법을 배울 수 있습니다.

참고

Aurora의 경우 외부 MySQL 데이터베이스로 또는 외부 MySQL 데이터베이스로부터 binlog 복제를 사용하는 Aurora MySQL 클러스터에서만 이 기능을 사용할 수 있습니다. 다른 데이터베이스는 Amazon RDS MySQL 인스턴스, 온프레미스 MySQL 데이터베이스 또는 다른 AWS 리전의 Aurora DB 클러스터일 수 있습니다. 이러한 종류의 복제를 구성하는 방법에 대해 알아보려면 Aurora과 MySQL 간의 복제 또는 Aurora와 다른 Aurora DB 클러스터(이진 로그 복제본) 간의 복제 단원을 참조하세요.

binlog 복제를 사용하고 있지만 MySQL을 사용한 GTID 기반 복제에 대해 잘 알지 못하는 경우 MySQL 설명서의 전역 트랜잭션 식별자를 사용한 복제에서 배경 정보를 참조하세요.

Aurora MySQL 버전 2 및 3에서 GTID 기반 복제가 지원됩니다.

전역 트랜잭션 식별자(GTID) 개요

전역 트랜잭션 ID(GTIDs) are unique identifiers generated for committed MySQL transactions. GTID를 사용해 binlog 복제 관련 문제를 더 간편하게 해결할 수 있습니다.

참고

Aurora가 클러스터 내 DB 인스턴스 간에 데이터를 동기화하는 경우 이 복제 메커니즘은 이진 로그(binlog)를 수반하지 않습니다. Aurora MySQL의 경우 GTID 기반 복제는 binlog 복제를 사용해 외부 MySQL 호환 데이터베이스로부터 Aurora MySQL DB 클러스터 안 또는 밖으로 복제할 때만 적용됩니다.

MySQL은 binlog 복제에 다음 두 가지 유형의 트랜잭션을 사용합니다.

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

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

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

외부 MySQL 호환 데이터베이스에서 Aurora 클러스터로 복제할 때 일반적으로 Aurora에서 GTID 기반 복제를 사용합니다. 온프레미스 또는 Amazon RDS 데이터베이스를 Aurora MySQL로 마이그레이션하는 절차의 일부로 이 복제 구성을 설정할 수 있습니다. 외부 데이터베이스에서 이미 GTID를 사용하는 경우 Aurora 클러스터에 대해 GTID 기반 복제를 활성화하면 복제 프로세스가 간소화됩니다.

먼저 DB 클러스터 파라미터 그룹에 있는 해당 구성 파라미터를 설정하여 Aurora MySQL 클러스터에 대해 GTID 기반 복제를 구성합니다. 그런 다음 이 파라미터 그룹을 클러스터와 연결합니다.

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 일관성을 위반하는 것을 허용하지만, 위반이 발생할 경우 경고를 생성합니다.

참고

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

GTID 기반 복제의 경우 Aurora MySQL DB 클러스터의 DB 클러스터 파라미터 그룹에 대해 이 설정을 사용하십시오.

  • ONON_PERMISSIVE는 Aurora MySQL 클러스터에서 밖으로 복제하는 경우에만 적용됩니다. 이 두 값으로 인해 외부 데이터베이스로 복제되는 트랜잭션에 대해 Aurora DB 클러스터가 GTID를 사용하게 됩니다. ON은 외부 데이터베이스에서도 GTID 기반 복제를 사용할 것을 요구합니다. ON_PERMISSIVE로 인해 외부 데이터베이스에서 GTID 기반 복제는 선택 사항이 됩니다.

  • OFF_PERMISSIVE가 설정된 경우 이는 Aurora DB 클러스터가 외부 데이터베이스에서 안으로 복제하는 것을 수락할 수 있음을 뜻합니다. 외부 데이터베이스가 GTID 기반 복제를 사용하든 사용하지 않든 이렇게 할 수 있습니다.

  • OFF가 설정된 경우 이는 Aurora DB 클러스터가 GTID 기반 복제를 사용하지 않는 외부 데이터베이스에서 안으로 복제하는 것만을 수락할 수 있음을 뜻합니다.

작은 정보

안으로 복제하는 것은 Aurora MySQL 클러스터에 가장 흔한 binlog 복제 시나리오입니다. 안으로 복제하는 경우 GTID 모드를 OFF_PERMISSIVE로 설정하는 것이 좋습니다. 이 설정을 통해 복제 원본의 GTID 설정에 관계없이 외부 데이터베이스에서 안으로 복제하는 것이 가능해집니다.

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

Aurora MySQL 클러스터에 대한 GTID 기반 복제 구성

GTID 기반 복제가 Aurora MySQL DB 클러스터에 대해 활성화되면 GTID 설정은 인바운드 및 아웃바운드 binlog 복제본 모두에 적용됩니다.

Aurora MySQL 클러스터에 대한 GTID 기반 복제를 활성화하려면
  1. 다음 파라미터 설정을 사용해 DB 클러스터 파라미터 그룹을 생성 또는 편집하십시오.

    • gtid_modeON 또는 ON_PERMISSIVE

    • enforce_gtid_consistencyON

  2. DB 클러스터 파라미터 그룹을 Aurora MySQL 클러스터와 연결합니다. 이 작업을 수행하려면 파라미터 그룹 작업의 절차를 따르세요.

  3. (선택 사항) GTID를 포함하지 않는 트랜잭션에 GTID를 할당하는 방법을 지정합니다. 이렇게 하려면 mysql.rds_assign_gtids_to_anonymous_transactions(Aurora MySQL 버전 3)에서 저장 프로시저를 호출하면 됩니다.

Aurora MySQL DB 클러스터에 대해 GTID 기반 복제 비활성화

Aurora MySQL DB 클러스터에 대한 GTID 기반 복제를 비활성화합니다. 이렇게 하면 Aurora 클러스터가 GTID 기반 복제를 사용하는 외부 데이터베이스에 대해 인바운드 또는 아웃바운드 binlog 복제를 수행할 수 없습니다.

참고

다음 절차에서 읽기 전용 복제본은 외부 데이터베이스로의 또는 외부 데이터베이스로부터의 binlog 복제를 포함한 Aurora 구성의 복제 대상을 의미합니다. 읽기 전용 Aurora 복제본 DB 인스턴스를 뜻하는 것은 아닙니다. 예를 들어 Aurora 클러스터가 외부 원본에서 안으로의 복제를 수락하는 경우 Aurora 기본 인스턴스는 binlog 복제에 대해 읽기 전용 복제본의 역할을 합니다.

이 단원에 언급된 저장 프로시저에 대한 자세한 내용은 Aurora MySQL 저장 프로시저 단원을 참조하세요.

Aurora MySQL DB 클러스터에 대해 GTID 기반 복제 사용 중지
  1. Aurora 기본 인스턴스에서 다음 절차를 수행합니다.

    CALL mysql.rds_set_master_auto_position(0); (Aurora MySQL version 2) CALL mysql.rds_set_source_auto_position(0); (Aurora MySQL version 3)
  2. gtid_modeON_PERMISSIVE로 재설정합니다.

    1. Aurora MySQL 클러스터와 연결된 DB 클러스터 파라미터 그룹에서 gtid_modeON_PERMISSIVE로 설정되어 있는지 확인합니다.

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

    2. Aurora MySQL 클러스터를 다시 시작합니다

  3. gtid_modeOFF_PERMISSIVE로 재설정합니다.

    1. Aurora MySQL 클러스터와 연결된 DB 클러스터 파라미터 그룹에서 gtid_modeOFF_PERMISSIVE로 설정되어 있는지 확인합니다.

    2. Aurora MySQL 클러스터를 다시 시작합니다

    1. Aurora 기본 인스턴스에서 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);

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

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

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

      • gtid_modeOFF

      • enforce_gtid_consistencyOFF

    2. Aurora MySQL 클러스터를 다시 시작합니다