메뉴 건너뛰기

Extra Form
출처 https://medium.com/naver-cloud-platform/...nr2xN-PmTw

네이버클라우드에서 주요 고객 기술 지원을 담당하는 TAM (Technical Account Manager) 강철곤입니다.

업무 특성상 다양한 고객・파트너와 소통하며 업무를 진행합니다. 이런 제게 소프트웨어 업그레이드는 반가운 소식이면서도 어려움을 가져다 주기도 하는데요. 업그레이드 된 IT 서비스를 고객사에도 적시에 적용해 드려야 하기 때문입니다. 하지만 버전 업그레이드 중 발생할 수 있는 리스크도 있어서 쉬운 작업이 아닙니다.

MySQL은 세계적으로 많은 고객이 사용하는 DB 서비스입니다. 네이버 클라우드 플랫폼에서도 Cloud DB for MySQL으로 제공하고 있으며 사용 고객 또한 많습니다. 네이버 클라우드 플랫폼 환경에서 MySQL engine을 업그레이드하는 방법을 설명 드리겠습니다.

이런 분들께 추천합니다.

  • MySQL DB를 관리하지만 상세한 DB 설정은 잘 모르시는 분
  • MySQL 5.7과 8.0의 차이를 잘 모르시는 분
  • MySQL EOL(End Of Life)에 관심있는 분

MySQL 5.7 vs. 8.0 차이점

우선 MySQL의 5.7버전과 8.0 버전에 대해서는 큰 차이가 있는데요. 네이버의 생성형 AI 서비스 CLOVA X에 차이점을 물어보니 이렇게 설명합니다.

설명이 명쾌하네요. MySQL 사용자 대부분은 본인이 원하는 Default 설정을 가진 MySQL 버전을 사용하며, 구 버전인 경우가 많습니다.

많은 고객이 사용하는 MySQL 5.7가 2023년 10월 21일부로 지원이 종료(EOS) 되었습니다. 이후 많은 고객으로부터 버전 업그레이드 요청을 많이 받고 있는데요. 기존에는 Database Migration Service를 활용하여 버전 업그레이드를 지원해 드렸으나, 2023년 11월 23일부로 Cloud DB for MySQL 서비스에서 메이저 버전 업그레이드 기능을 공식 지원하게 되었습니다.

더 많은 분들이 새로운 기능을 사용해 보실 수 있도록 사용 방법을 소개해 드립니다.

시나리오

기존 Database Migration Service로 메이저 버전 업그레이드 과정에서 export/import 진행 시 몇 가지 고려사항이 있었습니다.

  • MySQL 5.7 잔재 버그로 sql_mode=NO_AUTO_CREATE_USER 잔재
  • Definer 계정에 대한 Source/Target DB 간 권한 문제
  • Source/Target DB 간 기본 Character Set 및 Collation의 불일치로 인한 오류
  • 마이그레이션 진행 후 데이터 불일치 현상 발생 등

이렇게 고려할 사항이 많다보니 고객이 마이그레이션 export/import를 기다리는 시간부터, 장시간 마이그레이션 진행 후에도 오류 발생 시 해결까지 추가 시간이 소요되는 어려움이 있었습니다.

반면 Cloud DB for MySQL의 메이저 업그레이드 기능을 활용하면 Cloud DB를 사용하며 문제될 수 있는 부분을 시스템적으로 점검하고, 보다 빠르고 편안하게 버전을 업그레이드 할 수 있습니다.

자세한 방법을 아래 실습을 통해 소개해 드립니다.

실습 환경

  • 환경 : 민간 VPC
  • MySQL 접근 VM : codetest-vm(공인 VM)
  • Cloud DB for MySQL : test-mysql-5–7
  • 기본 버전 : MYSQL5.7.37
  • 더미 데이터

MySQL에 추가할 dummy 데이터는 공식 홈페이지에서 제공하는 샘플 Database 중 Employees 데이터를 활용하였습니다.

위 데이터는 Github(링크)을 통해 제공됩니다.

데모

