반응형
두 번에 나눠서 MySQL의 업그레이드에 대한 글을 포스팅 하려고 합니다.
1번은 이론적인 부분을 책을 보면서 정리하고, 2번에는 실제로 한번 해보고 테스트 내용을 정리할 예정입니다.
MySQL 서버 업그레이드는 두가지 방법이 있습니다.
1.MySQL 서버의 데이터파일을 그대로 두고 업그레이드를 하는 방법
2.mysqldump도구등을 이용해 데이터를 dump한 후 , 새로 업그레이드 된 MySQL에 적재하는 방법
첫번째는 인플레이스 업그레이드(in-place upgrade) 두번째는 논리적 업그레이드(logical upgrade)라고 합니다.
##인플레이스 업그레이드##
마이너(패치)버전 간 업그레이드와 메이저 버전 간 업그레이드를 생각해볼 수 있습니다.
마이너 업그레이드는 대부분 데이터 파일의 변경 없이 진행되며, 많은 경우 여러 버전을 건너뛰어서 업그레이드 하는것도 허용됩니다. (ex. 8.0.16 -> 8.0.21 버전으로 업그레이드 시 해당 버전의 서버프로그램을 재설치하면 됨)
메이저 버전간 업그레이드는 대부분 크고작은 데이터파일의 변경이 필요하기 때문에 반드시 직전 버전에서만 업그레이드가 가능합니다. (ex. 5.5. -> 5.6은 가능하나 5.5 -> 5.7 , 5.8로 한번에는 불가능. 5.6 -> 5.7 식으로 순차적으로 업그레이드 해야함)
메이저 버전 업그레이드가 여러 단계를 한번에 가야한다면 논리적 업그레이드가 더 효율적일 수 있습니다.
메이저 버전 업그레이드가 특정 마이너 버전에서만 가능한 경우도 있습니다 . GA(General Availability)버전이 메이저 버전 업그레이드를 지원합니다. (ex. 5.7.8은 GA가 아니기 떄문에 8.0으로 업그레이드 할 수 없음)
##MySQL 8.0 업그레이드 시 고려 사항##
5.7 과 8.0은 많은 부분에서 차이가 생깁니다. 그중에서도 5.7과 8.0버전의 기본적인 부분의 차이점과 8.0에서는 사용할 수 없는 기능이 있습니다.
- 사용자 인증 방식 변경
8.0부터는 Caching SHA-2 Authentication 인증방식으로 바뀌었습니다. 5.7에서는 native Authentication입니다.
8.0에서도 계속 native Authentication으로 사용하고자 하면 서버를 시작할 때 --default-authentication-plugin=mysql_native_password 파라미터를 활성화합니다.
my.cnf에 명시적으로 추가해도 됨.
- MySQL 8.0과의 호환성 체크
5.7버전에서 FRM파일이나 호환되지 않는 데이터 타입 또는 함수가 있는지 mysqlcheck 유틸리티를 이용해 확인해볼 것.
- 외래키 이름의 길이
8.0에서 외래키 (Foreign Key)의 이름이 64글자로 제한됩니다.
- 인덱스 힌트
5.x에서 성능향상에 도움됐지만 8.x에서는 오히려 성능저하를 유발할 수 있으므로 성능 테스트를 반드시 수행해볼 것.
- GROUP BY에 사용된 정렬 옵션
5.x에서 GROUP BY ASC/DESC를 사용하고 있다면 제거하거나 다른방식으로 변경할 것.
- 파티션을 위한 공용 테이블스페이스
8.x에서는 파티션의 각 테이블스페이스를 공용 테이블스페이스에 저장할 수 없습니다.
그래서 파티션 테이블스페이스가 공용 테이블스페이스에 저장된 것이 있는지 먼저 확인하고 있으면 alter table .. reorgize 명령을 수행해 개별 테이블스페이스를 사용하도록 변경
##MySQL 8.0 업그레이드 ##
5.7 -> 8.0으로 업그레이드 하는 과정은 이전처럼 단순하지 않습니다. 8.0부터는 시스템 테이블의 정보와 데이터 딕셔너리 정보의 포맷이 완전히 바뀌었습니다.
1.데이터 딕셔너리 업그레이드
5.7버전까지는 데이터 딕셔너리 정보가 FRM 확장자를 가진 파일로 별도로 보관됐는데 8.0부터는 트랜잭션이 지원되는 InnoDB 테이블로 저장되도록 개선됨.
2.서버 업그레이드
MySQL 서버의 시스템 데이터베이스(performance_schema와 information_schema,그리고 mysql 데이터베이스)의 테이블구조를 8.0버전에 맞게 변경함.
8.0.15 까지는 데이터 딕셔너리 업그레이드 작업은 mysqld 프로그램이 실행하고 서버 업그레이드 작업은 mysql_upgrade프로그램이 실행했습니다. 8.0.16부터는 mysql_upgrade가 없어지고 mysqld가 시작되면서
모든 업그레이드 작업을 데이터 딕셔너리 업그레이드와 서버 업그레이드를 자동으로 순차적으로 수행합니다.
#8.0.15버전까지 업그레이드 절차#
1.MySQL 셧다운
2.MySQL 5.7 프로그램 삭제
3.MySQL 8.0 프로그램 설치
4.8.0 mysqld 시작(자동으로 데이터 딕셔너리 업그레이드 수행)
5.mysql_upgrade 프로그램 실행
#8.0.16버전부터 업그레이드절차 #
1.MySQL 셧다운
2.MySQL 5.7 프로그램 삭제
3.MySQL 8.0 프로그램 설치
4.8.0 mysqld 시작(자동으로 데이터 딕셔너리 업그레이드 수행 후 시스템 테이블 구조도 변환)
다음 글에서는 실제로 테스트 해보고 정리한 후 포스팅하겠습니다.
출처 : Real MySQL 8.0 위키북스
반응형
'다른 DBMS > MySQL&MariaDB' 카테고리의 다른 글
[Mysql Workbench]접속 에러 해결 : unsupported protocol (2) | 2023.10.23 |
---|---|
변수를 적용하는 새로운 방법 - SET PERSIST (0) | 2023.10.18 |
Recursive 구문을 활용한 연,월 dummy 데이터 생성 (0) | 2023.08.14 |
Full Backup본으로 테이블 복구 스크립트 만들어서 복구 (0) | 2023.06.21 |
다른 서버에 Mysql 이관하기(mysql 설치,mysqldump 사용) (0) | 2023.04.13 |
댓글