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

Aurora와 MySQL 간의 복제 또는 Aurora와 다른 Aurora DB 클러스터 간의 복제

Amazon Aurora MySQL은 MySQL과 호환되기 때문에 MySQL 데이터베이스와 Amazon Aurora MySQL DB 클러스터 사이에 복제를 설정할 수 있습니다. 이때 MySQL 데이터베이스에서 실행되는 MySQL 버전은 5.5 이후를 사용하는 것이 좋습니다. Aurora MySQL DB 클러스터가 복제 마스터 또는 복제본인 경우에 복제를 설정할 수 있고, Amazon RDS MySQL DB 인스턴스, Amazon RDS 외부의 MySQL 데이터베이스 또는 다른 Aurora MySQL DB 클러스터로 복제할 수 있습니다.

다른 AWS 리전의 Amazon RDS MySQL DB 인스턴스 또는 Aurora MySQL DB 클러스터로도 복제할 수 있습니다. AWS 리전 간 복제를 수행할 경우 DB 클러스터와 DB 인스턴스에 공개 액세스가 가능한지 확인합니다. Aurora MySQL DB 클러스터는 VPC의 퍼블릭 서브넷에 포함되어야 합니다.

주의

Aurora MySQL와 MySQL 간에 복제할 경우 InnoDB 테이블만 사용해야 합니다. 복제할 MyISAM 테이블이 있는 경우 다음 명령을 사용하여 복제를 설정하기 전에 해당 테이블을 InnoDB로 변환할 수 있습니다.

alter table <schema>.<table_name> engine=innodb, algorithm=copy;

Aurora MySQL를 사용한 MySQL 복제 설정 단계는 다음과 같으며, 이 주제의 뒷부분에 자세히 설명되어 있습니다.

1. 복제 마스터에 대한 이진 로깅 활성화

2. 더 이상 필요 없을 때까지 복제 마스터에 이진 로그 보관

3. 복제 마스터의 스냅샷 생성

4. 복제본 대상으로 스냅샷 로드

5. 복제본 대상에 복제 활성화

6. 복제본 모니터링

MySQL 또는 다른 Aurora DB 클러스터를 사용한 복제 설정

MySQL로 Aurora 복제를 설정하려면 다음 단계를 수행합니다.

1. 복제 마스터에 대한 이진 로깅 활성화

다음 데이터베이스 엔진의 복제 마스터에 대한 이진 로깅을 활성화하는 방법의 지침을 확인하십시오.

데이터베이스 엔진 지침

Aurora

Aurora MySQL DB 클러스터에 대한 이진 로깅을 활성화하려면

binlog_format 파라미터를 ROW, STATEMENT 또는 MIXED로 설정합니다. MIXED는 특정 binlog 형식이 요구되는 경우를 제외하고 권장됩니다. binlog_format 파라미터는 기본 클러스터 파라미터 그룹에 속하는 클러스터 수준 파라미터입니다. binlog_format 파라미터를 OFF에서 다른 값으로 변경하는 경우, Aurora DB 클러스터를 재부팅해야 변경 사항이 적용됩니다.

자세한 내용은 Amazon Aurora DB 클러스터와 DB 인스턴스 파라미터DB 파라미터 그룹 작업 단원을 참조하십시오.

RDS MySQL

Amazon RDS DB 인스턴스에 대한 이진 로깅을 활성화하려면

Amazon RDS DB 인스턴스에 대한 이진 로깅을 직접 활성화할 수는 없지만, 다음 중 하나를 수행하여 활성화할 수 있습니다.

MySQL(외부)

암호화된 복제 설정

데이터를 안전하게 복제하기 위해 암호화된 복제를 사용할 수 있습니다.

참고

암호화된 복제를 사용할 필요가 없다면 이 단계를 건너 뛸 수 있습니다.

다음은 암호화된 복제를 사용하기 위한 사전 조건입니다.

  • 외부 MySQL 마스터 데이터베이스에서 SSL(Secure Socket Layer)를 활성화 시켜야 합니다.

  • Aurora MySQL DB 클러스터에 대해 클라이언트 키와 클라이언트 인증서를 준비해야 합니다.

