Share via


Azure Database for MySQL - 유연한 서버 출력 데이터 복제를 구성하는 방법

적용 대상: Azure Database for MySQL - 유연한 서버

이 문서에서는 원본 및 복제본 서버를 구성하여 Azure Database for MySQL 유연한 서버에서 출력 데이터 복제를 설정하는 방법을 설명합니다. 이 문서에서는 이전에 MySQL 서버 및 데이터베이스를 사용한 경험이 있다고 가정합니다.

데이터 출력 복제의 경우 원본은 항상 Azure Database for MySQL 유연한 서버입니다. 복제본(replica)은 다른 클라우드 공급자, 온-프레미스 또는 가상 머신의 모든 외부 MySQL 서버일 수 있습니다. 이 문서의 단계를 수행하기 전에 출력 데이터 복제에 대한 제한 사항 및 요구 사항을 검토합니다.

참고 항목

이 문서에서는 Microsoft가 더 이상 사용하지 않는 슬레이브를 참고합니다. 소프트웨어에서 용어가 제거되면 이 문서에서 해당 용어가 제거됩니다.

원본으로 사용할 Azure Database for MySQL 유연한 서버 인스턴스를 만듭니다.

  1. Azure Database for MySQL 유연한 서버의 새 인스턴스를 만듭니다(예: sourceserver.mysql.database.Azure.com). 서버를 만드는 방법은 Azure Portal을 사용하여 Azure Database for MySQL 유연한 서버 인스턴스 만들기를 참조하세요. 이 서버는 출력 데이터 복제에 대한 "원본" 서버입니다.

  2. 똑같은 사용자 계정 및 해당 권한을 만듭니다.

    1. 사용자 계정은 원본 서버에서 복제본 서버로 복제되지 않습니다. 사용자에게 복제본(replica) 서버에 대한 액세스 권한을 제공하려 한다고 가정합니다. 이 경우 새로 만든 이 Azure Database for MySQL - 유연한 서버 인스턴스에 대한 모든 계정 및 해당 권한을 수동으로 만들어야 합니다.

원본 MySQL 서버 구성

다음 단계에서는 원본 역할을 하는 Azure Database for MySQL 유연한 서버 인스턴스를 준비하고 구성합니다.

  1. 네트워킹 요구 사항

    원본 및 복제본 서버가 원활하게 통신할 수 있도록 네트워크 설정이 지정되었는지 확인합니다.
    원본 서버가 공용 액세스에 있는 경우 방화벽 규칙에서 복제본 서버 IP 주소를 허용하는지 확인합니다. 복제본 서버가 Azure에서 호스트되는 경우 Azure Portal 네트워킹 페이지에서 Azure 서비스에서 공용 액세스를 허용하는 옵션을 선택해야 합니다. 원본 서버가 프라이빗 액세스에 있는 경우 복제본 서버가 Vnet 피어링 또는 VNet-VNet VPN 게이트웨이 연결을 통해 원본에 연결할 수 있는지 확인합니다.

  2. 이진 로깅 켜기

    다음 명령을 실행하여 원본에서 이진 로깅이 사용하도록 설정되어 있는지 확인합니다.

    SHOW VARIABLES LIKE 'log_bin';
    

    log_bin 변수가 ‘ON’ 값으로 반환되면 서버에서 이진 로깅이 사용하도록 설정됩니다.

  3. 새 복제 역할 만들기 및 권한 설정

    구성된 원본 서버에서 복제 권한으로 사용자 계정을 만듭니다. 이 작업은 SQL 명령 또는 MySQL Workbench와 같은 도구를 통해 수행할 수 있습니다. 사용자를 만들 때 지정해야 하므로 SSL을 사용하여 복제할지 여부를 고려합니다. 원본 서버에서 사용자 계정을 추가하는 방법을 이해하려면 MySQL 설명서를 참조하세요.

    다음 명령에서는 새 복제 역할이 원본 자체를 호스트하는 머신뿐만 아니라 모든 머신에서도 원본에 액세스할 수 있습니다. 이 작업은 create user 명령에 “syncuser@’%’”를 지정하여 수행합니다. 계정 이름 설정에 대한 자세한 내용은 MySQL 설명서를 참조하세요.

    계정 이름을 설정하는 데 사용할 수 있는 몇 가지 도구가 있습니다. 사용자 환경에 가장 적합한 도구를 선택합니다.

SSL을 사용한 복제

모든 사용자 연결에 SSL이 필요하도록 설정하려면 다음 명령을 사용하여 사용자를 만듭니다.

CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%' REQUIRE SSL;

SSL 없이 복제

모든 연결에 SSL이 필요하지 않은 경우 다음 명령을 사용하여 사용자를 만듭니다.

CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%';

원본 서버를 덤프 및 복원합니다.

복제본으로 마이그레이션할 기존 데이터 없이 새로 만든 원본 서버의 경우에는 이 섹션을 건너뜁니다. 이 시점에서 테이블의 잠금을 해제할 수 있습니다.

SET GLOBAL read_only = OFF;
UNLOCK TABLES;

