MySQL

[MySQL] MySQL 서버 업그레이드 (교체식 - Minor / Major)

meegu 2024. 9. 5. 13:53

1. MySQL 업그레이드 방법

1-1. In-Place Upgrade (인플레이스 업그레이드/교체식 업그레이드)

  • MySQL 서버의 데이터 파일을 그대로 두고 업그레이드
  • 여러 제약 사항이 있지만 업그레이드 시간 크게 단축

1-2. Logical Upgrade (논리적 업그레이드)

  • MySQL 서버의 데이터를 SQL 문장이나 텍스트 파일로 덤프한 후, 새로 업그레이드된 버전의 mysql 서버에서 덤프된 데이터를 적재
  • 버전 간 제약 사항이 inplace upgarde에 비해 없으나 업그레이드 시간이 크게 소요

 

2. In-Place Upgrade (교체식 업그레이드)

2-1. Minor upgrade

  • MySQL의 패치 버전 업데이트는 보통 기능 개선, 보안 패치, 버그 수정 등을 포함하고 큰 구조적인 변경을 수반하지 않음

따라서 데이터베이스의 구조나 저장 방식에 큰 영향을 주지 않기 때문에 데이터를 백업하거나 덤프할 필요 없이 MySQL 서버 프로그램만 업그레이드하면 됨.

 

2-1-1. Yum(패키지 관리 툴)을 통한 업그레이드

sudo yum update mysql-server
  • 장점 : 새로운 버전을 다운로드하고 설치하는 과정에서 필요한 모든 파일과 의존성을 관리
  • 단점 : 설정 파일이나 데이터베이스 파일이 변경될 수 있으며, 특정 설정을 유지하려면 사전 작업이 필요

 

2-1-2. 수동 엔진 파일 덮어쓰기 방식

 

오프라인 환경, 혹은 패키지 관리 툴을 사용할 수 없는 경우, 특정 요구사항이나 설정을 유지해야하는 경우 수동으로 진행할 수 있음

 

1. 백업

mysqldump --all-databases > backup.sql

 

2. MySQL 서버 중지

mysql> SET GLOBAL innodb_fast_shutdown=0;

linux> systemctl stop mysqld
# 혹은
linux> mysqladmin -u root -p shutdown

 * innodb_fast_shutdown=0 : 빠른 종료 비활성화. InnoDB는 모든 트랜잭션 로그를 정리하고, 필요한 모든 작업을 수행한 후에 종료

 

3. 패치 대상 설치파일 다운로드 및 압축해제

wget https://dev.mysql.com/get/Downloads/MySQL-8.4/mysql-8.4.2-linux-glibc2.28-x86_64.tar.xz
sudo tar -xvf mysql-8.4.2-linux-glibc2.28-x86_64.tar.xz -C /usr/local/mysql

 

https://dev.mysql.com/downloads/mysql/

 

MySQL :: Download MySQL Community Server

Select Version: 9.0.1 Innovation 8.4.2 LTS 8.0.39 Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Debian Linux SUSE Linux Enterprise Server Red Hat Enterprise Linux / Oracle Linux Fedora Linux - Generic Oracle Solaris mac

dev.mysql.com

 

4. 기존 MySQL 엔진 파일 백업

sudo cp -r /usr/local/mysql /usr/local/mysql_backup

 

5. 새로운 MySQL 파일 덮어쓰기

압축 해제한 MySQL 디렉토리에서 기존 MySQL 파일을 새로운 파일로 덮어씀

sudo cp -r /usr/local/mysql/* /usr/local/mysql/

 

6. 업그레이드 실행

systemctl start mysqld
mysql_upgrade -u root -p

 

 

2-2. Major upgrade

  • 데이터 파일 변경이 필요해 직전 버전에서만 업그레이드 가능 (5.6 → 8.0 X)
  • GA(General Availability) 버전 이후 버전에서만 업그레이드 가능

2-2-2. MySQL 8.0 업그레이드 시 고려 사항

  • 사용자 인증 방식 변경 : → 5.7 : mysql_native_password  , 8:0 chching_sha2_password
  • MySQL 8.0 과 호환성 체크 : 손상된 FRM파일이나 호환되지 않는 데이터 타입 or 함수가 있는지 체크
mysqlcheck -u root -p --all-databases --check-upgrade
  • 외래키 이름 길이 : 64글자로 제한
  • 인덱스 힌트 : 사용되던 인덱스 힌트의 성능 테스트
  • GRUOP BY ASC(DESC) 절 사용 불가
  • 파티션을 위한 공용 테이블스페이스

 

2-2-3. 5.7 → 8.0 Major upgrade 수행 방법

 

1. 데이터 딕셔너리 업그레이드

2. 서버 업그레이드

 

수행 순서

  • MySQL 백업 및 셧다운
  • MySQL 5.7 프로그램 삭제 ( MySQL 서버 프로그램의 제거는 데이터 파일이 저장된 디렉터리와는 독립적으로 진행)
sudo yum remove mysql-server
  • MySQL 8.0 프로그램 설치
  • 서버 시작

 

백업 및 셧다운은 minor upgrade에 있고

8.0 설치 및 서버 시작은 이전 글에 있음

 

추가1. Minor/ Major Downgrade ? 

교체식으로 불가 데이터 덤프와 복구과정이 필수적임

 

참조 : https://yechankk.tistory.com/24