MySQL 데이터베이스를 Azure로 마이그레이션Migrate MySQL databases to Azure

이 문서에서는 가상의 회사 Contoso가 온-프레미스 MySQL 오픈 소스 데이터베이스 플랫폼을 Azure로 계획 하 고 마이그레이션 하는 방법을 보여 줍니다.This article demonstrates how the fictional company Contoso planned and migrated its on-premises MySQL open-source database platform to Azure.

비즈니스 영향 요소Business drivers

IT 리더십 팀은 비즈니스 파트너와 긴밀 하 게 협력 하 여이 마이그레이션을 통해 달성할 수 있는 작업을 이해 하 고 있습니다.The IT leadership team has worked closely with business partners to understand what they want to achieve with this migration. 다음 작업을 수행 하려고 합니다.They want to:

  • 가용성 향상.Increase availability. Contoso에는 MySQL 온-프레미스 환경에 대 한 가용성 문제가 있었습니다.Contoso has had availability issues with its MySQL on-premises environment. 비즈니스에는이 데이터 저장소를 사용 하는 응용 프로그램이 더 안정적으로 필요 합니다.The business requires the applications that use this data store to be more reliable.
  • 효율성 향상.Increase efficiency. Contoso는 개발자와 사용자를 위해 불필요 한 프로시저를 제거 하 고 프로세스를 간소화 해야 합니다.Contoso needs to remove unnecessary procedures and streamline processes for developers and users. 비즈니스는 고객 요구 사항에 더 빠르게 전달할 수 있는 시간이 나 돈을 낭비 하지 않아야 합니다.The business needs IT to be fast and not waste time or money to deliver faster on customer requirements.
  • 민첩성 향상.Increase agility. Contoso IT는 비즈니스 요구 사항에 대해 더 빠르게 대응해야 합니다.Contoso IT needs to be more responsive to the needs of the business. 전 세계 경제에서 성공을 지원 하기 위해 marketplace에서 변경 된 것 보다 더 빠르게 반응 해야 합니다.It must react faster than the changes in the marketplace to enable success in a global economy. 되어서는 안됩니다 비즈니스 차단이 될 것입니다.It mustn't become a business blocker.
  • 배율을.Scale. 비즈니스를 성공적으로 성장 하면서 Contoso는 동일한 속도로 성장 하는 시스템을 제공 해야 합니다.As the business grows successfully, Contoso IT must provide systems that grow at the same pace.

마이그레이션 목표Migration goals

Contoso 클라우드 팀은 이 마이그레이션에 대한 목표를 확정했습니다.The Contoso cloud team has pinned down goals for this migration. 다음과 같은 목표는 최상의 마이그레이션 방법을 결정하는 데 사용되었습니다.These goals were used to determine the best migration method.

