Azure Database for MySQL 소개

완료됨

Azure에서 조직 MySQL 데이터베이스를 호스팅하는 유연한 서버(미리 보기)로 Azure Database for MySQL을 배포할 수 있습니다. 예측 가능한 성능과 동적 스케일링 기능을 갖추고 있으며 중요 업무용 워크로드를 처리할 수 있는 완전 관리형 DaaS(Database as a Service)입니다.

다년간의 온-프레미스 MySQL 설치 실행 및 관리 경험이 있는 데이터베이스 개발자로서 Azure Database for MySQL에서 서비스의 기능을 지원하고 스케일링하는 방법을 살펴보려고 합니다.

이 단원에서는 Azure Database for PostgreSQL의 가격 책정, 버전 지원, 복제 및 스케일링 옵션을 살펴보겠습니다.

Azure Database for MySQL의 이점 이해

Azure Database for MySQL은 Azure Database for MySQL 서버로 프로비저닝됩니다. Azure Database for MySQL 서버는 온-프레미스 MySQL 서버에 해당하며 여러 MySQL 데이터베이스를 관리하는 중앙 지점을 제공합니다.

Azure Database for MySQL 데이터베이스를 만들려면 먼저 Azure Database for MySQL 서버를 프로비저닝해야 합니다. Azure Database for MySQL 서버는 하나 또는 여러 데이터베이스의 부모이며 데이터베이스에 대한 네임스페이스를 제공합니다. 서버를 삭제하면 해당 서버에 포함된 모든 데이터베이스가 삭제됩니다.

Azure Database for MySQL 서버는 어떤 기능을 제공하나요?

Azure Database for MySQL 서비스에는 필요에 따라 추가 비용 및 스케일링 성능 없이 고가용성이 포함됩니다. 사용한 양만큼만 요금을 지불합니다. 특정 시점 복원을 사용한 자동 백업이 제공됩니다.

서버는 방화벽 규칙을 적용하고 필요에 따라 SSL 연결을 요구하는 연결 보안을 제공합니다. 서버 매개 변수를 여러 개 사용하면 잠금 모드, 최대 연결 수, 시간 제한과 같은 서버 설정을 구성할 수 있습니다. ‘동적’으로 표시된 매개 변수에 대한 변경 내용은 즉시 적용됩니다. 정적 매개 변수를 사용하려면 서버를 다시 시작해야 합니다. 포털의 개요 페이지에 있는 다시 시작 단추를 사용하여 서버를 다시 시작합니다.

Azure Database for MySQL 서버에는 경고를 추가하고 메트릭 및 로그를 볼 수 있는 모니터링 기능이 포함되어 있습니다.

가격 책정 계층

가격 책정 계층에서는 1개에서 64개의 vCore, 5GB에서 4TB의 스토리지 등 광범위한 성능과 용량을 지원합니다. 기본 가격 책정 계층은 간단한 컴퓨팅 워크로드용으로 설계되었으며 코어당 메모리가 2GB인 vCore를 2개까지 지원합니다. 범용 가격 책정 계층은 대부분의 비즈니스 워크로드에 적합하며 코어당 메모리가 5GB인 vCore를 2개에서 64개까지 지원합니다. 메모리 최적화 가격 책정 계층은 2개에서 32개의 vCore를 지원하고, vCore당 메모리가 10GB이며, 실시간 데이터 분석을 비롯한 고성능 워크로드를 위한 것입니다. 범용 가격 책정 계층과 메모리 최적화 가격 책정 계층 간에 전환하고 몇 초 이내에 vCore 수 또는 스토리지를 변경할 수 있지만 기본 가격 책정 계층으로 또는 기본 가격 책정 계층에서 이동할 수 없습니다.

Image showing the pricing tiers in the Azure portal

가격 책정 계층 및 vCore 수를 기반으로 하는 연결 제한이 있습니다. 자세한 내용은 Azure Database for MySQL의 제한 사항을 참조하세요.

버전 관리 및 업그레이드

Azure Database for MySQL에서는 버전 5.6(버그 수정 릴리스 5.6.42), 5.7(버그 수정 릴리스 5.7.24) 및 8.0(버그 수정 릴리스 8.0.15 포함)을 지원합니다.

참고

게이트웨이는 연결을 서버 인스턴스로 리디렉션합니다. MySQL 클라이언트는 서버 인스턴스 버전이 아닌 게이트웨이 버전을 표시합니다. 서버 인스턴스 버전을 보려면 SELECT VERSION(); 명령을 사용합니다.

버그 수정 버전은 자동으로 적용되지만, 버전 업그레이드는 지원되지 않습니다. 한 버전에서 다른 버전으로 업그레이드하려면 덤프 및 복원을 수행해야 합니다.

확장성