MySQL Engine Upgrade 기능 검증을 위해서는 몇 가지 사전 준비가 필요합니다.

• Cloud DB for MySQL 5.7 생성

• Dummy 파일 업로드

• 사용자 데이터 구성(View, Function, Definer 계정)

이후 MySQL Engine Upgrade 기능을 이용하여 업그레이드 데모를 진행했습니다. 사전 준비 과정부터 차근차근 설명해 드리겠습니다.

1. Cloud DB for MySQL 5.7 생성

  • Cloud DB for MySQL 메뉴에서 신규 DB Server를 생성합니다.
ncloud 콘솔 > VPC 선택 > Cloud CB for MySQL > DB 서버 생성 화면
  • 기본 데이터베이스는 employees로 설정합니다.

(만약 다른 기본 DB가 있을 경우 나중에 CREATE합니다.)

ncloud 콘솔 > VPC 선택 > Cloud CB for MySQL > DB 설정 화면

DB 서버 생성이 완료되면 생성된 Cloud DB for MySQL에 특정 VM을 통해 접근할 수 있도록 ACG inbound rule을 추가합니다.

ACG 인바운드 룰 추가

2. Dummy 파일 업로드

Cloud DB for MySQL에 접속할 VM에 먼저 접근 후 MySQL 접근을 위한 Client를 설치합니다.

# apt install -y mysql-client

github에 있는 데이터를 Cloud DB에 연결할 VM에 다운로드 합니다.

# git clone https://github.com/datacharmer/test_db

git을 이용하여 다운로드 받은 파일에 대하여 *.sql이 있는 경로로 이동한 후 Cloud DB for MySQL에 접속합니다.

employees 데이터베이스 유무를 확인합니다.

만약 기본 데이터베이스를 다른 DB로 생성한 경우, employees data를 업로드하기 위하여 데이터베이스를 생성합니다.

Create하는 방법은 다음과 같습니다.
1) [DB Server 상세보기]-[Database 관리]메뉴에서 DB 추가
2) 사용자 제공 Stored Procedure를 통한 DB 추가 (참고 : 가이드 문서)

employees 데이터베이스로 접근하여 데이터 유무를 확인합니다.

source 명령을 이용하여 SQL 파일을 import 합니다.

> source employees.sql

정상적으로 데이터가 업로드 되었는지 추가로 확인합니다.

기본적인 SQL 데이터 외에도 사용자가 추가한 View, Function(Procedure), Definer 계정에도 함께 이관되는지 확인하기 위해 추가합니다.

  • 기능 확인을 위해 간단하게 추가해본 내용입니다.
  • View : employee_gender_view(직원 성비 확인)
CREATE VIEW employee_gender_view AS
SELECT emp_no, first_name, last_name, gender
FROM employees;
  • Function : string 입력을 위한 간단 Function
delimiter $$
DROP FUNCTION IF EXISTS employees.string_print$$
CREATE FUNCTION employees.string_print( str VARCHAR(20) ) RETURNS VARCHAR(20)
BEGIN
DECLARE copy_str VARCHAR(20);
SET copy_str = str;
RETURN copy_str;
END $$
delimiter ;

Function이 정상적으로 생성되었는지 확인합니다.

  • Definer Account : 임직원 관리를 위한 HR 계정
CREATE USER 'hr'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON employees.* TO 'hr'@'localhost';

Definer 계정이 정상적으로 생성되었는지 확인합니다.

3. Cloud DB for MySQL에서 엔진 버전 업그레이드 작업 순서를 고려하기 위하여 별도 Slave / Recovery를 추가합니다.

  • Slave는 [DB Server]-[DB 관리]-[Slave 추가]로 추가할 수 있습니다.
DB 관리 > Slave 추가 화면
  • Recovery는 [Backup]-선택한 DB의 [상세내역]-[시점복원] 또는 [Backup 파일 복원] 기능을 통해 추가 가능합니다.

4. 본격적으로 MySQL engine 메이저 버전 업그레이드를 수행합니다.

  • [DB Server]-[DB 관리]-[MySQL Engine Upgrade]를 클릭합니다.