요구 사항Requirements 세부 정보Details
가용성Availability 현재 내부 직원은 MySQL 인스턴스에 대 한 호스팅 환경에 하드 시간이 있습니다.Currently internal staff are having a hard time with the hosting environment for the MySQL instance. Contoso는 데이터베이스 계층에 대해 99.99%의 가용성을 제공 하려고 합니다.Contoso wants to have close to 99.99 percent availability for the database layer.
확장성Scalability 온-프레미스 데이터베이스 호스트의 용량이 신속 하 게 실행 됩니다.The on-premises database host is quickly running out of capacity. Contoso는 현재 제한 사항을 기준으로 인스턴스 크기를 조정 하는 방법이 필요 하거나 비용 절감을 위해 비즈니스 환경을 변경 하는 경우 규모를 축소 하는 방법이 필요 합니다.Contoso needs a way to scale its instances past current limitations or scale down if the business environment changes to save on costs.
성능Performance Contoso 인적 자원 (HR) 부서는 매일, 매주 및 매월 여러 보고서를 실행 합니다.The Contoso human resources (HR) department runs various reports daily, weekly, and monthly. 이러한 보고서를 실행 하면 직원 관련 응용 프로그램에 상당한 성능 문제가 발생 합니다.When it runs these reports, it experiences significant performance issues with the employee-facing application. 응용 프로그램 성능에 영향을 주지 않고 보고서를 실행 해야 합니다.It needs to run the reports without affecting application performance.
보안Security Contoso는 해당 데이터베이스가 내부 응용 프로그램에만 액세스할 수 있고 인터넷을 통해 표시 되거나 액세스할 수 없는지를 알고 있어야 합니다.Contoso needs to know that the database is accessible only to its internal applications and isn't visible or accessible via the internet.
MonitoringMonitoring Contoso는 현재 MySQL 데이터베이스 서버의 메트릭을 모니터링 하 고 CPU, 메모리 또는 저장소에 문제가 있는 경우 알림을 제공 하는 도구를 사용 합니다.Contoso currently uses tools to monitor the metrics of the MySQL database server and provide notifications when CPU, memory, or storage have issues. 이 회사는 Azure에서 이와 동일한 기능을 원합니다.The company wants to have this same capability in Azure.
비즈니스 연속성Business continuity HR 데이터 저장소는 Contoso의 일상 작업에서 중요 한 부분입니다.The HR data store is an important part of Contoso's daily operations. 손상 되었거나 복원 해야 하는 경우 회사는 최대한 많은 가동 중지 시간을 최소화 하려고 합니다.If it became corrupted or needed to be restored, the company wants to minimize downtime as much as possible.
AzureAzure Contoso는 Vm에서 응용 프로그램을 실행 하지 않고 Azure로 이동 하려고 합니다.Contoso wants to move the application to Azure without running it on VMs. Contoso는 데이터 계층에 대해 Azure PaaS (platform as a service) 서비스를 사용 하려고 합니다.Contoso wants to use Azure platform as a service (PaaS) services for the data tier.

솔루션 디자인Solution design

Contoso는 목표와 요구 사항을 고정 한 후 배포 솔루션을 설계 및 검토 하 고 마이그레이션 프로세스를 식별 합니다.After pinning down goals and requirements, Contoso designs and reviews a deployment solution and identifies the migration process. 마이그레이션에 사용할 도구와 서비스도 파악 됩니다.The tools and services that it will use for migration are also identified.

현재 응용 프로그램Current application

MySQL 데이터베이스는 회사의 HR 학과의 모든 측면에 사용 되는 직원 데이터를 저장 합니다.The MySQL database stores employee data that's used for all aspects of the company's HR department. 램프 기반 응용 프로그램은 직원 HR 요청을 처리 하기 위한 프런트 엔드로 사용 됩니다.A LAMP-based application is used as the front end to handle employee HR requests. Contoso에는 전 세계 10만 명의 직원이 있으므로 작동 시간이 중요 합니다.Contoso has 100,000 employees worldwide, so uptime is important.

제안된 솔루션Proposed solution

Azure Database Migration Service를 사용 하 여 데이터베이스를 Azure Database for MySQL 인스턴스로 마이그레이션합니다.Use Azure Database Migration Service to migrate the database to an Azure Database for MySQL instance. 새 Azure Database for MySQL 인스턴스를 사용 하도록 모든 응용 프로그램 및 프로세스를 수정 합니다.Modify all applications and processes to use the new Azure Database for MySQL instance.

데이터베이스 고려 사항Database considerations