암호화 복제 중, Aurora MySQL DB 클러스터는 MySQL 데이터베이스 서버의 클라이언트 역할을 합니다. Aurora MySQL 클라이언트 인증서와 키는 .pem 형식의 파일입니다.

  1. 암호화 복제를 준비해야 합니다.

    • 외부 MySQL 마스터 데이터베이스에서 SSL을 활성화 시키지 않았고 클라이언트 키와 인증서가 준비되지 않았다면, MySQL 데이터베이스 서버의 SSL을 활성화 하고, 필요한 클라이언트 키와 인증서를 생성합니다.

    • 외부 마스터에 SSL이 활성화되어 있다면, Aurora MySQL DB 클러스터에 클라이언트 키와 인증서를 제공합니다. 인증서와 키가 없다면, Aurora MySQL DB 클러스터에 대해 새 키와 인증서를 생성합니다. 클라이언트 인증서에 서명하려면, 외부 MySQL 마스터 데이터베이스의 SSL을 구성할 때 사용하는 인증 기관(CA) 키가 있어야 합니다.

    자세한 내용은 MySQL 문서의 Creating SSL Certificates and Keys Using openssl을 참조하십시오.

    인증 기관(CA) 인증서, 클라이언트 키, 클라이언트 인증서가 필요합니다.

  2. SSL을 사용하여 마스터 사용자로 Aurora MySQL DB 클러스터에 연결합니다.

    SSL을 이용한 Aurora MySQL DB 클러스터 연결에 대한 자세한 내용은 Aurora MySQL DB 클러스터에 SSL 사용를 참조하십시오.

  3. mysql.rds_import_binlog_ssl_material 저장 프로시저로 Aurora MySQL DB 클러스터로 SSL 정보를 가져옵니다.

    ssl_material_value 파라미터에서, Aurora MySQL DB 클러스터의 정보를 올바른 JSON 페이로드에 삽입합니다.

    다음은 Aurora MySQL DB 클러스터에 SSL 정보를 가져오는 예제입니다. .pem 형식 파일은 본문 코드의 길이가 일반적으로 예제의 본문 코드 길이보다 깁니다.

    call mysql.rds_import_binlog_ssl_material( '{"ssl_ca":"-----BEGIN CERTIFICATE----- AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE -----END CERTIFICATE-----\n","ssl_cert":"-----BEGIN CERTIFICATE----- AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE -----END CERTIFICATE-----\n","ssl_key":"-----BEGIN RSA PRIVATE KEY----- AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE -----END RSA PRIVATE KEY-----\n"}');

    자세한 내용은 mysql.rds_import_binlog_ssl_material 단원을 참조하십시오.

    참고

    프로시저를 실행한 후 파일에 암호를 저장합니다. 나중에 mysql.rds_remove_binlog_ssl_material 저장 프로시저를 실행해 파일을 삭제할 수 있습니다.

외부 MySQL 데이터베이스에 대한 이진 로깅을 활성화하려면

  1. 명령 셸에서 mysql 서비스를 중지합니다.

    sudo service mysqld stop
  2. my.cnf 파일을 편집합니다(이 파일은 보통 /etc에 있음).

    sudo vi /etc/my.cnf

    log_binserver_id 옵션을 [mysqld] 섹션에 추가합니다. log_bin 옵션은 이진 로그 파일에 대한 파일 이름 식별자를 제공합니다. server_id 옵션은 마스터-복제본 관계에서 서버의 고유 식별자를 제공합니다.

    암호화된 복제가 필요 없다면, binlogs를 활성화 시키고 SSL을 비활성화 시켜 외부 MySQL 데이터베이스를 시작합니다.

    다음은 암호화된 데이터와 관련된 /etc/my.cnf 파일 항목들입니다.

    log-bin=mysql-bin server-id=2133421 innodb_flush_log_at_trx_commit=1 sync_binlog=1

    암호화된 복제가 필요하다면, SSL과 binlogs를 활성화시켜 외부 MySQL 데이터베이스를 시작합니다.

    /etc/my.cnf 파일 항목에는 MySQL 데이터베이스 서버의 .pem 파일 위치가 포함되어 있습니다.

    log-bin=mysql-bin server-id=2133421 innodb_flush_log_at_trx_commit=1 sync_binlog=1 # Setup SSL. ssl-ca=/home/sslcerts/ca.pem ssl-cert=/home/sslcerts/server-cert.pem ssl-key=/home/sslcerts/server-key.pem

    또한 MySQL DB 인스턴스의 sql_mode 옵션을 0으로 설정하거나, my.cnf 파일에 이 옵션이 포함되어서는 안 됩니다.

    외부 MySQL 데이터베이스 레코드에 연결되어 있는 동안 외부 MySQL 데이터베이스의 이진수 로그 위치를 기록합니다.

    mysql> SHOW MASTER STATUS;

    다음과 유사하게 출력되어야 합니다:

    +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000031 | 107 | | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)

    자세한 내용은 MySQL 문서의 Setting the Replication Master Configuration을 참조하십시오.

  3. mysql 서비스를 시작합니다.

    sudo service mysqld start