DB 관리 > MySQL Engine Upgrade 화면
  • 주의 사항을 상세히 확인 후 [Major 버전 업그레이드]에 체크하여 업그레이드가 원활하게 진행될지 점검합니다.

[업그레이드 점검] 버튼을 누르면 점검이 진행됩니다.

업그레이드 점검 이후 다시 한번 주의사항 확인 및 사전 애플리케이션 등을 점검한 이후 업그레이드를 시작합니다.

업그레이드가 진행 중입니다.

업그레이드 완료 후 동일한 mysql에 접근해보면, 정상적으로 업그레이드가 진행 되었음을 확인할 수 있습니다.

실습을 마치며

MySQL 메이저 버전 업그레이드는 분명 어느정도 리스크가 따르는 작업입니다. 다만 최신 기능을 이용하고 추후 원활한 기술 지원을 위해서 버전 업그레이드는 꼭 진행해야 하는 필수 작업입니다.

기존에 Cloud DB for MySQL에 메이저 버전 업그레이드 기능이 없을 때에는mysqldump나 다른 도구를 이용하여 버전 업그레이드를 진행해야 하는 번거로움이 있었는데, MySQL Engine Upgrade를 통해 많은 부분을 해소할 수 있을 것으로 기대됩니다.

다만 중요 데이터를 담고 있는 DB의 특성상 사전에 테스트를 정밀하게 하여 기능을 검증하고, 애플리케이션과의 호환성도 상세히 검토하여 MySQL 8 버전으로 성공적인 업그레이드를 진행해 보시기 바랍니다.

참고 자료


