[MySQL] Invalid MySQL server downgrade: Cannot downgrade from 80300 to 80200. Downgrade is only permitted between patch releases

2024. 3. 18. 19:44·개발 ━━━━━/Troubleshoot
반응형

문제

 

기존 MySQL 데이터를 복원하는 과정에서 컨테이너가 무한 재시작을 하길래 에러 로그를 확인해보았다.

 

[ERROR] [MY-014061] [InnoDB] Invalid MySQL server downgrade: Cannot downgrade from 80300 to 80200. Downgrade is only permitted between patch releases.

 

데이터 복원 작업을 위해 mysql:latest 태그가 붙은 이미지를 불러와서 docker volume 에 저장 후 그 볼륨을 기존에 사용하던 MySQL 이미지에 마운트하는 방식인데

태그가 latest 이다보니 그 사이 업데이트가 되어 버전이 맞지 않는듯 했다.

 

글 쓰는 기준 최신 태그들

 

해결

태그명이 latest 로 되어 있기 때문에 정확한 버전을 알 수가 없다.

docker inspect 로 현재 실행 중인 MySQL 의 정보를 알아내야 한다.

 

docker inspect docker_이미지명

 

config > MYSQL_VERSION 에 해당 이미지의 MySQL 버전이 있다.

필자 같은 경우는 MYSQL_VERSION=8.2.0-1.el8 로 되어 있어서 8.2.0 버전으로 진행하면 되지 않을까 싶다.

 

MySQL 데이터 복원 스크립트

#!/bin/bash

echo "***** Executing restore_data.sh *****"

# .env 파일 로드
echo "Loading .env... [1/8]"
ENV_FILE="$HOME/.env"
if [ -f "$ENV_FILE" ]; then
    export $(cat "$ENV_FILE" | xargs)
    echo "$ENV_FILE exported"
else
    echo "Cannot find $ENV_FILE"
    exit 1
fi

# Docker 볼륨 생성
echo "Creating Docker volume... [2/8]"
docker volume create ${MYSQL_VOLUME}

# MySQL pull
echo "Pulling MySQL image... [3/8]"
docker pull mysql

# restore 용 MySQL 환경변수 재설정
MYSQL_IMAGE_NAME="mysql:latest"
MYSQL_DATABASE_PASSWORD=1234
MYSQL_CONTAINER_NAME="restore_container"
MYSQL_DATABASE="${MYSQL_DATABASE}"

# MySQL 실행
echo "Running MySQL container... [4/8]"
docker run --name $MYSQL_CONTAINER_NAME -v $MYSQL_DATA_PATH:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=$MYSQL_DATABASE_PASSWORD -d $MYSQL_IMAGE_NAME

# 백업 파일 복사
# echo "Copying backup file to the container... [5/8]"
# docker cp /home/$TARGET_SERVER_USERNAME/backup/backup.sql $MYSQL_CONTAINER_NAME:/var/lib/mysql/backup.sql

echo "Sleeping for 10 seconds..."
sleep 10

# MySQL에 접속하여 백업 데이터 복원
echo "Restoring data from backup... [6/8]"
docker exec -i $MYSQL_CONTAINER_NAME mysql -u root -p$MYSQL_DATABASE_PASSWORD <<< "CREATE DATABASE IF NOT EXISTS $MYSQL_DATABASE DEFAULT CHARACTER SET UTF8; USE $MYSQL_DATABASE;"
docker exec -i $MYSQL_CONTAINER_NAME mysql -u root -p$MYSQL_DATABASE_PASSWORD --database=$MYSQL_DATABASE < /home/$TARGET_SERVER_USERNAME/backup/backup.sql

# MySQL 컨테이너 중지 / 삭제
echo "Stopping and deleting MySQL container... [7/8]"
docker stop $MYSQL_CONTAINER_NAME
docker rm $MYSQL_CONTAINER_NAME

# MySQL 이미지 삭제
echo "Deleting MySQL image... [8/8]"
docker rmi $MYSQL_IMAGE_NAME

echo "***** restore_data.sh Ended *****"

 

docker pull mysql 부분에 태그명 :8.2.0 를 추가하여 pull 해서 스크립트를 실행하면

 

더이상 재시작 되지 않고 로그에도 에러를 발견되지 않는다.

반응형

'개발 ━━━━━ > Troubleshoot' 카테고리의 다른 글

[Ubuntu] '/swapfile': Text file busy  (0) 2024.09.24
[Electron] APPIMAGE env is not defined, current application is not an AppImage  (0) 2024.09.24
[Nginx] default.conf 에 환경변수 적용하기  (0) 2024.03.02
[Redis] NOAUTH Authentication required  (0) 2024.01.10
[Docker] Spring + MySQL + AWS EC2 + Github Actions + Docker 를 활용한 프로젝트 진행하면서 발생했던 각종 오류들  (1) 2024.01.08
'개발 ━━━━━/Troubleshoot' 카테고리의 다른 글
  • [Ubuntu] '/swapfile': Text file busy
  • [Electron] APPIMAGE env is not defined, current application is not an AppImage
  • [Nginx] default.conf 에 환경변수 적용하기
  • [Redis] NOAUTH Authentication required
GukJang
GukJang
•  ⌘ ⌥ •
    반응형
  • GukJang
    SPACE
    GukJang
  • 전체
    오늘
    어제
    • Blog (73)
      • 개발 ━━━━━ (68)
        • Java (14)
        • C++ (1)
        • HTML (1)
        • Spring(boot) (7)
        • Dev (9)
        • SQL (1)
        • CS (2)
        • Git (1)
        • Troubleshoot (14)
        • Algorithm (2)
        • Definition (1)
        • Dev Life (2)
        • TIL (7)
        • 항해 (6)
      • 공돌 ━━━━━ (4)
        • 플젝 (2)
        • 장비 (1)
        • 부품 (1)
      • 독서 ━━━━━ (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    micropython
    항해99
    mysql
    github actions
    마이크로파이썬
    spring
    docker
    Python
    Java
    사전 스터디
    오픈소스 기여
    백준
    AWS
    electron-builder
    EC2
    CI CD
    알고리즘
    자바
    docker volume
    SpringBoot
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
GukJang
[MySQL] Invalid MySQL server downgrade: Cannot downgrade from 80300 to 80200. Downgrade is only permitted between patch releases
상단으로

티스토리툴바