Amazon Aurora를 사용하여 MySQL 데이터베이스 읽기 규모 조정 - Amazon Aurora

Amazon Aurora를 사용하여 MySQL 데이터베이스 읽기 규모 조정

MySQL DB 인스턴스에서 Amazon Aurora를 사용하여 Amazon Aurora의 읽기 조정 기능을 활용하고 MySQL DB 인스턴스에 대한 읽기 작업을 확장할 수 있습니다. Aurora을 사용하여 MySQL DB 인스턴스에 대한 읽기 조정을 수행하려면 Amazon Aurora MySQL DB 클러스터를 생성한 후 이 클러스터를 MySQL DB 인스턴스의 읽기 전용 복제본으로 설정합니다. 이러한 설정은 RDS for MySQL DB 인스턴스 또는 Amazon RDS 외부에서 실행 중인 MySQL 데이터베이스에 적용됩니다.

Amazon Aurora DB 클러스터 생성에 대한 자세한 정보는 Amazon Aurora DB 클러스터 생성 단원을 참조하십시오.

MySQL DB 인스턴스와 Amazon Aurora DB 클러스터 간의 복제를 설정할 때는 다음 지침을 따라야 합니다.

  • Amazon Aurora DB 클러스터를 참조할 때 Amazon Aurora MySQL DB 클러스터 엔드포인트 주소를 사용합니다. 장애 조치가 발생하는 경우 Aurora DB 클러스터용 기본 인스턴스로 승격되는 Aurora MySQL 복제본에서 DB 클러스터 엔드포인트 주소가 계속 사용됩니다.

  • Binlog가 Aurora 복제본에 적용되었음을 확인할 때까지는 라이터 인스턴스에서 binlog를 유지 관리합니다. 이렇게 유지 관리해야 오류 발생 시 라이터 인스턴스를 복원할 수 있습니다.

중요

자체 관리형 복제를 사용하는 경우, 발생할 수 있는 복제 문제를 직접 모니터링하고 해결해야 합니다. 자세한 내용은 읽기 전용 복제본 간 지연 문제 진단 및 해결 단원을 참조하십시오.

참고

Aurora MySQL DB 클러스터에서 복제를 시작하는 데 필요한 권한이 제한되고 Amazon RDS 마스터 사용자를 사용할 수 없습니다. 그러므로 mysql.rds_set_external_master(Aurora MySQL 버전 2) 또는 mysql.rds_set_external_source(Aurora MySQL 버전 3)mysql.rds_start_replication 프로시저를 사용하여 Aurora MySQL DB 클러스터와 MySQL DB 인스턴스 간 복제를 설정해야 합니다.

