migumi
[MySQL] MySQL 서버 업그레이드 (교체식 - Minor / Major) 본문
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 ?
교체식으로 불가 데이터 덤프와 복구과정이 필수적임
'MySQL' 카테고리의 다른 글
[MySQL] 사용자- 권한(Privilege)과 역할(Role) (0) | 2024.09.21 |
---|---|
[MySQL] 사용자-비밀번호 관리 (0) | 2024.09.21 |
[MySQL] 사용자 식별과 계정 관리 (0) | 2024.09.12 |
[MySQL] MySQL 서버 설정과 시스템 변수 (1) | 2024.09.11 |
[MySQL] yum으로 MySQL 설치 (CentOS 9) (1) | 2024.09.04 |