2. 더 이상 필요 없을 때까지 복제 마스터에 이진 로그 보관

MySQL binlog 복제를 사용할 경우 Amazon RDS에서 복제 프로세스를 관리하지 않습니다. 따라서 변경 사항이 복제본에 적용된 이후까지 복제 마스터의 binlog 파일이 보관되는지 확인해야 합니다. 이렇게 유지 관리해야 오류 발생 시 마스터 데이터베이스를 복원할 수 있습니다.

다음 데이터베이스 엔진의 이진 로그를 보관하는 방법에 대한 지침을 확인하십시오.

데이터베이스 엔진 지침

Aurora

Aurora MySQL DB 클러스터에 이진 로그를 보관하려면

Aurora MySQL DB 클러스터의 binlog 파일에 대한 액세스 권한이 없습니다. 따라서 Amazon RDS에서 binlog 파일을 삭제하기 이전에 변경 사항이 복제본에 적용되도록 복제 마스터에 binlog 파일을 보관할 기간을 충분히 길게 선택해야 합니다. 최대 90일 동안 Aurora MySQL DB 클러스터에 binlog 파일을 보관할 수 있습니다.

MySQL 데이터베이스 또는 RDS MySQL DB 인스턴스를 복제본으로 사용하여 복제를 설정하고 복제본을 생성할 데이터베이스가 매우 큰 경우, 복제본에 대한 데이터베이스의 초기 복사가 완료되고 복제 지연이 0에 도달할 때까지 binlog 파일을 보관하도록 기간을 길게 선택합니다.

binlog 보관 기간을 설정하려면 mysql.rds_set_configuration 절차를 사용하여 'binlog retention hours' 구성 파라미터와 DB 클러스터에 binlog 파일을 보관할 시간(최대 2160시간(90일))을 함께 지정합니다. 다음 예에서는 binlog 파일의 보관 기간을 6일로 설정합니다.

CALL mysql.rds_set_configuration('binlog retention hours', 144);

복제를 시작한 후 복제본에 대해 SHOW SLAVE STATUS 명령을 실행하고 Seconds behind master 필드를 선택하여 변경 사항이 복제본에 적용되었는지 확인할 수 있습니다. Seconds behind master 필드가 0이면 복제 지연이 없는 것입니다. 복제 지연이 없는 경우 binlog retention hours 구성 파라미터를 더 짧은 기간으로 설정하여 binlog 파일을 보관할 기간을 줄입니다.

2160보다 큰 'binlog retention hours' 값을 지정하면 2160이 사용됩니다.

RDS MySQL

Amazon RDS DB 인스턴스에 이진 로그를 보관하려면

이전 단원에서 설명한 Aurora MySQL DB 클러스터와 같은 방법으로 binlog 보관 시간을 설정하여 Amazon RDS DB 인스턴스에 binlog 파일을 보관할 수 있습니다.

DB 인스턴스에 대한 읽기 전용 복제본을 생성하여 Amazon RDS DB 인스턴스에 binlog 파일을 보관할 수도 있습니다. 이 읽기 전용 복제본은 임시 복제본이며 binlog 파일 보관의 목적으로만 사용됩니다. 읽기 전용 복제본이 생성된 후 읽기 전용 복제본에 대한 mysql.rds_stop_replication 프로시저를 호출합니다(mysql.rds_stop_replication 프로시저는 MySQL 5.5, 5.6 이상 버전과 5.7 이상 버전에서만 사용할 수 있음). 복제가 중지된 동안 Amazon RDS에서는 복제 마스터에서 binlog 파일을 삭제하지 않습니다. 영구 복제본을 사용하여 복제를 설정한 후 복제 마스터와 영구 복제본 사이의 복제 지연(Seconds behind master 필드)이 0에 도달한 경우 읽기 전용 복제본을 삭제할 수 있습니다.

MySQL(외부)

외부 MySQL 데이터베이스에 이진 로그를 보관하려면