앞에서 설명한 것처럼, 기본 가격 책정 계층에서는 계층을 변경할 수 없습니다. 하지만 vCore 수, 하드웨어 세대, 스토리지 볼륨 및 백업 보존 기간은 변경할 수 있습니다. 범용 및 메모리 최적화 가격 책정 계층 간에도 계층을 전환할 수 있습니다.

스토리지는 증가하기만 하고 감소하지 않으며 자동 증가하도록 설정할 수 있습니다. 자동 증가를 사용하는 경우 사용 가능한 스토리지가 1GB 미만이거나 스토리지가 100GB 미만인 서버의 경우 스토리지 볼륨의 10% 미만이면 스토리지가 5GB씩 증가합니다. 100GB를 초과하는 서버의 경우 사용 가능한 스토리지가 5% 미만이면 스토리지가 5%씩 증가합니다.

고가용성

Azure Database for MySQL에는 99.99%의 가용성과 관련하여 재정적 지원이 제공되는 Service Level Agreement(서비스 수준 약정)가 포함되어 있습니다. 하드웨어 오류 또는 서비스 배포가 있는 경우 새 노드가 자동으로 만들어지며 스토리지가 이 노드에 연결됩니다. 장애 조치(failover)는 수십 초 내에 완료됩니다.

Azure Database for MySQL 서버 인스턴스를 스케일 업 또는 스케일 다운하면 데이터 스토리지를 새 인스턴스에 연결하는 것과 비슷한 프로세스가 발생합니다. 장애 조치(failover)가 발생하거나, 스케일 업 또는 스케일 다운이 발생하거나, 클라이언트와 Azure 간에 인터넷 트래픽이 중단되면 클라이언트에 일시적인 연결 오류가 발생할 수 있습니다. 애플리케이션에 재시도 논리를 포함하는 것이 중요합니다. 장애 조치(failover)의 경우 게이트웨이는 새 노드에 트래픽을 전달하며 클라이언트에 구성이 필요하지 않습니다.

일시적인 오류 처리 방법에 대한 자세한 내용은 Azure Database for MySQL의 일시적인 연결 오류 처리를 참조하세요.

Azure Database for MySQL에 데이터 복제

입력 데이터 복제

입력 데이터 복제는 MySQL의 네이티브 복제 기능을 사용하여 외부 MySQL 서버에서 Azure Database for MySQL로 데이터를 복제합니다. 기존 온-프레미스 MySQL 인스턴스와 Azure 기반 복제본을 사용하여 하이브리드 환경을 프로비저닝하려는 경우 유용합니다. 이 시나리오에서는 전역적으로 분산된 시스템의 사용자에게 로컬 데이터를 제공합니다. 입력 데이터 복제를 사용하여 다른 클라우드 공급자가 호스트하는 가상 머신 또는 MySQL 데이터베이스 서비스에서 데이터를 복제할 수도 있습니다.

입력 데이터 복제에 대한 고려 사항

입력 데이터 복제와 관련하여 고려해야 할 몇 가지 요소는 다음과 같습니다.

  • 마스터 서버와 복제본 서버는 버전이 동일해야 하며 버전 5.6 이상이어야 합니다.
  • 마스터 및 복제본은 InnoDB 엔진을 사용해야 합니다.
  • 모든 테이블에는 기본 키가 있어야 합니다.
  • Azure Database for MySQL 서버는 범용 또는 메모리 최적화 가격 책정 계층이어야 합니다.
  • 사용자를 만들고 마스터 서버에서 이진 로깅을 구성할 권한이 있어야 합니다.
  • mysql 시스템 데이터베이스는 복제되지 않습니다. 계정 및 사용 권한은 마스터 서버에서 복제본으로 복제되지 않으므로 수동으로 만들어야 합니다.

입력 데이터 복제 구성 단계

입력 데이터 복제를 구성하는 여러 단계는 다음과 같습니다.

  • 복제본의 호스트로 사용할 Azure Database for MySQL 서버를 만들고 필요한 사용자 계정 및 권한을 생성합니다.
  • 마스터 서버에서 복제를 구성합니다.
  • 마스터 서버를 덤프하고 복원합니다.
  • 입력 데이터 복제 저장 프로시저를 사용하여 대상 서버를 구성합니다.

자세한 내용은 How to configure Azure Database for MySQL Data-in Replication(Azure Database for MySQL 입력 데이터 복제를 구성하는 방법)을 참조하세요.

읽기 복제본

읽기 복제본은 네이티브 MySQL 복제 기술을 사용하여 Azure Database for MySQL 서버의 비동기 복제본 인스턴스를 생성합니다. 복제본 서버는 읽기 전용이며 마스터마다 최대 5개의 복제본이 있을 수 있습니다. 개별 읽기 복제본의 월별 비용은 사용하는 vCore 및 스토리지에 따라 청구됩니다.

