Unix 또는 Linux 환경에서 MySQL의 바이너리 기반 설치와 패키지 기반 설치를 업그레이드하는 방법을 알아보겠습니다. MySQL 업그레이드는 크게 인플레이스(In-place) 업그레이드와 논리적(Logical) 업그레이드 두 가지 방식으로 수행할 수 있습니다. 각 방식의 특징과 절차를 자세히 살펴보겠습니다.
인플레이스(In-place) 업그레이드
인플레이스 업그레이드는 기존 설치 환경을 그대로 유지하면서 새 버전으로 교체하는 방식입니다. 주요 절차는 다음과 같습니다.
- 기존 MySQL 서버를 종료한 후, 이전 버전의 바이너리 또는 패키지를 새 버전으로 교체합니다.
- 교체가 완료되면 기존 데이터 디렉터리를 그대로 사용하여 MySQL 서버를 다시 시작합니다.
- 서버 재시작 후, 업그레이드가 필요한 나머지 구성 요소들을 순차적으로 업그레이드합니다.
참고로 일부 Linux 플랫폼에서 RPM 또는 Debian 패키지로 MySQL을 설치하면 systemd 지원이 포함되어 있어 MySQL 서버의 시작과 종료를 체계적으로 관리할 수 있습니다. 이러한 시스템에서는 mysqld_safe 명령어가 설치되지 않으므로 유의해야 합니다.
논리적(Logical) 업그레이드
논리적 업그레이드는 기존 MySQL 인스턴스에서 데이터를 SQL 형태로 내보낸(export) 후, 새 버전에 해당 데이터를 불러오는(import) 방식입니다. 단계별로 살펴보겠습니다.
1단계: 기존 데이터 덤프
먼저 이전 MySQL 설치 환경에서 모든 데이터를 덤프 파일로 내보냅니다.
mysqldump -u root -p
--add-drop-table --routines --events
--all-databases --force > data-for-upgrade.sql
2단계: 기존 서버 종료
덤프가 완료되면 아래 명령어로 기존 MySQL 서버를 안전하게 종료합니다.
mysqladmin -u root -p shutdown
3단계: 새 데이터 디렉터리 초기화
새 버전용 데이터 디렉터리를 생성하고 초기화합니다.
mysqld --initialize --datadir=/path/to/8.0-datadir &
4단계: root 비밀번호 재설정
초기화 과정에서 발급된 임시 root 비밀번호로 로그인한 뒤, 새 비밀번호로 변경합니다.
shell> mysql -u root -p
Enter password: **** <− 임시 root 비밀번호 입력
mysql> ALTER USER USER() IDENTIFIED BY '새로운 비밀번호';
5단계: 덤프 파일 복원
앞서 생성한 덤프 파일을 새 MySQL 서버에 불러옵니다.
mysql -u root -p --force < data-for-upgrade.sql
MySQL 클러스터(Cluster) 업그레이드
MySQL 클러스터 환경에서는 단일 서버가 아닌 여러 노드로 구성되어 있으므로, 정해진 순서에 따라 업그레이드를 진행해야 합니다.
- MGM 노드(관리 노드)를 먼저 업그레이드합니다.
- 데이터 노드는 한 번에 하나씩 순차적으로 업그레이드합니다.
- API 노드(MySQL 서버 포함) 역시 한 번에 하나씩 업그레이드합니다.
- 데이터 딕셔너리를 업그레이드합니다.
- 시스템 테이블을 업그레이드합니다.
- 마지막으로 시스템 전체를 재시작하여 업그레이드를 완료합니다.
마무리
인플레이스 업그레이드는 빠르고 간편하지만 문제 발생 시 롤백이 어려울 수 있으며, 논리적 업그레이드는 시간이 더 걸리지만 데이터 검증이 가능해 안정성이 높습니다. 운영 환경의 특성과 요구 사항에 맞는 방식을 선택하고, 업그레이드 전에는 반드시 전체 백업을 수행하는 것이 좋습니다.