외부 MySQL 데이터베이스의 binlog 파일은 Amazon RDS에서 관리하지 않으므로 삭제할 때까지 보관됩니다.

복제를 시작한 후 복제본에 대해 SHOW SLAVE STATUS 명령을 실행하고 Seconds behind master 필드를 선택하여 변경 사항이 복제본에 적용되었는지 확인할 수 있습니다. Seconds behind master 필드가 0이면 복제 지연이 없는 것입니다. 복제 지연이 없는 경우 이전 binlog 파일을 삭제할 수 있습니다.

3. 복제 마스터의 스냅샷 생성

복제 마스터의 스냅샷은 데이터의 기본 사본을 복제본으로 로드한 후 해당 지점에서 복제를 시작하는 데 사용됩니다.

다음 데이터베이스 엔진의 복제 마스터의 스냅샷을 생성하는 방법에 대한 지침을 확인하십시오.

데이터베이스 엔진 지침

Aurora

Aurora MySQL DB 클러스터의 스냅샷을 생성하려면

  1. Amazon Aurora DB 클러스터의 DB 클러스터 스냅샷을 생성합니다. 자세한 내용은 DB 스냅샷 생성 단원을 참조하십시오.

  2. 방금 만든 DB 클러스터 스냅샷에서 복원하여 새 Aurora DB 클러스터를 생성합니다. 복원된 DB 클러스터의 DB 파라미터 그룹을 원래 DB 클러스터와 동일하게 유지해야 합니다. 이렇게 해야 DB 클러스터 사본에 이진수 로깅이 활성화됩니다. 자세한 내용은 DB 스냅샷에서 복원 단원을 참조하십시오.

  3. 콘솔에서 [Instances]를 선택하고 복원된 Aurora DB 클러스터의 기본 인스턴스(라이터)를 클릭하여 세부 정보를 표시합니다. [Recent Events]로 스크롤합니다. binlog 파일 이름과 위치를 포함한 이벤트 메시지가 표시됩니다. 이벤트 메시지의 형식은 다음과 같습니다.

    Binlog position from crash recovery is binlog-file-name binlog-position

    복제 시작 위치에 해당하는 binlog 파일 이름 및 위치 값을 저장합니다.

    AWS CLI에서 describe-events 명령을 호출하여 binlog 파일 이름 및 위치를 얻을 수도 있습니다. 다음은 describe-events 명령과 명령 출력의 예입니다.

    PROMPT> aws rds describe-events
    { "Events": [ { "EventCategories": [], "SourceType": "db-instance", "SourceArn": "arn:aws:rds:us-west-2:123456789012:db:sample-restored-instance", "Date": "2016-10-28T19:43:46.862Z", "Message": "Binlog position from crash recovery is mysql-bin-changelog.000003 4278", "SourceIdentifier": "sample-restored-instance" } ] }
  4. 복제본 대상이 다른 AWS 리전의 Aurora DB 클러스터, 다른 AWS 계정이 소유한 Aurora DB 클러스터, 외부 MySQL 데이터베이스 또는 RDS MySQL DB 인스턴스인 경우 Amazon Aurora DB 클러스터 스냅샷에서 데이터를 로드할 수 없습니다. 대신 MySQL 클라이언트를 사용하여 DB 클러스터에 연결하고 mysqldump 명령을 실행하여 Amazon Aurora DB 클러스터의 덤프를 생성할 수 있습니다. 생성한 Amazon Aurora DB 클러스터 사본에 대해 mysqldump 명령을 실행해야 합니다. 다음은 예제입니다.

    PROMPT> mysqldump --databases <database_name> --single-transaction --order-by-primary -r backup.sql -u <local_user> -p
  5. 새로 생성된 Aurora DB 클러스터에서 데이터 덤프 생성을 마치고 나면 해당 DB 클러스터는 더 이상 필요하지 않으므로 삭제합니다.

RDS MySQL

