본문 바로가기
서버구축 (WEB,DB)

MySQL 5.7에서 8.0으로 업그레이드 과정 및 준비사항

by 날으는물고기 2024. 2. 16.

MySQL 5.7에서 8.0으로 업그레이드 과정 및 준비사항

How to upgrade from MySQL 5.7 to 8.0

MySQL 5.7에서 8.0으로의 업그레이드는 주요한 데이터베이스 시스템 변경을 수반하며, 이 과정은 몇 가지 핵심 단계와 고려해야 할 중요한 포인트로 구성됩니다. 아래에서는 이 업그레이드 과정의 기본 배경, 주요 단계, 예상되는 도전 과제 및 이를 해결하기 위한 방안에 대해 상세하게 설명합니다.

배경

MySQL 8.0은 여러 새로운 기능과 개선사항을 제공합니다. 이는 보안 강화, 쿼리 실행 최적화, 새로운 데이터 타입의 지원, JSON 확장 및 성능 개선을 포함합니다. 또한, MySQL 8.0은 새로운 기본 문자 세트인 utf8mb4로의 전환을 포함하여, 국제화 및 다양한 언어 지원 면에서도 개선을 제공합니다.

업그레이드 준비 단계

  1. 업그레이드 필요성 인식: MySQL 5.7의 공식 지원 종료와 보안, 성능, 기능 개선을 위해 업그레이드가 필요합니다.
  2. 테스트 및 계획 수립: 충분한 테스트 환경을 구축하고, 업그레이드 전에 테스트를 수행하여 호환성 및 성능 이슈를 사전에 파악합니다.
  3. 백업: 업그레이드 전에 데이터베이스의 완전한 백업을 수행하여 데이터 손실에 대비합니다.

도전 과제 및 해결책

  1. 롤백 능력 유지: 문제 발생 시 이전 버전으로 쉽게 롤백할 수 있도록 전략을 마련합니다.
  2. 문자 세트 및 정렬 규칙 호환성: MySQL 8.0에서는 utf8mb4가 기본 문자 세트로 사용됩니다. 업그레이드 전에 데이터베이스의 문자 세트 호환성을 확인하고 필요한 경우 조정합니다.
  3. 시스템 변수 변경 대응: MySQL 8.0에서 변경되거나 제거된 시스템 변수를 확인하고, 설정 파일을 적절히 조정합니다.

업그레이드 실행

  1. 점진적 롤아웃: 복제본을 먼저 업그레이드하여 초기 문제를 식별하고 해결한 후, 주 데이터베이스를 업그레이드합니다.
  2. 데이터베이스 관리 도구 사용: Vitess와 같은 도구를 사용하여 데이터베이스 관리 및 샤딩을 용이하게 합니다.

문제 해결 및 최적화

  1. 복제 지연 및 버그 대응: 업그레이드 후 복제 지연이나 버그가 발견되면 적절한 조치를 취합니다.
  2. 생산 환경에서의 쿼리 테스트: 개발 환경과 달리, 실제 생산 환경에서 쿼리 성능을 모니터링하고 최적화합니다.

학습 및 결론

  1. 관찰 가능성의 중요성: 강력한 모니터링 및 로깅 도구를 사용하여 시스템의 성능과 상태를 지속적으로 관찰합니다.
  2. 업그레이드 도구의 활용: MySQL Shell과 같은 공식 도구를 사용하여 업그레이드 전 호환성 검사를 수행하고, 문제가 발생할 경우 적절한 조치를 취합니다.

MySQL 5.x에서 8.x로의 업그레이드 과정은 계획적이고 체계적으로 접근해야 하는 복잡한 과정입니다. 충분한 준비, 테스트 및 모니터링을 통해 성공적인 업그레이드를 달성할 수 있습니다. 기술적 세부 사항을 포함하여 성공적으로 수행하기 위해서는 다음과 같은 코드, 명령어 및 로그 내용이 중요합니다.

1. 준비 단계

  • 버전 확인: 현재 MySQL 버전을 확인합니다.
    mysql --version
  • 백업 수행: 데이터베이스의 완전한 백업을 생성합니다.
    mysqldump --all-databases --user=root --password --single-transaction > all_databases.sql

2. 호환성 검사

  • MySQL 업그레이드 체크: MySQL 8.0으로의 업그레이드 전에 호환성을 검사하는 도구를 사용합니다.
    mysqlcheck --all-databases --check-upgrade --user=root --password

3. 설정 파일(my.cnf/my.ini) 조정

  • 시스템 변수 조정: MySQL 8.0에서 변경되거나 제거된 시스템 변수에 대응하여, my.cnf 또는 my.ini 파일을 수정합니다. 예를 들어, --skip-host-cache 옵션이 MySQL 8.0에서 지원되지 않으므로, 해당 옵션이 설정 파일에 있다면 제거해야 합니다.

4. 업그레이드 실행

  • MySQL 서버 중지: 안전한 업그레이드를 위해 MySQL 서버를 중지합니다.
    systemctl stop mysqld
  • 업그레이드 패키지 설치: 시스템의 패키지 관리자를 사용하여 MySQL 8.0 패키지를 설치합니다. 예를 들어, Ubuntu/Debian 시스템의 경우:
    apt-get update
    apt-get install mysql-server-8.0
  • MySQL 업그레이드 유틸리티 실행: MySQL 시스템 테이블 등을 새 버전에 맞게 업그레이드합니다.
    mysql_upgrade -u root -p

5. 서버 재시작 및 검증

  • MySQL 서버 재시작
    systemctl start mysqld
  • 업그레이드 상태 확인: 로그 파일을 검사하여 업그레이드 프로세스에서 발생한 경고나 오류를 확인합니다.
    grep 'Warning\|Error' /var/log/mysqld.log
  • 버전 확인: 업그레이드 후 MySQL 버전을 확인합니다.
    mysql --version
    이 명령어는 MySQL이 8.0 버전으로 성공적으로 업그레이드되었는지 확인하는 데 사용됩니다.

예상되는 로그 메시지

업그레이드 과정 중, 다음과 같은 로그 메시지가 나타날 수 있습니다:

  • 업그레이드 시작
    [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.x started.
  • 시스템 테이블 업그레이드
    [System] [MY-013576] [InnoDB] InnoDB initialization has started.
    [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
  • 경고 및 오류 처리
    [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
    [ERROR] [MY-000068] [Server] unknown option '--skip-host-cache'.

주의사항

  • 롤백 계획: 업그레이드 전에 롤백 계획을 준비해야 합니다. 만약 업그레이드가 실패하거나 예상치 못한 문제가 발생하면, 백업에서 데이터를 복원하여 이전 버전으로 롤백할 수 있어야 합니다.
  • 문서 및 릴리스 노트 참조: 업그레이드 전에 반드시 MySQL 8.0의 릴리스 노트와 공식 문서를 참조하여, 변경 사항 및 새로운 기능을 숙지해야 합니다.

이 지침을 따르면 MySQL 5.7에서 8.0으로의 업그레이드 과정을 체계적으로 진행할 수 있습니다.

728x90

댓글