마이그레이션 접근 방식
온라인 또는 오프라인 마이그레이션, 백업 및 복원 마이그레이션 또는 사용자 지정 SQL 코드나 스크립트를 사용한 마이그레이션과 같은 데이터베이스 마이그레이션에 대한 다양한 접근 방식을 취할 수 있습니다. 각 접근 방식은 특정 비즈니스 시나리오에 가장 적합합니다.
예를 들어 스타트업 회사에는 공급업체 통신 데이터베이스가 중요하며 사용자에 대한 서비스를 중단하지 않고 마이그레이션해야 합니다. 회사의 이 부서는 연중무휴로 운영되며 데이터베이스를 오프라인으로 전환할 수 있는 한가한 시간을 거의 예측할 수 없습니다. 반면 CAD(Computer Aided Design) 시스템은 주중에만 사용되므로 주말에 오프라인으로 전환하고 Azure로 마이그레이션할 수 있습니다.
여기서는 마이그레이션을 실행하는 데 선택할 수 있는 접근 방식, 기술 및 도구에 대해 알아봅니다.
내보내기 및 가져오기를 사용하는 경우
내보내기 및 가져오기 기술을 사용하면 마이그레이션을 통해 이동한 데이터와 스키마를 제어할 수 있습니다. 새 데이터베이스로 마이그레이션할 데이터를 선택하고 마이그레이션 중에 데이터를 정리하거나 수정하려면 내보내기 및 가져오기 도구를 사용합니다.
다음과 같은 경우 내보내기 및 가져오기 기술을 사용하는 것이 좋습니다.
클라우드 데이터베이스로 마이그레이션할 온-프레미스 데이터베이스에 있는 테이블의 하위 세트를 선택하려는 경우.
제약 조건, 뷰, 함수, 프로시저 및 트리거 등의 데이터베이스 개체를 마이그레이션하고 해당 개체가 클라우드 데이터베이스에 설정되는 방식을 제어합니다.
MySQL, MariaDB 또는 PostgreSQL 이외의 외부 소스에서 데이터를 가져오려는 경우.
예를 들어 다음과 같은 시나리오에서 내보내기 및 가져오기를 고려할 수 있습니다.
영업 지원 워크로드에 앞서 마케팅 워크로드를 클라우드로 마이그레이션하고 테스트하는 증분 마이그레이션을 수행하는 것이 좋습니다. 두 워크로드 모두 온-프레미스 시스템에 있는 SalesDB 데이터베이스의 테이블을 사용합니다. 프로젝트의 첫 번째 단계에서는 마케팅 테이블만 마이그레이션하고 두 번째 단계에서는 판매 테이블만 마이그레이션하려고 합니다.
온-프레미스 데이터는 오래되었으며 현재 비즈니스와 관련이 있고 관련이 없는 데이터가 혼합되어 있습니다. 이전 데이터를 제거하고 더 간소화된 데이터베이스 스키마를 고려하려고 합니다.
제품에 대한 데이터가 포함된 많은 스프레드시트를 사용할 수 있습니다. 클라우드 데이터베이스로 이 데이터를 마이그레이션하려고 합니다.
내보내기 및 가져오기 마이그레이션 계획
내보내기 및 가져오기를 사용하면 마이그레이션되는 데이터의 제어 수준이 향상된다는 이점이 있습니다. 그러나 필요한 모든 개체가 포함되도록 더 신중하게 계획해야 한다는 단점이 있습니다.
다음 개체를 마이그레이션하는 방법을 이해해야 합니다.
- 데이터베이스 스키마입니다.
- 기본 키, 외래 키 및 인덱스를 포함하는 제약 조건.
- 뷰, 함수, 프로시저 및 트리거.
- 사용자 계정 및 사용 권한.
MySQL 및 MariaDB용 내보내기 및 가져오기
SQL 스크립트를 사용하여 데이터베이스 간에 선택적 내보내기 및 가져오기를 수행할 수 있습니다. 그러나 온-프레미스 데이터베이스가 MySQL 또는 MariaDB에 있으면 다음과 같은 여러 도구를 사용할 수 있습니다.
MySQL Workbench. Oracle Corporation에서 개발한 GUI(그래픽 사용자 인터페이스)를 포함하는 널리 사용되는 데이터베이스 디자인 도구입니다. 유연한 데이터 선택 옵션이 포함된 데이터 내보내기 도구를 포함합니다.
Toad Edge. Quest에서 개발한 경쟁 도구 세트입니다. MySQL 및 PostgreSQL 데이터베이스에서 데이터를 내보내고 가져오는 데 사용할 수 있습니다.
Navicat. 이 데이터베이스 관리 GUI 도구는 MariaDB 데이터베이스와도 호환됩니다.
mysqlimport. 이 명령줄 도구를 통해서는 텍스트 파일에서 데이터를 가져올 수 있습니다.
중요
Azure Database for MySQL 및 Azure Database for MariaDB는 InnoDB 스토리지 엔진도 지원합니다. MyISAM 엔진과 같은 다른 엔진을 사용하는 테이블이 있으면 Azure로 마이그레이션하기 전에 InnoDB로 변환해야 합니다.
PostgreSQL 내보내기 및 가져오기
PostgreSQL에서는 데이터를 내보내고 가져오는 데 사용하는 다음과 같은 도구를 제공합니다.
pgAdmin. PostgreSQL 관리자를 위한 GUI 유틸리티입니다. 데이터 내보내기 및 가져오기를 위한 인터페이스를 제공합니다.
pg_dump. 테스트를 비롯하여 다양한 형식으로 데이터베이스를 내보내는 데 사용하는 명령줄 도구입니다. Psql 유틸리티를 사용하여 가져오기 전에 결과 .sql 파일을 편집할 수 있습니다.
Toad Edge. MySQL과 함께 사용하는 유틸리티와 같습니다.
백업 및 복원
백업 및 복원 작업은 일반적으로 재해로부터 데이터베이스를 보호하기 위해 수행됩니다. 데이터베이스의 정확한 복사본이 생성되고 저장됩니다. 재해로 인해 작업 복사본이 손상되면 백업된 복사본이 복원되고 정상적인 업무가 재개될 수 있습니다.
다른 위치로 복원하면 백업을 사용하여 전체 데이터베이스를 클라우드의 데이터베이스와 같이 다른 위치로 마이그레이션할 수 있습니다.
백업 및 복원을 사용하는 경우
백업 도구는 데이터베이스의 간단하고 정확한 복사본을 생성합니다. 클라우드 데이터베이스에서 복원하면 온-프레미스 시스템에서와 똑같은 데이터와 스키마를 얻을 수 있습니다. 다음과 같은 경우 백업 및 복원을 사용하여 데이터베이스를 마이그레이션합니다.
하나의 작업으로 전체 데이터베이스 또는 데이터베이스 세트를 마이그레이션하는 경우.
마이그레이션하는 동안 데이터, 스키마 또는 기타 데이터베이스 개체를 수정할 필요가 없는 경우.
다음과 같은 경우 백업 및 복원을 사용하여 마이그레이션을 수행할 수 있습니다.
최대한 거의 수정하지 않고 클라우드로 리프트 앤 시프트하려는 단일 데이터베이스 시스템이 있습니다.
여러 데이터베이스가 있는 시스템에서 증분 마이그레이션을 수행하려고 합니다. 각 워크로드는 전체 데이터베이스에서 지원됩니다.
백업 파일에서 클라우드 위치로 데이터베이스를 복원할 때 네트워크를 통해 클라우드 데이터베이스로 전송해야 하는 데이터의 크기를 고려합니다. 이 데이터 전송을 최적화하려면 백업된 데이터베이스를 대상 데이터베이스와 동일한 지역의 가상 머신에 복사한 다음, 해당 머신에서 복원합니다. 이 복원은 온-프레미스 백업 파일을 사용하는 것보다 빠르며 네트워크 대역폭에 대한 경합이 발생할 가능성이 작습니다.
MySQL 및 MariaDB에서 백업 및 복원 계획
온-프레미스 서버에서 데이터베이스를 백업하려면 명령줄에서 mysqldump
도구를 사용합니다. 그러면 스크립트로 mysql
명령을 전달하여 클라우드 데이터베이스로 복원하는 .sql 파일을 생성합니다. GUI 도구를 선호하는 경우 PHPMyAdmin 애플리케이션 또는 MySQL Workbench를 선택합니다. 이 GUI 도구를 사용하여 데이터를 백업하고 복원할 수 있습니다.
Azure Database for MySQL 및 Azure Database for MariaDB는 InnoDB 엔진도 지원합니다. 백업을 실행하기 전에 모든 테이블을 InnoDB로 변환해야 합니다.
호환성 문제를 방지하려면 클라우드에서 사용되는 MySQL 또는 MariaDB의 버전 번호가 온-프레미스 데이터베이스 서버의 버전 번호와 일치하는지 확인합니다. Azure Database for MySQL에서는 5.6, 5.7 및 8.0 버전을 지원합니다. Azure Database for MariaDB에서는 10.2 및 10.3 버전을 지원합니다. 온-프레미스 서버에서 이전 버전을 사용하는 경우 클라우드로 마이그레이션하기 전에 먼저 해당 버전 중 하나로 업그레이드하고 온-프레미스 문제를 해결하는 것이 좋습니다.
PostgreSQL에서의 백업 및 복원 계획
PostgreSQL에서 해당 명령줄 백업 및 복원 도구는 pg_dump
및 pg_restore
입니다. GUI 백업 및 복원 도구로는 Toad Edge를 사용합니다.
사용자 지정 애플리케이션 코드
광범위한 데이터 변환 요구 사항이 있거나 비정상적인 마이그레이션을 수행하려는 경우 자체 사용자 지정 코드를 작성하여 온-프레미스 MySQL, PostgreSQL 또는 MariaDB 데이터베이스에서 클라우드로 데이터를 이동하는 것이 좋습니다.
사용자 지정 코드는 다양한 형식을 취할 수 있습니다. 선택하는 언어와 프레임워크는 주로 개발 팀의 전문 지식에 따라 달라집니다.
- 데이터베이스에서 생성되어 수정되거나 처음부터 새로 개발되는 SQL 스크립트.
- .NET 또는 Java와 같은 개발 프레임워크에서 컴파일된 코드.
- PHP 또는 Node.js의 스크립트.
- Bash 또는 PowerShell용 셸 스크립트.
사용자 지정 코드 접근 방식을 사용하면 유연성이 극대화됩니다. 데이터가 필터링, 집계 및 변환되는 방식을 사용자 지정하고 여러 대상으로 마이그레이션하거나 여러 원본에서 데이터를 병합할 수 있습니다. 기본 제공 백업 또는 내보내기 도구를 사용하여 충족시킬 수 없는 요구 사항이 있으면 이 접근 방식을 사용합니다.
이 접근 방식의 단점은 개발 시간에 더 많은 투자가 필요하다는 것입니다. 사용자 지정 코드가 모든 데이터를 올바르게 마이그레이션하려면 실제 데이터에서 실행하기 전에 광범위하게 테스트해야 합니다. 이 작업을 수행하려면 숙련된 개발자와 테스터 팀이 필요하므로 프로젝트 예산이 증가하는 경우가 많습니다. 사용자 지정 마이그레이션 코드를 작성하려는 경우 안정적인 코드를 만드는 데 필요한 시간과 노력을 과소평가하지 않아야 합니다.
Azure Database Migration Service
Azure에는 여러 데이터 원본에서 Azure 데이터 플랫폼으로 원활하게 온라인 마이그레이션을 수행하는 데 사용하는 Azure DMS(Database Migration Service)라는 유연한 서비스가 포함되어 있습니다. 이 플랫폼에는 Azure Database for MySQL, Azure Database for MariaDB 및 Azure Database for PostgreSQL이 포함됩니다.
Azure로 온라인 데이터베이스를 마이그레이션하려는 경우 항상 Azure DMS를 사용하는 것이 좋습니다.
초기 마이그레이션
DMS를 사용하여 마이그레이션하려면 다음 작업을 완료합니다.
- 선택한 플랫폼의 Azure에 새 대상 데이터베이스를 생성합니다.
- 새 Azure DMS(Database Migration Service) 데이터 마이그레이션 프로젝트를 만듭니다.
- 온-프레미스 원본 데이터베이스에서 스키마를 생성합니다. MySQL을 사용하는 경우
sqldump
로 스키마를 생성할 수 있습니다. 원본 데이터베이스가 PostgreSQL이면pg_dump
를 사용합니다. - 마이그레이션 대상으로 사용할 빈 데이터베이스를 생성합니다.
- 대상 데이터베이스에 스키마를 적용합니다.
- DMS 마이그레이션 프로젝트에서 원본 및 대상 데이터베이스의 연결 정보를 구성합니다.
- DMS 마이그레이션 프로젝트를 실행합니다. 프로젝트는 데이터를 전송하고 보고서를 생성합니다.
- 보고서를 검토하여 식별된 문제를 수정합니다.
온라인 마이그레이션
Azure DMS는 온라인 마이그레이션에 사용할 수 있는 좋은 도구로서, 마이그레이션을 실행하는 동안 원래 데이터베이스를 계속 사용할 수 있습니다. 사용자는 계속해서 원본 데이터베이스의 데이터를 변경합니다. Azure DMS는 복제를 사용하여 이 변경 사항을 마이그레이션된 데이터베이스와 동기화합니다. 마이그레이션이 완료되면 마이그레이션된 데이터베이스에 연결하도록 사용자 애플리케이션을 다시 구성합니다.
MySQL 또는 MariaDB를 Azure SQL Database로 마이그레이션
MySQL 데이터베이스 서버에서 온-프레미스로 호스트되는 데이터베이스를 Azure 클라우드로 이동하고 MySQL을 실행하는 데 클라우드 데이터베이스가 필요하지 않은 경우 Azure SQL Database로 마이그레이션하는 것이 좋습니다. Azure SQL Database는 Microsoft에서 제공하는 업계 최고 SQL Server 데이터베이스 엔진의 PaaS 구현입니다. 엔터프라이즈 수준의 가용성, 스케일링 성능 및 보안을 포함하며 쉽게 모니터하고 관리할 수 있습니다.
마찬가지로 온-프레미스 데이터베이스 서버에서 MariaDB를 실행하는 경우 Azure SQL Database로 마이그레이션을 고려할 수 있습니다. MariaDB가 MySQL의 포크이기 때문에 이 프로세스는 매우 유사합니다.
Azure SQL Database는 Azure Database for MySQL 및 Azure Database for MariaDB보다 완전한 기능을 제공합니다.
참고
Azure SQL Database는 MySQL 및 MariaDB와는 다른 데이터 유형, 다른 데이터베이스 개체 및 다른 API를 사용하기 때문에 마이그레이션된 데이터베이스에 연결하는 모든 애플리케이션을 수정해야 할 수도 있습니다. 개발자에게 문의하여 온-프레미스 MySQL 또는 MariaDB 데이터베이스에서 클라우드 Azure SQL Database로 클라이언트 애플리케이션을 이동하는 데 필요한 작업량을 판별합니다.
MySQL용 SQL Server Migration Assistant
MySQL에서 Azure SQL Database로 마이그레이션하려면 특수 도구인 SQL Server Migration Assistant for MySQL을 사용할 수 있습니다. 이 GUI 도구는 원본 MySQL 데이터베이스와 Azure SQL Database 서비스의 데이터베이스일 수 있는 SQL Server 데이터베이스에 연결합니다.
연결되면 도우미는 전체 스키마를 Azure SQL Database에 복사하고 모든 데이터 형식을 해당 SQL Server에 해당하는 형식으로 변환합니다. 또한 뷰, 프로시저, 트리거 및 기타 개체를 마이그레이션합니다. 그런 다음 MySQL에서 Azure SQL Database로 데이터 마이그레이션을 시작할 수 있습니다.
참고
MySQL용 SQL Server Migration Assistant는 MariaDB 데이터베이스를 Azure SQL Database로 마이그레이션하는 용으로 테스트되지 않았습니다.