MySQL 8.0 → 8.4 LTS upgrade (in-place)
MySQL난이도: 중급소요 시간: 60–120분(데이터 크기에 따라)설치된 MySQL 8.0을 같은 서버에서(in-place) 8.4 LTS로 업그레이드합니다: 단일 서버, source + replica(replica 먼저, source는 마지막) 또는 InnoDB Cluster(Router → Shell → metadata → secondary 하나씩 → primary는 마지막). 각 서버에서의 util.checkForServerUpgrade 사전 점검, 8.4에서 제거된 변수와 기본 비활성화된 mysql_native_password, cold copy를 이용한 원복 지점, 검증, 8.0 원복 runbook을 포함합니다. Downgrade는 지원되지 않으므로 원복하는 유일한 방법은 업그레이드 전 사본입니다. 새 서버로 옮겨서(dump/load) 전환하려면 논리 백업 가이드의 "다른 서버로 이전" 모드를 사용하십시오.
구성: 서버 1대, source + replica 또는 InnoDB Cluster(3대 이상 멤버 + MySQL Router 서버)
시작하기 전에
- 서버가 MySQL 8.0의 최신 마이너 버전(8.0.4x)이며 공식 MySQL repo에서 설치되어 있습니다. 8.0에서 8.4로의 직접 업그레이드는 지원되지만, 5.7에서 8.4로의 직접 업그레이드는 지원되지 않습니다(먼저 8.0으로).
- … 아래에 데이터 디렉터리 + binlog 크기만큼 여유 공간이 있습니다(cold copy용).
- 최근 성공한 백업(XtraBackup 8.0 또는 mysqldump)과 복원 테스트가 있습니다. 업그레이드 후에는 XtraBackup 8.4로 바꿔야 합니다(8.0 버전은 8.4 서버를 백업할 수 없습니다).
- 애플리케이션과 클라이언트 드라이버(JDBC, PHP mysqlnd, Python…)의 MySQL 8.4 및 caching_sha2_password 지원을 테스트 환경에서 확인했습니다.
- 유지보수 시간이 승인되었습니다…. replica를 하나씩 업그레이드하므로 읽기 트래픽 처리량이 줄 수 있고, source 업그레이드 중에는 쓰기가 중단됩니다….
- Source의 binlog 보존 기간이 replica 업그레이드 시간보다 깁니다(replica가 중지된 동안 아직 필요한 binlog가 삭제되면 안 됩니다).
- Cluster가 정상입니다: 모든 멤버 ONLINE, single-primary 모드, 양식의 첫 번째 멤버가 현재 primary. RECOVERING 멤버가 있거나 OK_PARTIAL / OK_NO_TOLERANCE 상태이면 업그레이드를 시작하지 마십시오.
- Cluster 관리자 계정 …이 … 포트로 모든 멤버에 접속할 수 있고 비밀번호를 알고 있습니다(MySQL Shell이 접속할 때마다 묻습니다).
- Router 서버에 MySQL Router가 공식 MySQL repo에서 설치되어 systemd 서비스(mysqlrouter)로 실행 중입니다. 애플리케이션 트래픽이 여러 Router를 거친다면 Router를 하나씩 업그레이드합니다.
- 애플리케이션은 Router를 통해서만 접속합니다(멤버 이름으로 직접 접속하는 애플리케이션은 primary 역할이 바뀌면 쓰기를 할 수 없습니다).
가이드 단계
- 사전 점검 — 현재 상태 · 8.4 repo 추가와 MySQL Shell 8.4 설치 · Upgrade Checker 실행 · 설정에서 제거된 변수 검색 · mysql_native_password 계정 전환
- InnoDB Cluster 사전 점검 — Cluster 상태와 Router 기록 · Metadata 업그레이드 필요 여부 확인 (dryRun)
- Metadata upgrade — dba.upgradeMetadata() 실행
- Primary 변경 준비 — Secondary가 8.4이고 ONLINE인지 확인
- InnoDB Cluster 최종 확인 — Cluster 상태 확장 확인 · Primary 역할을 첫 번째 멤버로 되돌림
- 업그레이드 후 작업 — 복제 확인 (…) · XtraBackup을 8.4로 전환하고 새 full 백업 수행 · mysql_native_password 계정 전환 (근본 해결) · 원복용 사본 삭제 시점 결정
- 원복 (8.0으로 복귀) — 원복: 8.4 중지, 데이터 디렉터리 옮겨 두기 · 원복: 8.4 중지, 데이터 디렉터리 옮겨 두기 · 원복: 8.0 소프트웨어로 복귀 · 원복: 8.0 소프트웨어로 복귀 · 원복: cold copy 되돌려 놓기 · 원복: cold copy 되돌려 놓기 …