메뉴 건너뛰기

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 버전으로 성공적인 업그레이드를 진행해 보시기 바랍니다.

참고 자료


  1. 데이터 모델링 개념 & ERD 다이어그램 작성

    목차 데이터 모델링 이란? 데이터 모델링 순서 절차 1. 업무 파악 (요구사항 수집 및 분석) 2. 개념적 데이터 모델링 3. 논리적 데이터 모델링 4. 물리적 데이터 모델링 데이터 모델링 절차 정리 ERD (Entity Relationship Diagram) 그리기 ERD 엔티티 표기법 ...
    Date2024.12.07 Reply0 Views408
    Read More
  2. No Image

    MariaDB, INFORMATION_SCHEMA INNODB_TRX 테이블

    INFORMATION_SCHEMA INNODB_TRX 테이블INNODB_TRX 테이블에 트랜잭션이 잠금을 대기하고 있는지 트랜잭션이 시작되었을 때 트랜잭션이 실행하는 SQL 문 (존재하는 경우) 등 InnoDB 내부에서 현재 실행중인 (읽기 전용 트랜잭션을 제외 ) 모든 트랜잭션에 대한 ...
    Date2024.11.26 Reply0 Views503
    Read More
  3. No Image

    MariaDB 용량조회

    mariadb를 운영하다보면 filesystem 경로에 데이터가 족족 쌓이는걸 확인할 수 있다. 오라클과 구조가 달라 테이블스페이스라는 개념이 없기때문이다. postgresql도 또한 filesystem에 족족 데이터가 쌓인다. db를 운영하는 입장에서는 filesystem의 용량도 봐...
    Date2024.11.17 Reply0 Views422
    Read More
  4. No Image

    Entity(엔터티)의 개념

    1. Entity 의 개념 Entity : 실체, 객체라는 의미로 실무적으론는 앤터티라고 부른다. 즉 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것으로 설명할 수 있다. 예) 학생이라는 엔터티는 학번, 이름, 학점, 등록일자, 생일, 전공 등의 속성...
    Date2024.11.07 Reply0 Views537
    Read More
  5. NCP - Cloud DB for MySQL

    MySQL 데이터베이스를 쉽고 간편하게 구축하고 관리Cloud DB for MySQL 상품을 통해 MySQL 데이터베이스를 손쉽게 구축하고 운영할 수 있습니다. Cloud DB는 네이버 서비스에서 검증된 최적화 설정을 통해 안정적으로 운영되며, 장애가 발생하면 자동으로 복구...
    Date2024.10.19 Reply0 Views530 file
    Read More
  6. NCP - MariaDB Enterprise Server

    MariaDB Enterprise Server는 엔터프라이즈 신뢰성, 안정성 및 장기적인 지원은 물론, 비즈니스 크리티컬 및 미션 크리티컬 애플리케이션을 위한 대용량 데이터베이스 구축을 관리해야 할 경우 더욱 뛰어난 운영 효율성을 제공합니다. MariaDB Enterprise Serv...
    Date2024.10.19 Reply0 Views589 file
    Read More
  7. MySQL, MariaDB 차이점

    서론데이터베이스에는 RDBMS와 NoSQL이 있다. RDBMS의 대표적인 예로는 MySQL이 있고, NoSQL의 대표적인 예로는 MongoDB가 있다. 그런데 나는 처음 데이터베이스를 다룰 때 mariaDB를 사용했다. MySQL과 유사하다는 것만 알고 있었기에 MySQL과 MariaDB의 차이...
    Date2024.10.19 Reply0 Views569 file
    Read More
  8. DB 모델링 - ERD(Entity Relationship Diagram)

    ERD(Entity Relationship Diagram) 개체 또는 데이터 간의 관계를 표현한 도식화된 그림을 말합니다. 글로 표현되어 있는 관계를 그림으로 나타낸 것입니다. Entity 데이터의 집합을 의미하는 추상적인 의미를 뜻합니다. Entity는 여러 속성(Attribute)를 가집...
    Date2024.09.24 Reply0 Views556 file
    Read More
  9. No Image

    MongoDB의 특징과 이점

    MongoDB란? MongoDB(IBM 외부 링크)는 오픈소스 비관계형 데이터베이스 관리 시스템(DMBS)으로, 테이블과 행 대신 유연한 문서를 활용해 다양한 데이터 형식을 처리하고 저장합니다. NoSQL 데이터베이스 솔루션인 MongoDB는 관계형 데이터베이스 관리 시스템(R...
    Date2024.09.15 Reply0 Views492
    Read More
  10. CUBRID, 국내 유일의 오픈소스 DBMS

    CUBRID, 국내 유일의 오픈소스 DBMS다. 다양하게 쓰인다.겁나 잘나간다 와! 이 모든 기능이 무료! 엔진의 소스 코드가 수정되면 소스를 까야하지만, 큐브리드 DBMS를 사용하도록 개발된 것들은 소스 코드를 공개하지 않아도 판매할 수 있다. 큐브리드 = 응용프...
    Date2024.09.15 Reply0 Views547 file
    Read More
  11. 2023년 데이터베이스 관리 시스템(DBMS) 순위

    2023년 데이터베이스 관리 시스템(DBMS) 순위 Database/INFO / aruru / 2023. 3. 17. 19:52 DB-Engines 에서는 자체 산정 기준에 따라 매월 DBMS 순위를 산정합니다. 산정 기준은 검색 엔진(Google, Bing) 검색횟수, Google 트렌드 검색빈도, SNS(LinkedIn, 트...
    Date2024.09.15 Reply0 Views812 file
    Read More
  12. MySQL 메이저 버전 업그레이드(MySQL 5 → MySQL 8) — 네이버 클...

    네이버클라우드에서 주요 고객 기술 지원을 담당하는 TAM (Technical Account Manager) 강철곤입니다. 업무 특성상 다양한 고객・파트너와 소통하며 업무를 진행합니다. 이런 제게 소프트웨어 업그레이드는 반가운 소식이면서도 어려움을 가져다 주기도 하는데...
    Date2024.09.15 Reply0 Views525 file
    Read More
  13. MySQL, EOS 및 EOL

    MySQL, EOS 및 EOL
    Date2024.09.15 Reply0 Views599 file
    Read More
  14. No Image

    MariaDB, LTS 및 EOS

    development and production https://mariadb.com/downloads/connectors/ MariaDB Community Version은 Free이며 해당 제품을 기반으로 작성하였습니다. Stable Date는 해당버전의 안정화된 버전의 출시날짜이고, 유지보수 지원기간은 일반적으로 5년입니다. L...
    Date2024.09.09 Reply0 Views681
    Read More
  15. PostgreSQL 설치 및 세팅 & pgAdmin 사용법 - Windows

    PostgreSQL 설치 및 세팅 & pgAdmin 사용법 - Windows 이번 글에서는 PostgreSQL 설치 방법과 초기 세팅, pgAdmin을 사용해 Database 생성 및 User 생성에 대해 정리할 것입니다. 우선 pgAdmin이란 PostgreSQL을 설치했을 때 기본적으로 설치되는 것이고, ...
    Date2024.02.19 Reply0 Views708
    Read More
  16. [PostgresSQL 이야기 1화] PostgresSQL 특징 및 장단점 소개

    오픈소스 DB 전성시대, 기업들이 PostgreSQL을 선택하는 이유“클라우드 전환에서의 오픈소스 DB, 선택 아닌 필수” 클라우드 도입 확대로 다가온 오픈소스 DBMS 전성시대, 그 중에서 개발자들이 가장 선호하는 포스트그레SQL은 대량의 데이터를 다루는 기업 및 ...
    Date2024.02.19 Reply0 Views593 file
    Read More
  17. PostgreSQL / 오픈소스 vs 상용, 벌어지는 인기 트렌드 격차

    PostgreSQL / 오픈소스 vs 상용, 벌어지는 인기 트렌드 격차 지난 해부터 소프트웨어 업계에서는 오픈소스 생태계가 대세가 되면서 상용 DBMS 사용 입지가 줄어들고 있습니다. 모바일 운영체제를 포함하여, 클라우드, 데이터베이스, 웹서버, 빅데이터 등의 주...
    Date2024.02.19 Reply0 Views508 file
    Read More
  18. No Image

    데이터 통합 도구 BTL Data Integrator(BTL DI) 소개

    https://www.youtube.com/watch?v=wT6ng96G6XU 데이터 통합 도구 BTL Data Integrator(BTL DI) 소개 BTL Data Integrator(BTL DI) 는 데이터 통합 및 마이그레이션을 위한 “ETL (Extract, Transformation, Load) Solution” 입니다. 다수의 원천 시스템으로 부...
    Date2023.06.22 Reply0 Views740
    Read More
  19. No Image

    [proc,ec,esql] 가장 기본적인 ec, 프로씨(proc) insert 프로그램

    [proc,ec,esql] 가장 기본적인 ec, 프로씨(proc) insert 프로그램 프로씨(proc) 강좌나 한국어 자료가 검색해보면 없다. 그래서 프로씨에 관해 궁금한 사람들을 위해 기초부터 전개해본다. 시중에 프로씨에 관한 책이 없기 때문에 충분한 내용이 전달안될 수도...
    Date2023.06.16 Reply0 Views564
    Read More
  20. No Image

    DB 암호화 - Echelon V2.5

    DB 암호화 - Echelon V2.5 - 데이터보안소프트(DataBoanSoft Inc.) Echelon V2.5는 국내 1300여개 고객사에서 검증된 컬럼단위 DB암호화 솔루션으로 국내최초 CC인증을 획득한 제품입니다. echelon_box.gifechelon_cc인증.pngCC인증echelon_암호화모들검증.jpg...
    Date2023.03.06 Reply0 Views552
    Read More
목록
Board Pagination Prev 1 2 3 4 5 6 7 Next
/ 7