Amazon RDS DB 인스턴스의 스냅샷을 생성하려면

  1. Amazon RDS DB 인스턴스의 읽기 전용 복제본을 생성합니다. 읽기 전용 복제본 생성에 대한 자세한 내용은 읽기 전용 복제본 생성 단원을 참조하십시오.

  2. 읽기 전용 복제본에 연결하고 mysql.rds_stop_replication 명령을 실행하여 복제를 중지합니다.

  3. 읽기 전용 복제본이 [Stopped] 상태인 동안 읽기 전용 복제본에 연결하고 SHOW SLAVE STATUS 명령을 실행합니다. Relay_Master_Log_File 필드에서 현재 이진 로그 파일 이름을 검색하고 Exec_Master_Log_Pos 필드에서 로그 파일 위치를 검색합니다. 복제를 시작할 때에 대비하여 해당 값을 저장합니다.

  4. 읽기 전용 복제본을 [Stopped] 상태로 유지하면서 읽기 전용 복제본의 DB 스냅샷을 생성합니다. DB 스냅샷을 만드는 방법에 대한 자세한 내용은 DB 스냅샷 생성 단원을 참조하십시오.

  5. 읽기 전용 복제본을 삭제합니다.

MySQL(외부)

외부 MySQL 데이터베이스의 스냅샷을 생성하려면

  1. 스냅샷을 생성하기 전에 스냅샷의 binlog 위치가 마스터 인스턴스의 최신 데이터와 일치하는지 확인해야 합니다. 이렇게 하려면 먼저 다음 명령을 사용하여 인스턴스에 대한 쓰기 작업을 중지해야 합니다.

    mysql> FLUSH TABLES WITH READ LOCK;
  2. 다음과 같이 mysqldump 명령을 사용하여 MySQL 데이터베이스의 덤프를 생성합니다.

    PROMPT> sudo mysqldump --databases <database_name> --master-data=2 --single-transaction --order-by-primary -r backup.sql -u <local_user> -p
  3. 스냅샷을 생성한 후 다음 명령을 사용하여 MySQL 데이터베이스에서 테이블의 잠금을 해제합니다.

    mysql> UNLOCK TABLES;

4. 복제본 대상으로 스냅샷 로드

복제 마스터의 스냅샷을 복제본 대상으로 로드하기 전에 다음을 고려해야 합니다.

  • AWS 리전 간에 복제할 경우, Aurora MySQL DB 클러스터 스냅샷을 사용하여 복제본 대상을 로드할 수 없습니다. DB 클러스터 스냅샷을 리전 간에 복사할 수 없습니다. 리전을 교차하여 작업하려면 RDS MySQL DB 인스턴스의 DB 스냅샷에서 다른 AWS 리전에 Aurora MySQL DB 인스턴스를 생성할 수 있습니다. 복제 슬레이브가 호스팅될 AWS 리전에 DB 스냅샷을 복사한 후 이 스냅샷에서 Aurora MySQL DB 클러스터 또는 MySQL DB 인스턴스를 생성합니다. 스냅샷을 다른 리전으로 복사하는 방법은 DB 스냅샷 또는 DB 클러스터 스냅샷 복사 단원을 참조하십시오.

  • Amazon RDS 외부에 있는 MySQL 데이터베이스 덤프에서 데이터를 로드할 계획이라면 EC2 인스턴스를 생성하여 덤프 파일을 복사한 후 해당 EC2 인스턴스에서 DB 클러스터 또는 DB 인스턴스로 데이터를 로드할 수 있습니다. 이 방법을 사용하면 EC2 인스턴스에 덤프 파일을 복사하기 전에 압축하여 Amazon RDS에 데이터를 복사하는 것과 관련한 네트워크 비용을 줄일 수 있습니다. 또한 덤프 파일 또는 파일을 암호화하여 네트워크 간에 전송되는 데이터를 보호할 수 있습니다.

다음 데이터베이스 엔진의 복제본 대상에 복제 마스터의 스냅샷을 로드하는 방법에 대한 지침을 확인하십시오.

데이터베이스 엔진 지침

Aurora

Aurora MySQL DB 클러스터로 스냅샷을 로드하려면

  • 복제 마스터의 스냅샷이 DB 클러스터 스냅샷인 경우 DB 클러스터 스냅샷에서 복원하여 새 Aurora MySQL DB 클러스터를 복제본 대상으로 생성할 수 있습니다. 자세한 내용은 DB 스냅샷에서 복원 단원을 참조하십시오.

  • 복제 마스터의 스냅샷이 DB 스냅샷인 경우 DB 스냅샷의 데이터를 새 Aurora MySQL DB 클러스터로 마이그레이션할 수 있습니다. 자세한 내용은 Amazon Aurora DB 클러스터로 데이터 마이그레이션 단원을 참조하십시오.

  • 복제 마스터의 스냅샷이 mysqldump 명령의 출력인 경우 다음 단계를 따릅니다.

    1. mysqldump 명령의 출력을 복제 마스터에서 Aurora MySQL DB 클러스터에도 연결 가능한 위치로 복사합니다.

    2. mysql 명령을 사용하여 Aurora MySQL DB 클러스터에 연결합니다. 다음은 예제입니다.

      PROMPT> mysql -h <host_name> -port=3306 -u <db_master_user> -p
    3. mysql 프롬프트에서 source 명령을 실행하고 데이터베이스 덤프 파일의 이름을 전달하여 Aurora MySQL DB 클러스터로 데이터를 로드합니다. 예를 들면 다음과 같습니다.

      mysql> source backup.sql;