List of Articles
번호 제목 날짜 조회 수
131 데이터 모델링 개념 & ERD 다이어그램 작성 목차 데이터 모델링 이란? 데이터 모델링 순서 절차 1. 업무 파악 (요구사항 수집 및 분석) 2. 개념적 데이터 모델링 3. 논리적 데이터 모델링 4. 물리적 데이터 ... 2024.12.07 408
130 MariaDB, INFORMATION_SCHEMA INNODB_TRX 테이블 INFORMATION_SCHEMA INNODB_TRX 테이블INNODB_TRX 테이블에 트랜잭션이 잠금을 대기하고 있는지 트랜잭션이 시작되었을 때 트랜잭션이 실행하는 SQL 문 (존재하는... 2024.11.26 503
129 MariaDB 용량조회 mariadb를 운영하다보면 filesystem 경로에 데이터가 족족 쌓이는걸 확인할 수 있다. 오라클과 구조가 달라 테이블스페이스라는 개념이 없기때문이다. postgresql... 2024.11.17 422
128 Entity(엔터티)의 개념 1. Entity 의 개념 Entity : 실체, 객체라는 의미로 실무적으론는 앤터티라고 부른다. 즉 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것으... 2024.11.07 537
127 NCP - Cloud DB for MySQL MySQL 데이터베이스를 쉽고 간편하게 구축하고 관리Cloud DB for MySQL 상품을 통해 MySQL 데이터베이스를 손쉽게 구축하고 운영할 수 있습니다. Cloud DB는 네이... file 2024.10.19 530
126 NCP - MariaDB Enterprise Server MariaDB Enterprise Server는 엔터프라이즈 신뢰성, 안정성 및 장기적인 지원은 물론, 비즈니스 크리티컬 및 미션 크리티컬 애플리케이션을 위한 대용량 데이터베... file 2024.10.19 589
125 MySQL, MariaDB 차이점 서론데이터베이스에는 RDBMS와 NoSQL이 있다. RDBMS의 대표적인 예로는 MySQL이 있고, NoSQL의 대표적인 예로는 MongoDB가 있다. 그런데 나는 처음 데이터베이스... file 2024.10.19 569
124 DB 모델링 - ERD(Entity Relationship Diagram) ERD(Entity Relationship Diagram) 개체 또는 데이터 간의 관계를 표현한 도식화된 그림을 말합니다. 글로 표현되어 있는 관계를 그림으로 나타낸 것입니다. Enti... file 2024.09.24 556
123 MongoDB의 특징과 이점 MongoDB란? MongoDB(IBM 외부 링크)는 오픈소스 비관계형 데이터베이스 관리 시스템(DMBS)으로, 테이블과 행 대신 유연한 문서를 활용해 다양한 데이터 형식을 처... 2024.09.15 492
122 CUBRID, 국내 유일의 오픈소스 DBMS CUBRID, 국내 유일의 오픈소스 DBMS다. 다양하게 쓰인다.겁나 잘나간다 와! 이 모든 기능이 무료! 엔진의 소스 코드가 수정되면 소스를 까야하지만, 큐브리드 DBM... file 2024.09.15 547
121 2023년 데이터베이스 관리 시스템(DBMS) 순위 2023년 데이터베이스 관리 시스템(DBMS) 순위 Database/INFO / aruru / 2023. 3. 17. 19:52 DB-Engines 에서는 자체 산정 기준에 따라 매월 DBMS 순위를 산정합니... file 2024.09.15 812
» MySQL 메이저 버전 업그레이드(MySQL 5 → MySQL 8) — 네이버 클... 네이버클라우드에서 주요 고객 기술 지원을 담당하는 TAM (Technical Account Manager) 강철곤입니다. 업무 특성상 다양한 고객・파트너와 소통하며 업무를 진행... file 2024.09.15 525
119 MySQL, EOS 및 EOL MySQL, EOS 및 EOL file 2024.09.15 599
118 MariaDB, LTS 및 EOS development and production https://mariadb.com/downloads/connectors/ MariaDB Community Version은 Free이며 해당 제품을 기반으로 작성하였습니다. Stable D... 2024.09.09 681
117 PostgreSQL 설치 및 세팅 & pgAdmin 사용법 - Windows PostgreSQL 설치 및 세팅 & pgAdmin 사용법 - Windows 이번 글에서는 PostgreSQL 설치 방법과 초기 세팅, pgAdmin을 사용해 Database 생성 및 User 생성에 대... 2024.02.19 708
116 [PostgresSQL 이야기 1화] PostgresSQL 특징 및 장단점 소개 오픈소스 DB 전성시대, 기업들이 PostgreSQL을 선택하는 이유“클라우드 전환에서의 오픈소스 DB, 선택 아닌 필수” 클라우드 도입 확대로 다가온 오픈소스 DBMS 전... file 2024.02.19 593
115 PostgreSQL / 오픈소스 vs 상용, 벌어지는 인기 트렌드 격차 PostgreSQL / 오픈소스 vs 상용, 벌어지는 인기 트렌드 격차 지난 해부터 소프트웨어 업계에서는 오픈소스 생태계가 대세가 되면서 상용 DBMS 사용 입지가 줄어들... file 2024.02.19 508
114 데이터 통합 도구 BTL Data Integrator(BTL DI) 소개 https://www.youtube.com/watch?v=wT6ng96G6XU 데이터 통합 도구 BTL Data Integrator(BTL DI) 소개 BTL Data Integrator(BTL DI) 는 데이터 통합 및 마이그레이... 2023.06.22 740
113 [proc,ec,esql] 가장 기본적인 ec, 프로씨(proc) insert 프로그램 [proc,ec,esql] 가장 기본적인 ec, 프로씨(proc) insert 프로그램 프로씨(proc) 강좌나 한국어 자료가 검색해보면 없다. 그래서 프로씨에 관해 궁금한 사람들을 ... 2023.06.16 564
112 DB 암호화 - Echelon V2.5 DB 암호화 - Echelon V2.5 - 데이터보안소프트(DataBoanSoft Inc.) Echelon V2.5는 국내 1300여개 고객사에서 검증된 컬럼단위 DB암호화 솔루션으로 국내최초 CC... 2023.03.06 552
목록
Board Pagination Prev 1 2 3 4 5 6 7 Next
/ 7