솔루션 설계 프로세스의 일부로 Contoso는 Azure에서 MySQL 데이터를 호스팅하기 위해 Azure의 기능을 검토 했습니다.As part of the solution design process, Contoso reviewed the features in Azure for hosting its MySQL data. 회사에서 Azure를 사용 하기로 결정할 때 다음 사항을 고려해 야 합니다.The following considerations helped the company decide to use Azure:

  • Azure SQL Database와 마찬가지로 Azure Database for MySQL 방화벽 규칙을 허용 합니다.Similar to Azure SQL Database, Azure Database for MySQL allows for firewall rules.
  • Azure Virtual Network 에서 Azure Database for MySQL를 사용 하 여 인스턴스를 공개적으로 액세스할 수 없도록 할 수 있습니다.Azure Database for MySQL can be used with Azure Virtual Network to prevent the instance from being publicly accessible.
  • Azure Database for MySQL에는 Contoso가 감사를 위해 충족 해야 하는 필수 준수 및 개인 정보 인증이 있습니다.Azure Database for MySQL has the required compliance and privacy certifications that Contoso must meet for its auditors.
  • 읽기 복제본을 사용 하 여 보고서 및 응용 프로그램 처리 성능이 향상 됩니다.Report and application processing performance will be enhanced by using read replicas.
  • Azure 개인 링크를 사용 하 여 내부 네트워크 트래픽에만 (공용 액세스 없음) 서비스를 노출 하는 기능입니다.Ability to expose the service to internal network traffic only (no public access) by using Azure Private Link.
  • Contoso는 나중에 MariaDB ColumnStore 및 graph 데이터베이스 모델 사용을 고려 하 고 있으므로 Azure Database for MySQL로 이동 하지 않기로 선택 했습니다.Contoso chose not to move to Azure Database for MySQL because it's considering using the MariaDB ColumnStore and graph database model in the future.
  • MySQL 기능 외에도 Contoso는 진정한 오픈 소스 프로젝트의 proponent MySQL을 사용 하지 않도록 선택 했습니다.Aside from MySQL features, Contoso is a proponent of true open-source projects and chose not to use MySQL.
  • 응용 프로그램에서 데이터베이스로의 대역폭과 대기 시간은 선택 된 게이트웨이 (Azure express 경로 또는 사이트 간 VPN)를 기반으로 충분 합니다.The bandwidth and latency from the application to the database will be sufficient enough based on the chosen gateway (either Azure ExpressRoute or Site-to-Site VPN).

솔루션 검토Solution review

Contoso는 장점 및 단점 목록을 함께 조합하여 제안된 디자인을 평가합니다.Contoso evaluates the proposed design by putting together a pros and cons list.

고려 사항Consideration 세부 정보Details
장점Pros Azure Database for MySQL는 고가용성을 위해 99.99% 재정적 지원 되는 SLA (서비스 수준 계약)를 제공 합니다.Azure Database for MySQL offers a 99.99 percent financially backed service-level agreement (SLA) for high availability.

Azure는 분기별로 최대 로드 시간 동안 규모를 확장 또는 축소할 수 있는 기능을 제공 합니다.Azure offers the ability to scale up or down during peak load times each quarter. Contoso는 예약 된 용량을 구매 하 여 훨씬 더 많은 비용을 절감할 수 있습니다.Contoso can save even more by purchasing reserved capacity.

Azure는 Azure Database for MySQL에 대 한 지정 시간 복원 및 지역 복원 기능을 제공 합니다.Azure provides point-in-time restore and geo-restore capabilities for Azure Database for MySQL.

단점Cons Contoso는 현재 10.2 및 10.3 인 Azure에서 지원 되는 MySQL 릴리스 버전으로 제한 됩니다.Contoso is limited to the MySQL release versions that are supported in Azure, which are currently 10.2 and 10.3.

저장소 크기를 조정 하는 것과 같은 몇 가지 제한 사항이Azure Database for MySQL 있습니다.Azure Database for MySQL has some limitations, such as scaling down storage.

제안된 아키텍처Proposed architecture

다이어그램은 시나리오 아키텍처를 보여 줍니다. 그림 1: 시나리오 아키텍처Diagram shows the scenario architecture. Figure 1: Scenario architecture.

마이그레이션 프로세스Migration process

준비Preparation

MySQL 데이터베이스를 마이그레이션하려면 성공적인 마이그레이션을 위해 해당 인스턴스가 모든 Azure 필수 구성 요소를 충족 하는지 확인 해야 합니다.Before you can migrate your MySQL databases, you need to ensure that those instances meet all the Azure prerequisites for a successful migration.

