문제점
mysql-1 | mysqld: Can't open file: 'mysql.ibd' (errno: 0 - )
mysql-1 | 2024-07-02T06:29:53.710741Z 1 [ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine
mysql-1 | 2024-07-02T06:29:53.710877Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
mysql-1 | 2024-07-02T06:29:53.710914Z 0 [ERROR] [MY-010119] [Server] Aborting
mysql-1 | 2024-07-02T06:29:53.711250Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.37) MySQL
Community Server - GPL.
mysql-1 | 2024-07-02 06:30:00+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.37-1.el9 started.
mysql-1 | 2024-07-02 06:30:00+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
mysql-1 | 2024-07-02 06:30:00+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.37-1.el9 started.
mysql-1 | '/var/lib/mysql/mysql.sock' -> '/var/run/mysqld/mysqld.sock'
mysql-1 | 2024-07-02T06:30:00.779940Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead.
mysql-1 | 2024-07-02T06:30:00.780858Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.37) starting as process 1
mysql-1 | 2024-07-02T06:30:00.786887Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
mysql-1 | 2024-07-02T06:30:01.032046Z 1 [ERROR] [MY-014061] [InnoDB] Invalid MySQL server downgrade: Cannot downgrade from 80400
to 80037. Downgrade is only permitted between patch releases.
mysql-1 | mysqld: Can't open file: 'mysql.ibd' (errno: 0 - )
mysql-1 | 2024-07-02T06:30:01.347226Z 1 [ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine
mysql-1 | 2024-07-02T06:30:01.347351Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
mysql-1 | 2024-07-02T06:30:01.347376Z 0 [ERROR] [MY-010119] [Server] Aborting
mysql-1 | 2024-07-02T06:30:01.347713Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.37) MySQL
오류 로그를 보면 MySQL 서버가 mysql.ibd 파일을 열지 못하고, 데이터 사전(Data Dictionary) 초기화에 실패하여 서버가 중지되고 있음을 알 수 있다. 이는 MySQL 데이터 디렉토리의 파일 손상이나 호환성 문제로 인해 발생할 수 있다.
"Invalid MySQL server downgrade" 메시지를 보면 MySQL 서버가 이전 버전에서 현재 버전으로 업그레이드된 후, 다시 이전 버전으로 돌아가려 할 때 발생하는 호환성 문제임을 알 수 있다. MySQL은 특정 버전 간의 다운그레이드를 허용하지 않기 때문에 이러한 문제가 발생
#docker-compose.yml
services:
back:
build: ./back
container_name: reactchat-back
ports:
- '3095:3095'
environment:
DB_HOST: ${DB_HOST}
DB_USERNAME: ${DB_USERNAME}
DB_PASSWORD: ${DB_PASSWORD}
DB_DATABASE: ${DB_DATABASE}
CLIENT_DEV_URL: ${CLIENT_DEV_URL}
CLIENT_PROD_URL: ${CLIENT_PROD_URL}
COOKIE_SECRET: ${COOKIE_SECRET}
JWT_SECRET: ${JWT_SECRET}
DB_PORT: ${DB_PORT}
PORT: ${PORT}
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
AWS_REGION: ${AWS_REGION}
AWS_BUCKET_NAME: ${AWS_BUCKET_NAME}
depends_on:
- mysql
mysql:
image: mysql:8.0
restart: always
environment:
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
MYSQL_DATABASE: ${DB_DATABASE}
ports:
- '3307:3306'
volumes:
- mysql_data:/var/lib/mysql
nginx:
image: nginx:alpine
ports:
- '443:443'
volumes:
- ./back/nginx/nginx.conf:/etc/nginx/nginx.conf
- /etc/letsencrypt:/etc/letsencrypt
depends_on:
- back
front:
build: ./front
container_name: reactchat-front
image: kingheedo/reactchat-front:latest
ports:
- '443:443'
volumes:
- /etc/letsencrypt:/etc/letsencrypt # SSL 인증서 공유
- /var/lib/letsencrypt:/var/lib/letsencrypt # SSL 인증서 저장소 공유
volumes:
mysql_data:
driver: local # 볼륨 드라이버 설정
해결방법
볼륨 초기화: 데이터 디렉토리의 파일 손상 문제를 해결하기 위해, 기존 볼륨을 삭제하고 새로운 볼륨을 생성
docker-compose down -v
docker-compose up
'Docker' 카테고리의 다른 글
EC2인스턴스에서 Docker로 실행 중인 MySQL 데이터베이스와 MySQL Workbench 연동하는 법 (0) | 2024.07.07 |
---|---|
Docker에러 - .env파일 환경변수를 인식 못하는 문제 (0) | 2024.07.07 |
도커 명령어 모음 (0) | 2024.06.28 |