
본 포스트는 Real MySQL 8.0 1권을 읽은 뒤 정리하는 글입니다.
MySQL 서버의 두 에디션의 경우 상용화 방식은 모두 동일하지만, 아래의 특정 부가 기능들은 엔터프라이즈 에디션에서만 지원한다.
MySQL 서버 업그레이드의 두 가지 방법
인플레이스 업그레이드(In-Place Upgrade)
MySQL 서버의 데이터 파일을 그대로 두고 업그레이드
논리적 업그레이드 (Logical Upgrade)
mysqldump 도구 등을 통해 MySQL 서버의 데이터를 SQL 문장이나 텍스트 파일로 덤프한 후, 새로 업그레이드된 버전의 MySQL 서버에서 덤프된 데이터를 적재
마이너(패치) 버전 간 업그레이드, 즉 동일 메이저 버전에서 마이너 버전 간 업그레이드는 대부분 데이터 파일의 변경 없이 진행되며, 여러 버전을 건너뛰어 업그레이드 또한 허용
메이저 버전 간 업그레이드의 경우 대부분 크고 작은 데이터 파일의 변경이 필요, 반드시 직전 버전에서만 업그레이드 가능
ex) MySQL 5.1에서 MySQL 8.0으로 업그레이드 하는 경우
1. MySQL 5.1 -> 5.5 버전 업그레이드
2. MySQL 5.5 -> 5.6 버전 업그레이드
3. MySQL 5.6 -> 5.7 버전 업그레이드
4. MySQL 5.7 -> 8.0 버전 업그레이드
두 단계 이상을 한 번에 업그레이드 해야 하는 경우 논리적 업그레이드가 더 좋은 방법일 수 있음
⚠️ 주의사항
메이저 버전 업그레이드가 특정 마이너 버전에서만 가능한 경우가 있으므로, 항상 메이저 버전 업그레이드 시 MySQL 서버의 메뉴얼을 정독한 후 진행을 권장
MySQL 5.7 버전과 8.0 버전의 기본적인 부분의 차이점 및 8.0 버전에서 사용할 수 없는 기능이 존재하여 업그레이드 전 검토 필요
MySQL 5.7에서 MySQL 8.0 업그레이드의 두 가지 단계
시스템 변수가 가지는 5가지 속성의 의미
Both 범위 시스템 변수MySQL 서버가 기동 중인 상태에서 변경 가능 여부에 따라 동적 변수와 정적 변수로 구분함
동적 변수의 경우 MySQL 서버에서 SET GLOBAL 명령으로 변경 시 즉시 서버에 반영하지만 설정 파일에 변경 내용을 따로 적용이 필요함
SET PERSIST 명령으로 시스템 변수를 변경하면 MySQL 서버는 변경된 값을 즉시 적용 및 설정 파일(mysqld-auto.cnf)에 변경 내용을 추가로 기록 후 재시작시 시스템 변수 적용
SET PERSIST 명령은 세션 변수에 적용되지 않며 MySQL 서버는 자동으로 GLOBAL 시스템 변수의 변경으로 인식 및 변경
현재 실행 중인 서버에 적용하지 않고 재시작 시 변경을 원하는 경우 및 정적 변수의 값을 영구적으로 변경하고자 하는 경우 SET PERSIST_ONLY 명령 사용