읽기 복제본 사용

보고 서버

마스터 서버의 읽기 전용 복제본을 만들어 모든 보고, BI, 분석 워크로드를 복제본으로 전달합니다. 이렇게 하면 마스터 서버에서 워크로드가 제거되므로 마스터 서버에서 쓰기 집약적인 워크로드를 실행할 때 충돌이 줄어듭니다.

사용자에게 가까운 데이터 가져오기

지역 간 복제본을 만들고 사용자에게 가까운 데이터를 가져와서 읽기 속도를 개선합니다. 지역 간 복제본은 범용 복제본 지역 또는 마스터 서버의 쌍을 이루는 지역에 있을 수 있습니다. 복제본 서버를 만들 때 사용 가능한 지역이 나열됩니다.

Image showing replica regions

읽기 복제본 구성

읽기 복제본은 Azure Portal에서 구성합니다.

Image showing replication setting in the Azure portal

그런 다음, 복제본의 이름과 지역을 지정합니다.

Image showing replication in the Azure portal

참고 항목

기본 가격 책정 계층에서는 읽기 복제본을 사용할 수 없습니다.

읽기 복제본에 대한 자세한 내용은 Azure Database for MySQL의 읽기 복제본을 참조하세요.

관리 및 모니터링

Azure Database for MySQL에는 서버를 최적화하고, 이벤트에 대한 알림을 받고, 메트릭에 사전 대응하는 데 도움이 되는 다양한 모니터링 도구가 있습니다. 최신 버전의 MySQL Workbench, PHPMyAdmin 및 Navicat과 같은 친숙한 MySQL 관리 도구를 사용하여 Azure Database for MySQL 서버를 관리하고 모니터링할 수도 있습니다.

Image showing the MySQL Workbench tool connected to Azure Database for MySQL

Azure Database for MySQL 모니터링용 Azure 도구

Azure Portal에서 Azure Database for MySQL을 관리하고 모니터링하는 데 사용할 수 있는 도구는 다음과 같습니다.

  • Azure 메트릭. 메트릭은 1분마다 숫자 데이터를 제공하며 30일 동안 저장됩니다. 서버를 모니터링하는 데 사용하는 다양한 메트릭이 있습니다. 메트릭에 대응하도록 경고를 구성할 수도 있습니다.

    Image showing Azure metrics

    자세한 내용은 Azure Monitor 데이터 플랫폼을 참조하세요.

  • 서버 및 감사 로그. 서버 로그를 사용하여 느린 쿼리를 모니터링하고 서버에 대한 감사 로깅을 제공할 수 있습니다. Azure 진단 로그를 통해 MySQL용 SQL Database 외부에서 서버 로그를 사용할 수 있습니다.

    Image showing Azure server logs

    자세한 내용은 Slow query logs in Azure Database for MySQL(Azure Database for MySQL의 느린 쿼리 로그)을 참조하세요. 감사 로그는 데이터베이스 작업을 추적하기 위한 감사 로깅을 제공하는 미리 보기 기능입니다. 감사 로깅을 설정하려면 audit_log_enabled 매개 변수를 설정으로 지정합니다. 감사 로그에 대한 자세한 내용은 Audit Logs in Azure Database for MySQL(Azure Database for MySQL의 감사 로그)을 참조하세요.

  • 쿼리 저장소. 시간 경과에 따른 서버 성능을 추적하고 문제 해결 정보를 제공하는 데 사용됩니다. 쿼리 저장소는 많은 리소스가 필요하거나 장기간 실행되는 쿼리를 식별할 수 있도록 쿼리 기록과 런타임 통계를 유지합니다. 쿼리 저장소를 사용하도록 설정하려면 query_store_capture_mode 서버 매개 변수를 ALL로 설정합니다. Image showing Query Store capture mode

    쿼리에 대한 쿼리 저장소 데이터를 보려면 다음 쿼리를 실행합니다.

    SELECT * FROM mysql.query_store;
    

    대기 통계에 대한 데이터를 보려면 다음 쿼리를 실행합니다.

    SELECT * FROM mysql.query_store_wait_stats;
    

    참고

    쿼리 저장소는 미리 보기 기능이며 기본 가격 책정 계층에서는 사용할 수 없습니다.

    쿼리 저장소에 대한 자세한 내용은 쿼리 저장소를 사용하여 Azure Database for MySQL 성능 모니터링을 참조하세요.

  • Query Performance Insight. Query Performance Insight는 성능에 영향을 주는 쿼리를 식별할 수 있도록 쿼리 저장소의 데이터를 시각화된 방식으로 표시합니다. Query Performance Insight는 Azure Portal에 있는 Azure Database for MySQL의 인텔리전트 성능 섹션에 있습니다.

    참고

    Query Performance Insight는 미리 보기 기능이며 기본 가격 책정 계층에서는 사용할 수 없습니다.

    Query Performance Insight에 대한 자세한 내용은 Azure Database for MySQL의 Query Performance Insight를 참조하세요.

  • 성능 권장 사항. 성능 권장 사항은 쿼리 저장소의 데이터를 사용하여 워크로드를 분석하고 이 데이터를 데이터베이스 특성과 결합하여 성능을 높일 새로운 인덱스를 제안합니다. 성능 권장 사항은 Azure Portal에 있는 Azure Database for MySQL의 인텔리전트 성능 섹션에 있습니다.

    참고

    성능 권장 사항은 미리 보기 기능이며 기본 가격 책정 계층에서는 사용할 수 없습니다.

    성능 권장 사항에 대한 자세한 내용은 Azure Database for MySQL의 성능 권장 사항을 참조하세요.