지원되는 버전Supported versions

MySQL은 x.y.z 버전 관리 체계를 사용 합니다 x . 여기서는 주 버전이 고는 부 버전이 며은 y z 패치 버전입니다.MySQL uses the x.y.z versioning scheme, where x is the major version, y is the minor version, and z is the patch version.

Azure는 현재 MySQL 버전 10.2.25 및 10.3.16를 지원 합니다.Azure currently supports MySQL versions 10.2.25 and 10.3.16.

Azure는 패치 업데이트에 대 한 업그레이드를 자동으로 관리 합니다.Azure automatically manages upgrades for patch updates. 예는 10.2.23로 10.2.21.Examples are 10.2.21 to 10.2.23. 부 버전 및 주 버전 업그레이드는 지원 되지 않습니다.Minor and major version upgrades aren't supported. 예를 들어 MySQL 10.2에서 MySQL 10.3으로 업그레이드 하는 것은 지원 되지 않습니다.For example, upgrading from MySQL 10.2 to MySQL 10.3 isn't supported. 10.2에서 10.3로 업그레이드 하려면 덤프를 사용 하 여 새 엔진 버전으로 만든 서버에 복원 합니다.If you want to upgrade from 10.2 to 10.3, take a dump and restore it to a server created with the new engine version.

네트워크Network

Contoso는 해당 MySQL 데이터베이스가 있는 가상 네트워크에 대 한 온-프레미스 환경에서 가상 네트워크 게이트웨이 연결을 설정 해야 합니다.Contoso needs to set up a virtual network gateway connection from its on-premises environment to the virtual network where its MySQL database is located. 이 연결을 통해 연결 문자열이 업데이트 될 때 온-프레미스 응용 프로그램에서 게이트웨이를 통해 데이터베이스에 액세스할 수 있습니다.This connection allows the on-premises application to access the database over the gateway when the connection strings are updated.

다이어그램에는 마이그레이션 프로세스가 표시 됩니다. 그림 2: 마이그레이션 프로세스Diagram shows the migration process. Figure 2: The migration process.

마이그레이션Migration

Contoso 관리자는 Azure Database Migration Service를 사용 하 여 데이터베이스를 마이그레이션하고 단계별 마이그레이션 자습서를 수행 합니다.Contoso admins migrate the database by using Azure Database Migration Service and following the step-by-step migration tutorial. MySQL 5.6 또는 5.7을 사용 하 여 온라인, 오프 라인 및 하이브리드 (미리 보기) 마이그레이션을 수행할 수 있습니다.They can perform online, offline, and hybrid (preview) migrations by using MySQL 5.6 or 5.7.

참고

MySQL 8.0은 Azure Database for MySQL에서 지원 됩니다.MySQL 8.0 is supported in Azure Database for MySQL. Database Migration Service 도구는 해당 버전을 아직 지원 하지 않습니다.The Database Migration Service tool doesn't yet support that version.

