“업데이트냐 마이그레이션이냐” 마이SQL 5.7 지원 종료 대비하기
DB-엔진(DB-Engines)에 따르면 마이SQL은 세계에서 가장 인기 있는 오픈소스 데이터베이스다. 전체 데이터베이스 인기 순위에서도 10년 이상 2위 자리를 지키고 있다. 마이SQL은 LAMP(Linux, Apache, MySQL, PHP) 스택의 부상을 촉발했고, 오랜 시간 동안 많은 개발자와 DBA의 든든한 동반자 역할을 하고 있다. 이 마이SQL의 버전 5.7은 2023년 10월을 기점으로 수명 종료 상태에 도달한다. 즉, 이 버전에 대한 업데이트나 보안 패치는 더 이상 제공되지 않는다.
여기에는 중대한 의미가 있다. 데이터베이스 관리 작업에 퍼코나 모니터링 및 매니지먼트(Percona Monitoring and Management)를 사용하면서 텔레메트리 데이터를 공유하는 기업에 따르면, 지원 종료 4개월을 남겨둔 현재 마이SQL 서버를 실행 중인 데이터베이스의 절반 이상이 v5.7이기 때문이다. 이는 데이터베이스 설치 현황에 대한 대표 표본이므로 많은 데이터베이스 서버가 수명 종료까지 불과 4개월을 남겨뒀다는 이야기다.
이동을 준비하려면 어떤 부분을 살펴봐야 할까? 다양한 선택 옵션의 비용과 이점을 요약했다.
마이SQL 8.0으로 마이그레이션
우선, 마이SQL 5.7에서 마이SQL 8.0으로 전환할 때 고려해야 할 사항을 살펴보자. 앞으로는 마이SQL 8.0이 유일하게 지원되는 버전이 된다. 마이SQL 8.0은 2016년부터 사용됐으므로 매우 안정적인 버전이지만 이전과 비교할 때 몇 가지 중대한 변화가 있다.
그중 하나가 개발자와 DBA가 더 쉽게 쿼리를 지원할 수 있도록 마이SQL 8.0에서 지원되는 SQL(구조적 쿼리 언어)이 향상됐다는 점이다. 예를 들어 서브쿼리 작성에 어려움을 겪고 있다면 리터럴 파생(lateral-derived) 조인과 공통 테이블 식(CTE)을 활용하면 된다. 또한 집합에 도움이 되는 새로운 교집합 절도 있다.
마이SQL 8.0은 마이SQL 5.7에는 포함되지 않은 새로운 명령도 지원한다. 예를 들어 EXPLAIN ANALYZE는 쿼리 튜닝에 큰 도움이 된다. EXPLAIN 명령은 쿼리의 성능에 대한 서버의 예상 분석 결과를 제공하는데, 여기에 ANALYZE를 추가하면 쿼리가 실행되고 실질적인 쿼리 성능을 가리키는 수치를 반환된다. 이는 쿼리의 실제 실행 현황에 대해 더 많은 인사이트를 제공해 개선할 부분을 쉽게 찾을 수 있게 해준다. 또한, INVISIBLE INDEX 명령을 이용하면 삭제 후 재구축에 따르는 큰 위험 부담 없이 인덱스의 효율성을 테스트할 수 있다.
이러한 변화와 함께, 업데이트된 기본 문자 집합 UTF8MB4는 유니코드 버전 9.0을 지원하므로 국제 문자를 지원할 수 있다. 글로벌 운영을 지원해야 하는 경우 특히 유용하다.
마이SQL 8.0으로의 마이그레이션은 일방통행 경로여서 되돌릴 수 없으므로 애플리케이션과 데이터베이스가 전환을 지원하는지 여부를 확인해야 한다. 마이SQL 셸의 util.checkForServerUpgrade() 유틸리티를 사용하면 이를 효율적으로 확인할 수 있다. 21가지 테스트를 수행해 마이그레이션 프로세스에서 발생할 수 있는 잠재적인 문제점을 찾아준다. 이 테스트는 새로 예약된 키워드와 충돌하는 이름을 가진 테이블이 있는지, 네이티브가 아닌 파티셔닝이 포함된 엔진을 사용하는 테이블이 있는지, 테이블스페이스 데이터 파일 경로의 순환 디렉터리 참조가 있는지, 제거된 함수 사용 여부 등을 확인한다. 또한 제거됐거나 새 기본값으로 변경된 시스템 변수와 관련된 문제도 이 유틸리티로 찾을 수 있다.
현재의 마이SQL 구현 형태에 따라 몇 가지 간단한 변경만으로 마이그레이션 준비를 끝낼 수도 있다. 그러나 애플리케이션에 여러 문제와 그에 따르는 업데이트가 있는 경우 할 일이 많아진다.
DBaaS와 마이SQL 대체 솔루션 고려하기
시스템에서 잠재적인 마이그레이션 문제를 확인하는 것과 병행해 다른 선택지도 살펴봐야 한다. 예를 들어 기업을 위해 여전히 마이SQL이 최선의 데이터베이스인지, 아니면 대안을 고려해야 하는지 판단해야 한다. 애플리케이션을 만족스러운 상태로 바꾸기 위해 상당한 작업이 필요하다면, 그 정도의 노력을 들여 다른 플랫폼으로 마이그레이션하는 편이 더 나을 수도 있다. 데이터베이스 인프라를 지금까지 했던 것과 같은 방식으로 계속 운영해야 할까, 아니면 서비스형 데이터베이스(DBaaS)와 같은 완전히 다른 방식을 검토해야 할까?
여기에는 3가지 선택안이 있다. 첫 번째는 아무것도 하지 않는 것이다. 애플리케이션을 새 데이터베이스 버전으로 옮기는 데 따르는 비용이 너무 비싸다고 판단하고 지원이 종료된 데이터베이스 버전을 계속 실행하는 쪽을 선택할 수 있다. 이상적인 선택은 아니지만 경우에 따라서는 최선일 수 있다. 실제로 필자가 알고 있는 한 기업은 마이SQL과 관련해 비슷한 상황에 처한 적이 있는데 애플리케이션이 공용 인터넷에 직접 연결되지 않았고 2년 이내에 갱신을 앞두고 있다는 점을 고려해 시스템을 그대로 두는 편이 낫다고 판단했다.
애플리케이션을 마이그레이션하는 데 들어가는 작업의 규모에 비해 잠재적인 보안 위험을 억제하고 연장 지원을 구매하는 편이 유리했으므로 이 회사는 기존 마이SQL 버전을 유지하기로 했다. 이는 모래에 머리를 파묻고 문제를 외면한 사례가 아니라, 실제 비즈니스 케이스가 있고 위험 관리 측면에서 접근한 능동적인 의사 결정이었다.
두 번째 옵션은 전환을 하되, 데이터베이스를 호스팅하는 장소를 전환하는 것이다. 예를 들어 자체 인프라를 운영할 필요 없이 마이SQL 호환 클라우드 서비스 및 호스팅 제공업체에 시스템 관리를 맡길 수 있다. DBaaS 옵션을 선택하면 인프라 관리와 관련된 여러 가지 골칫거리가 사라지지만 그 나름의 관리와 업데이트는 필요하다.
세 번째 옵션은 다른 데이터베이스로 마이그레이션하는 것이다. 애플리케이션 및 데이터베이스 환경을 업데이트해야 하고 그 업데이트에 상당한 규모의 작업이 필요하다면 다른 데이터베이스로 전환하는 데 그 에너지를 투입하는 방안도 고려해야 한다. 시스템 전체를 옮기고자 하는 경우 이 방법이 유용할 수 있지만, 비즈니스 로직과 인프라에 대한 부가적인 계획이 필요하다.
마이SQL이냐, 포스트그레SQL이냐
마이SQL 대안 데이터베이스로 가장 인기가 높은 것은 탄탄한 커뮤니티를 거느린 오픈소스 데이터베이스인 포스트그레SQL이다. 포스트그레SQL은 최근 업데이트를 통해 마이크로소프트 SQL 서버, 오라클 데이터베이스, 마이SQL에 걸쳐 보편적으로 사용되는 SQL 명령인 MERGE를 지원한다. 포스트그레SQL 15에 이 기능이 추가된 만큼 이제 많은 부분을 다시 작성하지 않고 포스트그레SQL로 더 쉽게 마이그레이션할 수 있다. 이 마이그레이션에는 얼마간의 다시 쓰기가 필요하지만 마이SQL 8.0으로 전환하기 위해 어차피 변경 작업을 해야 한다면, 아예 포스트그레SQL 같은 다른 데이터베이스로 바꾸는 방법도 고려하지 않을 이유가 없다.
MERGE 마이그레이션의 경우 포스트그레SQL의 상용 또는 DBaaS 버전도 지원한다. 유연한 오픈소스 라이선스 덕분에 포스트그레SQL을 기반으로 한 데이터베이스 서비스가 많으므로 이를 지원하는 기업도 많다. 다만 이러한 옵션이 완전히 호환되는지, 그리고 업체의 자체 버전이 아니라 오픈소스 포스트그레SQL을 제대로 지원하는지 미리 확인하는 꼭 필요하다. 마이SQL 마이그레이션과 마찬가지로 되돌아올 수 없는 길이 될 수 있고, 일단 시작하면 선택할 수 있는 옵션은 더 적다.
마이SQL 5.7에서 마이SQL 8.0 또는 그 이상으로의 마이그레이션은 많은 개발자와 DBA가 향후 몇 개월에 걸쳐 지원해야 하는 작업이다. 미리 계획하고 선택지를 파악하는 것부터 시작해야 한다. 기존 애플리케이션을 살펴보면서 얼마나 많은 작업을 해야 하는지, 향후 애플리케이션 인프라에서 무엇을 원하거나 무엇이 필요한지를 파악하면 앞에 놓인 다양한 경로의 비용과 혜택을 비교해 우열을 가릴 수 있다.
마이SQL 업데이트, 새 플랫폼으로의 완전한 마이그레이션, 또는 현행 유지까지, 모두 고려할 수 있는 옵션이다. 그러나 가만히 있거나 모래에 머리를 파묻기보다는 문제보다 앞서 나감으로써 새로운 기회를 최대한 활용하는 것이 좋다.
출처 : https://www.itworld.co.kr/topnews/296467
문제가 될 시 삭제하겠습니다.
댓글 없음:
참고: 블로그의 회원만 댓글을 작성할 수 있습니다.