RDS MySQL

Amazon RDS DB 인스턴스로 스냅샷을 로드하려면

  1. mysqldump 명령의 출력을 복제 마스터에서 MySQL DB 인스턴스에도 연결 가능한 위치로 복사합니다.

  2. mysql 명령을 사용하여 MySQL DB 인스턴스에 연결합니다. 다음은 예제입니다.

    PROMPT> mysql -h <host_name> -port=3306 -u <db_master_user> -p
  3. mysql 프롬프트에서 source 명령을 실행하고 데이터베이스 덤프 파일의 이름을 전달하여 MySQL DB 인스턴스로 데이터를 로드합니다. 예를 들면 다음과 같습니다.

    mysql> source backup.sql;

MySQL(외부)

외부 MySQL 데이터베이스로 스냅샷을 로드하려면

DB 스냅샷 또는 DB 클러스터 스냅샷을 외부 MySQL 데이터베이스로 로드할 수 없습니다. 대신 mysqldump 명령의 출력을 사용해야 합니다.

  1. mysqldump 명령의 출력을 복제 마스터에서 MySQL 데이터베이스에도 연결 가능한 위치로 복사합니다.

  2. mysql 명령을 사용하여 MySQL 데이터베이스에 연결합니다. 다음은 예제입니다.

    PROMPT> mysql -h <host_name> -port=3306 -u <db_master_user> -p
  3. mysql 프롬프트에서 source 명령을 실행하고 데이터베이스 덤프 파일의 이름을 전달하여 MySQL 데이터베이스로 데이터를 로드합니다. 다음은 예제입니다.

    mysql> source backup.sql;

5. 복제본 대상에 복제 활성화

복제를 활성화하기 전에 Aurora MySQL DB 클러스터 또는 RDS MySQL DB 인스턴스 복제본 대상의 스냅샷을 수동으로 생성하는 것이 좋습니다. 문제가 발생하여 DB 클러스터 또는 DB 인스턴스 복제본 대상을 통해 복제를 다시 설정해야 하는 경우, 데이터를 복제본 대상으로 다시 가져오는 대신 이 스냅샷에서 DB 클러스터 또는 DB 인스턴스를 복원할 수 있습니다.

또한 복제에만 사용되는 사용자 ID를 생성할 수도 있습니다. 다음은 예제입니다.

mysql> CREATE USER 'repl_user'@'<domain_name>' IDENTIFIED BY '<password>';

사용자에게 REPLICATION CLIENTREPLICATION SLAVE 권한이 필요합니다. 해당 사용자에게 이 권한을 부여합니다.

GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'<domain_name>';

암호화된 복제를 사용해야 한다면, 복제 사용자에게 SSL 연결이 반드시 필요합니다. 예를 들어, 다음 문 중 하나를 사용하여 사용자 계정 repl_user에서 SSL을 연결합니다.

GRANT USAGE ON *.* TO 'repl_user'@'<domain_name>' REQUIRE SSL;

참고

REQUIRE SSL이 포함되어 있지 않다면, 복제 연결이 자동으로 암호화되지 않은 연결로 돌아갈 수 있습니다.

다음 데이터베이스 엔진의 복제를 활성화하는 방법에 대한 지침을 확인하십시오.

데이터베이스 엔진 지침

Aurora