요약 하자면, 다음 작업을 수행 해야 합니다.As a summary, they must do the following tasks:

  • 모든 마이그레이션 필수 구성 요소가 충족 되는지 확인 합니다.Ensure all migration prerequisites are met:

    • MySQL 데이터베이스 서버 원본은 Azure Database for MySQL 지 원하는 버전과 일치 해야 합니다.The MySQL database server source must match the version that Azure Database for MySQL supports. Azure Database for MySQL은 MySQL Community Edition, InnoDB 저장소 엔진 및 동일한 버전을 사용 하는 원본과 대상 간의 마이그레이션을 지원 합니다.Azure Database for MySQL supports MySQL Community Edition, the InnoDB storage engine, and migration across source and target with the same versions.
    • my.ini(Windows) 또는 (Unix)에서 이진 로깅을 사용 하도록 설정 my.cnf 합니다.Enable binary logging in my.ini (Windows) or my.cnf (Unix). 이진 로깅을 사용 하도록 설정 하지 않으면 마이그레이션 마법사에서 다음과 같은 오류가 발생 합니다. Error in binary logging. Variable binlog_row_image has value 'minimal.' please change it to 'full'. 자세한 내용은 MySQL 설명서를 참조 하세요.Failure to enable binary logging causes the following error in the Migration Wizard: Error in binary logging. Variable binlog_row_image has value 'minimal.' please change it to 'full'. For more information, see the MySQL documentation.
    • 사용자에 게 역할이 있어야 합니다 ReplicationAdmin .User must have the ReplicationAdmin role.
    • 외래 키 및 트리거 없이 데이터베이스 스키마를 마이그레이션합니다.Migrate the database schemas without foreign keys and triggers.
  • Express 경로 또는 VPN을 통해 온-프레미스 네트워크에 연결 하는 가상 네트워크를 만듭니다.Create a virtual network that connects via ExpressRoute or a VPN to your on-premises network.

  • Premium가상 네트워크에 연결 된 SKU를 사용 하 여 Azure Database Migration Service 인스턴스를 만듭니다.Create an Azure Database Migration Service instance with a Premium SKU that's connected to the virtual network.

  • 인스턴스가 가상 네트워크를 통해 MySQL 데이터베이스에 액세스할 수 있는지 확인 합니다.Ensure that the instance can access the MySQL database via the virtual network. 모든 수신 포트가 가상 네트워크 수준, 네트워크 VPN 및 MySQL을 호스트 하는 컴퓨터에서 Azure에 대해 허용 되는지 확인 합니다.Make sure that all incoming ports are allowed from Azure to MySQL at the virtual network level, the network VPN, and the machine that hosts MySQL.

  • 새 Database Migration Service 프로젝트를 만듭니다.Create a new Database Migration Service project:

    새 Database Migration Service 프로젝트 그림 3: Azure Database Migration Service 프로젝트 를 만드는 방법을 보여 주는 스크린샷Screenshot shows how to create a new Database Migration Service project Figure 3: An Azure Database Migration Service project.

네이티브 도구를 사용 하 여 마이그레이션Migration by using native tools

Azure Database Migration Service를 사용 하는 대신, Contoso는 MySQL 워크 벤치, mysqldump, Toad 또는 Navicat와 같은 일반적인 유틸리티와 도구를 사용 하 여 데이터에 연결 하 고 데이터를 Azure Database for MySQL에 마이그레이션할 수 있습니다.As an alternative to using Azure Database Migration Service, Contoso can use common utilities and tools such as MySQL Workbench, mysqldump, Toad, or Navicat to connect to and migrate data to Azure Database for MySQL.

  • Mysqldump를 사용 하 여 덤프 및 복원:Dump and restore with mysqldump:
    • Mysqldump의 제외-트리거 옵션을 사용 하 여 가져오기 중에 트리거가 실행 되지 않도록 하 고 성능을 향상 시킬 수 있습니다.Use the exclude-triggers option in mysqldump to prevent triggers from executing during import and improve performance.
    • 단일 트랜잭션 옵션을 사용 하 여 변환 격리 모드를로 설정 하 REPEATABLE READ 고 데이터를 START TRANSACTION 덤프 하기 전에 SQL 문을 보냅니다.Use the single-transaction option to set the translation isolation mode to REPEATABLE READ, and send a START TRANSACTION SQL statement before you dump data.
    • Mysqldump에서 키 사용 안 함 옵션을 사용 하 여 로드 전에 foreign key 제약 조건을 사용 하지 않도록 설정 합니다.Use the disable-keys option in mysqldump to disable foreign key constraints before load. 제약 조건을 제거 하면 성능 향상이 제공 됩니다.Removing constraints provides performance gains.
    • Azure Blob Storage를 사용 하 여 백업 파일을 저장 하 고 더 빠른 복원에 대해이 파일에서 복원을 수행 합니다.Use Azure Blob Storage to store the backup files and perform the restore from there for faster restore.
    • 응용 프로그램 연결 문자열을 업데이트 합니다.Update application connection strings.
    • 데이터베이스가 마이그레이션된 후 Contoso는 새 Azure Database for MySQL를 가리키도록 연결 문자열을 업데이트 해야 합니다.After the database is migrated, Contoso must update the connection strings to point to the new Azure Database for MySQL.