클라이언트 연결

MySQL 드라이버

Azure Database for MySQL은 MySQL Community Edition을 사용하며 광범위한 드라이버와 호환되므로 다양한 프로그래밍 언어를 지원합니다. 연결 문자열은 Azure Portal에 제공되어 있습니다.

Image showing connection strings

MySQL 드라이버에 대한 자세한 내용은 Azure Database for MySQL과 호환되는 MySQL 드라이버 및 관리 도구를 참조하세요.

방화벽 구성

방화벽을 구성하는 가장 간단한 방법은 Azure Portal에서 서비스에 대한 연결 보안 설정을 사용하는 것입니다. 각 클라이언트 IP 주소 범위에 대한 규칙을 추가하세요. 이 페이지를 사용하여 서비스에 대한 SSL 연결을 적용할 수도 있습니다.

Image showing the firewall configuration for Azure Database for PostgreSQL

도구 모음에서 클라이언트 IP 추가를 클릭하여 데스크톱 컴퓨터의 IP 주소를 추가합니다.

읽기 전용 복제본을 구성한 경우 클라이언트에서 액세스할 수 있도록 각 복제본에 방화벽 규칙을 추가해야 합니다.

일시적인 연결 오류

인터넷을 통해 데이터베이스에 연결하는 경우 일시적인 연결 오류는 불가피하며 클라이언트 애플리케이션에서 처리되어야 합니다.

일시적인 연결 오류에 대한 자세한 내용은 Azure Database for MySQL에 대한 일시적인 연결 오류 처리를 참조하세요.

Azure Database for MySQL에서 지원되지 않는 MySQL 기능

MySQL의 기능 대부분을 Azure Database for MySQL에서 사용할 수 있지만, 일부 기능은 지원되지 않습니다. 마이그레이션할 때 잠재적인 문제를 해결할 수 있도록 이러한 기능을 검토해야 합니다.

스토리지 엔진

Azure Database for MySQL은 InnoDB 및 MEMORY 스토리지 엔진을 지원합니다. InnoDB는 MySQL의 기본 스토리지 엔진으로, 높은 성능과 높은 안정성 간에 균형을 제공합니다. 달리 지정되지 않은 경우 MySQL의 모든 새 테이블은 InnoDB 스토리지 엔진을 사용합니다.

InnoDB 스토리지 엔진에 대한 자세한 내용은 Introduction to InnoDB(InnoDB 소개)를 참조하세요.

메모리에 데이터를 저장하기 위해 MEMORY 스토리지 엔진을 사용할 수 있습니다. 이러한 데이터는 임의 형태의 크래시 또는 중단으로 위험에 처할 수 있습니다. 임시 고성능 저장소로는 MEMORY 스토리지 엔진만 사용해야 합니다.

MEMORY 스토리지 엔진에 대한 자세한 내용은 The MEMORY Storage Engine(MEMORY 스토리지 엔진)을 참조하세요.

MyISAM, BLACKHOLE, ARCHIVE 및 FEDERATED 스토리지 엔진은 Azure Database for MySQL에서 지원되지 않습니다. MyISAM 데이터는 InnoDB 스토리지 엔진으로 변환해야 합니다. BLACKHOLE, ARCHIVE 및 FEDERATED 스토리지 엔진에는 전문 역할이 있으며 일반적인 데이터 저장소로 사용되지 않습니다.

권한 및 역할

많은 서버 설정과 매개 변수가 트랜잭션 규칙을 중단하고 성능을 저하시킬 수 있으므로 DBA 역할은 노출되지 않습니다. 이와 유사한 이유로 SUPER 권한을 사용하는 DEFINER 절에서처럼, SUPER 권한이 제한됩니다.

복원

Azure Database for MySQL에서는 두 개의 복원 기능이 서로 다르게 작동합니다.

  • 특정 시점 복원에서는 기반으로 하는 서버와 동일한 구성을 사용하여 새 서버를 생성합니다.
  • 삭제된 서버는 복원할 수 없습니다.