Aurora MySQL DB 클러스터에서 복제를 활성화하려면

  1. DB 클러스터 스냅샷에서 DB 클러스터 복제본 대상을 생성한 경우 DB 클러스터 복제본 대상에 연결하고 SHOW MASTER STATUS 명령을 실행합니다. File 필드에서 현재 이진 로그 파일 이름을 검색하고 Position 필드에서 로그 파일 위치를 검색합니다.

    DB 스냅샷에서 DB 클러스터 복제본 대상을 생성한 경우 복제 시작 위치에 해당하는 binlog 파일 및 binlog 위치가 필요합니다. 복제 마스터의 스냅샷을 생성할 때 SHOW SLAVE STATUS 명령에서 이 값을 검색했습니다.

  2. DB 클러스터 복제본 대상에 연결하고 mysql.rds_set_external_mastermysql.rds_start_replication 명령을 실행하여 이전 단계의 이진수 로그 파일 이름과 위치를 사용하여 복제 마스터로 복제를 시작합니다. 다음은 예제입니다.

    CALL mysql.rds_set_external_master ('mydbinstance.123456789012.us-east-1.rds.amazonaws.com', 3306, 'repl_user', '<password>', 'mysql-bin-changelog.000031', 107, 0); CALL mysql.rds_start_replication;

RDS MySQL

Amazon RDS DB 인스턴스에서 복제를 활성화하려면

  1. DB 스냅샷에서 DB 인스턴스 복제본 대상을 생성한 경우 복제 시작 위치에 해당하는 binlog 파일 및 binlog 위치가 필요합니다. 복제 마스터의 스냅샷을 생성할 때 SHOW SLAVE STATUS 명령에서 이 값을 검색했습니다.

  2. DB 인스턴스 복제본 대상에 연결하고 mysql.rds_set_external_mastermysql.rds_start_replication 명령을 실행하여 이전 단계의 이진수 로그 파일 이름과 위치를 사용하여 복제 마스터로 복제를 시작합니다. 다음은 예제입니다.

    CALL mysql.rds_set_external_master ('mydbcluster.cluster-123456789012.us-east-1.rds.amazonaws.com', 3306, 'repl_user', '<password>', 'mysql-bin-changelog.000031', 107, 0); CALL mysql.rds_start_replication;

MySQL(외부)

외부 MySQL 데이터베이스에서 복제를 활성화하려면

  1. 복제 시작 위치에 해당하는 binlog 파일 및 binlog 위치를 검색합니다. 복제 마스터의 스냅샷을 생성할 때 SHOW SLAVE STATUS 명령에서 이 값을 검색했습니다. mysqldump 명령을 --master-data=2 옵션과 함께 실행하여 그 출력으로 외부 MySQL 복제본 대상을 채운 경우 binlog 파일 및 binlog 위치는 출력에 포함되어 있습니다. 다음은 예제입니다.

    -- -- Position to start replication or point-in-time recovery from -- -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-changelog.000031', MASTER_LOG_POS=107;
  2. 예를 들어, 외부 MySQL 복제본 대상에 연결하고 CHANGE MASTER TOSTART SLAVE를 실행하여 이전 단계의 이진수 로그 파일 이름과 위치를 사용하여 복제 마스터로 복제를 시작합니다.

    CHANGE MASTER TO MASTER_HOST = 'mydbcluster.cluster-123456789012.us-east-1.rds.amazonaws.com', MASTER_PORT = 3306, MASTER_USER = 'repl_user', MASTER_PASSWORD = '<password>', MASTER_LOG_FILE = 'mysql-bin-changelog.000031', MASTER_LOG_POS = 107; START SLAVE;

6. 복제본 모니터링

Aurora MySQL DB 클러스터를 사용하여 MySQL 복제를 설정한 경우 복제본 대상인 Aurora MySQL DB 클러스터에 대한 장애 조치 이벤트를 모니터링해야 합니다. 장애 조치가 발생할 경우에는 복제본 대상인 DB 클러스터가 다른 네트워크 주소를 가진 새 호스트에서 다시 생성될 수도 있습니다. 장애 조치 이벤트를 모니터링하는 자세한 방법은 Amazon RDS 이벤트 알림 서비스 사용 단원을 참조하십시오.

또한 복제본 대상에 연결하고 SHOW SLAVE STATUS 명령을 실행하여 복제본 대상이 복제 마스터보다 얼마나 지연되었는지 모니터링할 수 있습니다. 명령 출력의 Seconds Behind Master 필드는 복제본 대상이 마스터보다 얼마나 지연되었는지 알려줍니다.

Aurora와 MySQL 간의 복제 또는 Aurora와 다른 Aurora DB 클러스터 간의 복제 중지

MySQL DB 인스턴스, 외부 MySQL 데이터베이스 또는 다른 Aurora DB 클러스터와의 binlog 복제 중지 단계는 다음과 같으며, 이 주제의 뒷부분에 자세히 설명되어 있습니다.