마이그레이션 후 정리Clean up after migration

마이그레이션 후 Contoso는 보존 목적으로 온-프레미스 데이터베이스를 백업 하 고 온-프레미스 MySQL 데이터베이스 서버를 사용 중지 해야 합니다.After migration, Contoso needs to back up the on-premises database for retention purposes and retire the on-premises MySQL database server.

배포 검토Review the deployment

Contoso는 Azure에서 마이그레이션된 리소스를 사용하여 새 인프라를 완벽하게 운영하고 보호해야 합니다.With the migrated resources in Azure, Contoso needs to fully operationalize and secure its new infrastructure.

보안Security

Contoso는 다음을 수행 해야 합니다.Contoso needs to:

  • 새 Azure Database for MySQL 인스턴스 및 데이터베이스가 안전한 지 확인 합니다.Ensure that its new Azure Database for MySQL instance and databases are secure. 자세한 내용은 Azure Database for MySQL의 보안을 참조 하세요.For more information, see Security in Azure Database for MySQL.
  • 방화벽 및 가상 네트워크 구성을 검토 합니다.Review the firewall and virtual network configurations.
  • 모든 데이터베이스 트래픽이 Azure 및 온-프레미스 네트워크 내에 유지 되도록 개인 링크를 설정 합니다.Set up Private Link so that all database traffic is kept inside Azure and the on-premises network.
  • Microsoft Defender에서 Id를 사용 하도록 설정 합니다.Enable Microsoft Defender for Identity.

BackupBackups

지역 가동 중단이 발생 하는 경우 쌍을 이루는 지역에서 백업을 사용할 수 있도록 지역 복원을 사용 하 여 Azure Database for MySQL 인스턴스를 백업 해야 합니다.Ensure that the Azure Database for MySQL instances are backed up by using geo-restore, so that backups can be used in a paired region if a regional outage occurs.

중요

Azure Database for MySQL 리소스가 삭제 되는 것을 방지 하기 위해 리소스 잠금을 보유 하 고 있는지 확인 합니다.Ensure that the Azure Database for MySQL resource has a resource lock to prevent it from being deleted. 삭제 된 서버는 복원할 수 없습니다.Deleted servers can't be restored.

라이선스 및 비용 최적화Licensing and cost optimization

  • Azure Database for MySQL 확장 하거나 축소할 수 있습니다.Azure Database for MySQL can be scaled up or down. 서버 및 데이터베이스의 성능을 모니터링 하는 것은 비용을 최소화 하면서 요구 사항을 충족 하는지 확인 하는 데 중요 합니다.Monitoring the performance of the server and databases is important to ensure your requirements are met while minimizing costs.
  • CPU와 저장소에는 관련 된 비용이 있습니다.Both CPU and storage have costs associated. 몇 가지 가격 책정 계층을 사용할 수 있습니다.Several pricing tiers are available. 각 데이터 작업에 대해 적절 한 가격 책정 계획을 선택 해야 합니다.Be sure the appropriate pricing plan is selected for each data workload.
  • 각 읽기 복제본은 선택 된 계산 및 저장소에 따라 요금이 청구 됩니다.Each read replica is billed based on the compute and storage selected.
  • 예약 된 용량을 사용 하 여 비용을 절감할 수 있습니다.Use reserved capacity to save on costs.

결론Conclusion

이 문서에서 Contoso는 MySQL 데이터베이스를 Azure Database for MySQL 인스턴스로 마이그레이션 했습니다.In this article, Contoso migrated its MySQL databases to an Azure Database for MySQL instance.