원본 서버에 복제본으로 마이그레이션할 기존 데이터가 있는 경우 아래 단계를 따릅니다.

  1. Azure Database for MySQL 유연한 서버에 복제할 데이터베이스와 테이블을 결정하고, 원본 서버에서 덤프를 수행합니다. mysqldump를 사용하여 주 서버에서 데이터베이스를 덤프할 수 있습니다. 자세한 내용은 덤프 및 복원을 참조하세요. MySQL 라이브러리 및 테스트 라이브러리는 덤프할 필요가 없습니다.

  2. 원본 서버를 읽기/쓰기 모드로 설정합니다.

데이터베이스를 덤프한 후 원본 Azure Database for MySQL 유연한 서버 인스턴스를 읽기/쓰기 모드로 변경합니다.

SET GLOBAL read_only = OFF;
UNLOCK TABLES;
  1. 덤프 파일을 새 서버로 복원합니다. 덤프 파일을 Azure Database for MySQL 유연한 서버에서 생성된 서버로 복원합니다. 덤프 파일을 Azure Database for MySQL 유연한 서버 인스턴스로 복원하려면 덤프 및 복원을 참조하세요. 덤프 파일이 큰 경우, 복제본 서버와 동일한 지역 내의 Azure 가상 머신에 업로드합니다. 가상 머신에서 Azure Database for MySQL 유연한 서버 인스턴스로 복원합니다.

참고 항목

덤프 및 복원할 때에만 데이터베이스를 읽도록 설정하지 않으려면 mydumper/myloader를 사용하면 됩니다.

데이터 출력 복제를 시작하도록 복제본 서버를 구성합니다.

  1. 필터링

    Azure Database for MySQL 유연한 서버와 다른 클라우드 공급자 또는 온-프레미스의 외부 MySQL 간에 데이터 아웃 복제가 설정되고 있다고 가정합니다. 이 경우 복제 필터를 사용하여 복제본(replica) 서버에서 Azure 사용자 지정 테이블을 필터링해야 합니다. 이 작업은 Replicate_Wild_Ignore_Table = "mysql.__%"를 설정하여 Azure Database for MySQL 유연한 서버 mysql 내부 테이블을 필터링하여 수행할 수 있습니다. 이 서버 매개 변수 수정에 대한 자세한 내용은 MySQL :: MySQL 5.7 참조 설명서 :: 13.4.2.2 CHANGE REPLICATION FILTER 문을 참조하세요.

  2. 서버에 연결하고 복제본 서버에서 MySQL 셸을 열어 복제본 서버를 설정합니다. 프롬프트에서 여러 MySQL 복제 설정을 동시에 구성하는 다음 작업을 실행합니다.

    CHANGE THE REPLICATION SOURCE TO
    SOURCE_HOST='<master_host>',
    SOURCE_USER='<master_user>',
    SOURCE_PASSWORD='<master_password>',
    SOURCE_LOG_FILE='<master_log_file>',
    SOURCE_LOG_POS=<master_log_pos>
    
    • master_host: 원본 서버의 호스트 이름(예: 'source.mysql.database.Azure.com')
    • master_user: 원본 서버의 사용자 이름(예: 'syncuser'@'%')
    • master_password: 원본 서버의 암호
    • master_log_file: 실행 중인 show master status의 이진 로그 파일 이름
    • master_log_pos: 실행 중인 show master status의 이진 로그 위치

    참고 항목

    연결에 SSL을 사용하려면 특성 SOURCE_SSL=1을 명령에 추가합니다. 복제 컨텍스트에서 SSL을 사용하는 방법에 대한 자세한 내용은 https://dev.mysql.com/doc/refman/8.0/en/change-replication-source-to.html을 참조하세요.

  3. 다음 명령을 사용하여 복제본 서버를 활성화합니다.

    START REPLICA;
    

    이 시점에서 복제본 인스턴스가 원본 서버 데이터베이스에 대한 변경 내용을 복제하기 시작합니다. 원본 데이터베이스에 샘플 테이블을 만들고 성공적으로 복제되었는지 확인하여 이를 테스트할 수 있습니다.

  4. 복제 상태를 확인합니다.

    복제 상태를 보려면 복제본 서버에서 show slave status\G 명령을 호출합니다.

     show slave status;
    

    Slave_IO_Running 및 Slave_SQL_Running의 상태가 yes이고 Seconds_Behind_Master 값이 0이라면 복제가 잘 작동하는 것입니다. Seconds_Behind_Master는 복제본의 지연 시간을 나타냅니다. 값이 0이 아니면 복제본 서버에서 업데이트를 처리하고 있는 것입니다.

    복제본 서버가 Azure VM에서 호스팅되는 경우 원본 서버와 복제본 서버가 통신할 수 있게 Azure 서비스 액세스 허용으로 설정합니다. 이 설정은 연결 보안 옵션에서 변경할 수 있습니다. 자세한 내용은 포털을 사용하여 방화벽 규칙 관리를 참조하세요.

    mydumper/myloader를 사용하여 데이터베이스를 덤프한 경우 /backup/metadata 파일에서 master_log_file 및 master_log_pos를 가져올 수 있습니다.

다음 단계