1. 복제본 대상의 Binlog 복제 중지

2. 복제 마스터에 대한 이진 로깅 비활성화

1. 복제본 대상의 Binlog 복제 중지

다음 데이터베이스 엔진의 binlog 복제를 중지하는 방법에 대한 지침을 확인하십시오.

데이터베이스 엔진 지침

Aurora

Aurora MySQL DB 클러스터 복제본 대상에 대한 binlog 복제를 중지하려면,

복제본 대상인 Aurora DB 클러스터를 연결하고, mysql.rds_stop_replication 프로시저를 호출합니다. mysql.rds_stop_replication 프로시저는 MySQL 5.5 이상, 5.6 이상, 5.7 이상 버전에서만 사용할 수 있습니다.

RDS MySQL

Amazon RDS DB 인스턴스에 대한 binlog 복제를 중지하는 방법

복제본 대상인 RDS DB 인스턴스를 연결하고, mysql.rds_stop_replication 프로시저를 호출합니다. mysql.rds_stop_replication 프로시저는 MySQL 5.5 이상, 5.6 이상, 5.7 이상 버전에서만 사용할 수 있습니다.

MySQL(외부)

외부 MySQL 데이터베이스에서 binlog 복제를 중지하는 방법

MySQL 데이터베이스에 연결하고 STOP REPLICATION 명령을 호출합니다.

2. 복제 마스터에 대한 이진 로깅 비활성화

다음 데이터베이스 엔진의 복제 마스터에 대한 이진 로깅을 비활성화하는 방법의 지침을 확인하십시오.

데이터베이스 엔진 지침

Aurora

Amazon Aurora DB 클러스터에 대한 이진 로깅을 비활성화하는 방법

  1. 복제 마스터인 Aurora DB 클러스터를 연결하고, binlog 보존 시간 프레임을 0으로 설정합니다. binlog 보관 기간을 설정하려면, 다음 예제와 같이 mysql.rds_set_configuration 프로시저를 사용하여 binlog retention hours 구성 파라미터를 DB 클러스터에 binlog 파일을 보관할 시간(이 예제에서는 0)과 함께 지정합니다.

    CALL mysql.rds_set_configuration('binlog retention hours', 0);
  2. 복제 마스터에서 binlog_format 파라미터를 OFF로 설정합니다. binlog_format 파라미터는 기본 클러스터 파라미터 그룹에 속하는 클러스터 수준 파라미터입니다.

    binlog_format 파라미터 값을 변경한 후에는 DB 클러스터를 재부팅해야만 변경 사항이 적용됩니다.

    자세한 내용은 Amazon Aurora DB 클러스터와 DB 인스턴스 파라미터DB 파라미터 그룹의 파라미터 수정 단원을 참조하십시오.

RDS MySQL

Amazon RDS DB 인스턴스에 대한 이진 로깅을 비활성화하는 방법

Amazon RDS DB 인스턴스에 대한 이진 로깅을 직접 비활성화할 수는 없지만, 다음을 수행하여 비활성화할 수 있습니다.

  1. DB 인스턴스의 자동 백업을 비활성화합니다. 기존 DB 인스턴스를 수정하고 백업 보존 기간을 0으로 설정하여 자동 백업을 비활성화할 수 있습니다. 자세한 내용은 MySQL 데이터베이스 엔진 기반 DB 인스턴스의 변경백업 작업 단원을 참조하십시오.

  2. DB 인스턴스의 읽기 전용 복제본을 모두 삭제합니다. 자세한 내용은 MariaDB, MySQL 및 PostgreSQL DB 인스턴스의 읽기 전용 복제본 작업 단원을 참조하십시오.

MySQL(외부)

외부 MySQL 데이터베이스에 대한 이진 로깅을 비활성화하는 방법

MySQL 데이터베이스에 연결하고 STOP REPLICATION 명령을 호출합니다.

  1. 명령 셸에서 mysql 서비스를 중지합니다.

    sudo service mysqld stop
  2. my.cnf 파일을 편집합니다(이 파일은 보통 /etc에 있음).

    sudo vi /etc/my.cnf

    [mysqld] 섹션에서 log_binserver_id 옵션을 삭제합니다.

    자세한 내용은 MySQL 문서의 Setting the Replication Master Configuration을 참조하십시오.

  3. mysql 서비스를 시작합니다.

    sudo service mysqld start