>운영 및 유지보수 >Docker >docker가 mysql 시작 실패 문제를 해결하는 방법

docker가 mysql 시작 실패 문제를 해결하는 방법

PHPz
PHPz원래의
2023-03-31 18:20:256619검색

Docker를 사용하여 mysql을 배포할 때 시작 오류가 발생할 수 있습니다. 이 기사에서는 이러한 상황을 해결하는 방법을 자세히 설명합니다.

1. 문제 설명

Mysql은 매우 널리 사용되는 관계형 데이터베이스이고 Docker는 컨테이너 기술입니다. Docker를 사용하면 Mysql 데이터베이스를 쉽게 배포할 수 있지만 가끔 Mysql 컨테이너 시작이 실패하는 경우가 있습니다. Mysql 컨테이너를 시작하기 위해 다음 Docker 명령을 사용했을 때 시작에 실패한 것을 발견했습니다.

docker run --name mysql -e MYSQL_ROOT_PASSWORD=mypassword -d mysql:5.7

2. 문제 분석

위 명령에 따라 컨테이너를 시작할 때 -e 매개변수는 환경 변수를 지정하며, 여기서 MYSQL_ROOT_PASSWORD는 MySQL 루트 사용자의 비밀번호입니다. mysql: 5.7은 Mysql 데이터베이스의 미러 버전입니다. 그러나 때로는 컨테이너를 시작하지 못하는 경우가 있습니다. 이때, 시작 컨테이너 로그를 보면 오류의 원인을 분석할 수 있습니다.

docker logs mysql

는 MySQL 컨테이너가 시작될 때 충돌이 발생하는 것을 발견했습니다. 그러므로 우리는 오류의 원인을 찾아야 합니다.

3. 문제 해결

다음 단계를 통해 이 문제를 해결할 수 있습니다.

1. 컨테이너가 실행 중인지 확인하세요

docker ps

컨테이너가 이미 실행 중이라면 컨테이너 로그만 확인하면 됩니다.

2. 컨테이너 로그 보기

docker logs mysql

로그에서 다음 오류 메시지를 확인할 수 있습니다.

[ERROR] [MY-012144] [InnoDB] ./ibdata1 can't be opened in read-write mode
[ERROR] [MY-012930] [InnoDB] Plugin initialization aborted with error Generic error. 
[ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine: 0
[ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
[ERROR] [MY-010119] [Server] Aborting

오류 로그를 분석해 보면 MySQL 시작 실패의 원인이 데이터 디렉터리에 쓰기가 불가능하기 때문임을 알 수 있습니다. 이 문제를 해결하려면 데이터 디렉터리가 있는 위치를 찾아 해당 권한을 쓰기 가능으로 설정해야 합니다.

3. Mysql 컨테이너의 데이터 디렉터리 보기

docker inspect mysql | grep -i datadir

출력 결과에서 아래와 같이 Mysql 컨테이너의 데이터 디렉터리를 찾을 수 있습니다.

"DataDir": "/var/lib/mysql"

쓰기 가능하도록 권한을 설정해야 합니다. 디렉터리 권한을 보고 변경하려면 다음 명령을 사용하세요.

docker exec -it mysql bash
chmod -R 777 /var/lib/mysql
exit

그런 다음 컨테이너를 다시 시작할 수 있습니다.

docker start mysql

위 단계를 수행한 후 Mysql 컨테이너를 다시 시작하면 성공적으로 시작할 수 있습니다.

4. 요약

이 글에서는 Docker가 Mysql을 시작하지 못하는 문제에 대한 해결책을 제공합니다. Mysql 컨테이너가 시작되지 않으면 컨테이너 로그를 확인하여 오류의 원인을 찾아 시간 내에 해결할 수 있습니다.

위 내용은 docker가 mysql 시작 실패 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.