외부 소스 인스턴스와 Aurora MySQL DB 인스턴스 간의 복제 시작

  1. 원본 MySQL DB 인스턴스를 읽기 전용으로 설정합니다.

    mysql> FLUSH TABLES WITH READ LOCK; mysql> SET GLOBAL read_only = ON;
  2. 원본 MySQL DB 인스턴스에서 SHOW MASTER STATUS 명령을 실행하여 binlog 위치를 확인합니다. 다음 예제와 비슷한 출력 결과를 얻습니다.

    File Position ------------------------------------ mysql-bin-changelog.000031 107 ------------------------------------
  3. mysqldump를 사용하여 외부 MySQL DB 인스턴스에서 Amazon Aurora MySQL DB 클러스터로 데이터베이스를 복사합니다. 초대형 데이터베이스의 경우 Amazon Relational Database Service 사용 설명서가동 중지 시간을 단축하여 MySQL 또는 MariaDB DB 인스턴스로 데이터 가져오기 절차를 사용하려고 할 수도 있습니다.

    대상 LinuxmacOS, 또는Unix:

    mysqldump \ --databases <database_name> \ --single-transaction \ --compress \ --order-by-primary \ -u local_user \ -p local_password | mysql \ --host aurora_cluster_endpoint_address \ --port 3306 \ -u RDS_user_name \ -p RDS_password

    Windows의 경우:

    mysqldump ^ --databases <database_name> ^ --single-transaction ^ --compress ^ --order-by-primary ^ -u local_user ^ -p local_password | mysql ^ --host aurora_cluster_endpoint_address ^ --port 3306 ^ -u RDS_user_name ^ -p RDS_password
    참고

    -p 옵션과 입력한 암호 사이에 공백이 없어야 합니다.

    --host 명령의 --user (-u), --port, -pmysql 옵션을 사용하여 Aurora DB 클러스터에 연결할 호스트 이름, 사용자 이름, 포트 및 비밀번호를 지정하십시오. 호스트 이름은 Amazon Aurora DB 클러스터 엔드포인트의 DNS 이름으로, 예를 들면 mydbcluster.cluster-123456789012.us-east-1.rds.amazonaws.com입니다. Amazon RDS Management Console의 클러스터 세부 정보에서 엔드포인트 값을 찾을 수 있습니다.

  4. 다시 원본 MySQL DB 인스턴스를 쓰기 가능한 상태로 설정합니다.

    mysql> SET GLOBAL read_only = OFF; mysql> UNLOCK TABLES;

    복제에 사용할 백업을 만드는 방법에 대한 자세한 내용은 MySQL 설명서에서 Backing up a source or replica by making it read only 섹션을 참조하세요.

  5. Amazon RDS Management Console에서 원본 MySQL 데이터베이스를 호스팅하는 서버의 IP 주소를 Amazon Aurora DB 클러스터용 VPC 보안 그룹에 추가합니다. VPC 보안 그룹 수정에 대한 자세한 내용은 Amazon Virtual Private Cloud 사용 설명서VPC용 보안 그룹을 참조하십시오.

    Amazon Aurora DB 클러스터의 IP 주소에서의 연결을 허용하도록 로컬 네트워크를 구성하여 원본 MySQL 인스턴스와 통신할 수 있도록 해야 할 수도 있습니다. Amazon Aurora DB 클러스터의 IP 주소를 검색하려면 host 명령을 사용하십시오.

    host aurora_endpoint_address

    호스트 이름은 Amazon Aurora DB 클러스터 엔드포인트의 DNS 이름입니다.

  6. 선택한 클라이언트를 사용하여 외부 MySQL 인스턴스에 연결하고 복제에 사용될 MySQL 사용자를 만듭니다. 이 계정은 오직 복제용으로만 사용되며 보안 향상을 위해 사용자의 도메인으로 제한되어야 합니다. 다음은 예제입니다.

    CREATE USER 'repl_user'@'example.com' IDENTIFIED BY 'password';
  7. 외부 MySQL 인스턴스의 경우 복제 사용자에게 REPLICATION CLIENTREPLICATION SLAVE 권한을 부여합니다. 예를 들어 도메인의 'REPLICATION CLIENT' 사용자를 위해 모든 데이터베이스에서 REPLICATION SLAVErepl_user 권한을 부여하려면 다음 명령을 실행합니다.

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'example.com' IDENTIFIED BY 'password';
  8. 복제를 설정하기 전에 Aurora MySQL DB 클러스터의 수동 스냅샷을 읽기 전용 복제본으로 생성합니다. DB 클러스터와 복제를 읽기 복제본으로 다시 설정해야 할 경우, MySQL DB 인스턴스를 새로운 Aurora MySQL DB 클러스터로 가져오는 대신 이 스냅샷에서 Aurora MySQL DB 클러스터를 복원할 수 있습니다.

  9. Amazon Aurora DB 클러스터를 복제본으로 만듭니다. Amazon Aurora DB 클러스터에 마스터 사용자로 연결하고 mysql.rds_set_external_master(Aurora MySQL 버전 2) 또는 mysql.rds_set_external_source(Aurora MySQL 버전 3)mysql.rds_start_replication 프로시저를 사용하여 소스 MySQL 데이터베이스를 복제 소스로 식별합니다.

    2단계에서 결정한 binlog 파일 이름과 위치를 사용합니다. 다음은 예입니다.

    For Aurora MySQL version 2: CALL mysql.rds_set_external_master ('mymasterserver.example.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 0); For Aurora MySQL version 3: CALL mysql.rds_set_external_source ('mymasterserver.example.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 0);
  10. Amazon Aurora DB 클러스터에서 mysql.rds_start_replication 프로시저를 호출하여 복제를 시작합니다.

    CALL mysql.rds_start_replication;

원본 MySQL DB 인스턴스와 Amazon Aurora DB 클러스터 간의 복제를 설정한 후에는 Aurora 복제본을 Amazon Aurora DB 클러스터에 추가할 수 있습니다. 그러고 나면 Aurora 복제본에 연결하여 데이터에 대한 읽기 조정을 수행할 수 있습니다. Aurora 복제본 생성에 대한 자세한 정보는 DB 클러스터에 Aurora 복제본 추가 단원을 참조하십시오.