05-15 08:39
Recent Posts
Recent Comments
관리 메뉴

miinsun

[MySQL] MySQL 서버 업그레이드 본문

DataBase/MySQL

[MySQL] MySQL 서버 업그레이드

miinsun 2023. 1. 7. 22:17

먼저, MySQL 서버를 업그레이드하는 방법으로 두 가지 방법이 있다.

  1. In-Place Upgrade MySQL 서버의 데이터 파일을 그대로 두고 업그레이드
  2. Logical Upgrade mysqldump 도구 등을 이용해 MySQL 서버의 데이터를 덤프 한후, 미리 준비한  업그레이된 버전의 MySQL 서버에서 덤프된 데이터를 적재하는 방법

1번 인플레이스 방법에는 여러 제약 사항이 있지만 업그레이드 시간을 크게 단축할 수 있다. 반대로 로지컬 방법은 버전 간 제약 사항이 거의 없지만 업그레이드 시간이 매우 많이 소요될 수 있다.


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

MySQL 5.7 대비 MySQL 8.0에서는 상당히 많은 기능들이 개선되거나 변경됐다. 그래서 반드시 MySQL 8.0으로 업그레이드하기 전에 다음과 같은 사항들을 검토해봐야한다.

  1. 사용자 인증 방식 변경
  2. MySQL 8.0과의 호환성 체크
  3. 외래키 이름의 길이
  4. 인덱스 힌트
  5. Group By에 사용된 정렬 옵션
  6. 파티션을 위한 공용 테이블 스페이스

 

MySQL Shell Utility Upgrade Checker

또, MySQL Shell 유틸리티의 Upgrade Checker Utility를 이용해 쉽고 빠르게 다음과 같은 사항들을 살펴 볼 수 있다.

 

MySQL :: MySQL Shell 8.0 :: 11.1 Upgrade Checker Utility

11.1 Upgrade Checker Utility The util.checkForServerUpgrade() function is an upgrade checker utility that enables you to verify whether MySQL server instances are ready for upgrade. You can select a target MySQL Server release to which you plan to upgrade

dev.mysql.com

 

MySQL Shell 설치

# yum install -y mysql-shell.x86_64

 

Upgrade Checker 유틸리티 실행

# mysqlsh root@localhost -e "util.checkForServerUpgrade();"
The MySQL server at /var%2Flib%2Fmysql%2Fmysql.sock, version 5.7.27-log - MySQL
Community Server (GPL), will now be checked for compatibility issues for
upgrade to MySQL 8.0.17...

1) Usage of old temporal type
  No issues found

2) Usage of db objects with names conflicting with reserved keywords in 8.0
  No issues found

...

Errors:   0
Warnings: 1
Notices:  0

업그레이드를 방해하는 치명적인 오류는 발견되지 않았지만 한가지 잠재적인 문제가 발견됐다. 이 같은 경우에는 업그레이드 하기 전에 얼마나 영향을 끼치는지 꼭 확인을 하고 해결한 뒤에 업그레이드를 진행해야 한다.

 


 

인플레이스 업그레이드 제약 사항

인플레이스 업그레이드 시 동일 메이저 버전에서 마이너 버전  간 업그레이드는 대부분 데이터 파일의 변경 없이 진행되며, 여러 버전을 건너뛰어서 업그레이드하는 것도 허용된다.

  • MySQL 8.0.16 -> MySQL 8.0.21 : MySQL 서버만 재설치 함

하지만 메이저 버전 간 업그레이드는 대부분 크고 작은 데이터 파일의 변경이 필요하기 때문에 반드시 직전 버전에서만 업그레이드가 허용된다. 메이저 버전 간 업그레이드는 데이터 파일의 패치가 필요한데, MySQL 8.0 서버는 MySQL 5.7  버전에서 사용하던 데이터 파일과 로그 포맷만 인식하기 때문이다.

  • MySQL 5.5 -> MySQL 5.6 : 업그레이드 가능
  • MySQL 5.5 -> MySQL 5.7 : 업그레이드 불가능
  • MySQL 5.5 -> MySQL 8.0 : 업그레이드 불가능

때문에 MySQL 5.1버전에서 8.0버전으로 업그레이드를 하기 위해서는 아래와 같이 4번의 업그레이드를 진행해야 한다. 그렇기 때문에 만약 두 단계 이상을 한 번에 업그레이드해야 한다면 mysqldump 프로그램으로 논리적 업그레이드를 하는 것이 더 좋은 선택일 수 있다.

  1. MySQL 5.1 -> MySQL 5.5
  2. MySQL 5.5 -> MySQL 5.6
  3. MySQL 5.6 -> MySQL 5.7
  4. MySQL 5.7 -> MySQL 8.0

 


 

MySQL 8.0 인플레이스 업그레이드

MySQL 5.7에서 MySQL 8.0으로 업그레이드 하는 과정에는 시스템 테이블의 정보와 데이터 딕셔너리 정보의 포맷이 완전히 바뀐다는 것을 유의해야 한다.

MySQL 5.7에서 MySQL 8.0으로의 업그레이드는 크게 두 가지 단계로 나눠서 처리된다.

  1. 데이터 딕셔너리 업그레이드 : MySQL 5.7 버전까지는 데이터 딕셔너리 정보가 FRM 확장자를 가진 파일로 별도로 보관돼었는데, MySQL 8.0 버전부터는 데이터 딕셔너리 정보가 트랜잭션이 지원되는 InnoDB 테이블로 저장되도록 개선됐다. 데이터 딕셔너리 업그레이드는 기존의 FRM 파일의 내용을 InnoDB 시스템 테이블로 저장한다. MySQL 8.0 버전부터는 딕셔너리 데이터의 버전 간 호환성 관리를 위해 테이블이 생성될 때 사용된 MySQL 서버의 버전 정보도 함께 기록한다.
  2. 서버 업그레이드 : MySQL 서버의 시스템 데이터베이스(performance_schema와 information_schema, mysql database)의 테이블 구조를 MySQL 8.0 버전에 맞게 변경한다.

 

MySQL 8.0.16 부터의 업그레이드

MySQL 서버 프로그램(mysqld)이 시작되면서 업그레이드를 자동 실행

  1. MySQL 셧다운
  2. MySQL 5.7 프로그램 삭제
  3. MySQL 8.0 프로그램 설치
  4. MySQL 8.0 서버(mysqld) 시작 (MySQL 서버가 데이터 딕셔너리 업그레이드를 실행 후, 시스템 테이블 구조를 MySQL 8.0에 맞게 변환)

'DataBase > MySQL' 카테고리의 다른 글

[MySQL] MySQL 튜닝 용어 정리  (0) 2023.01.14
Comments