2014-10-30 2 views
0

공식 mysql 이미지를 사용하여 바이너리 로깅을 활성화하는 가장 좋은 방법은 무엇입니까?공식 Docker 이미지를 사용하여 MySQL 바이너리 로깅을 활성화하려면 어떻게해야합니까?

mysql : 5.7 이미지를 사용해 보았습니다. 명령을 실행시 무시하면 시작 옵션을 통과하여 mysqld (아래 참조)로 바이너리 로깅 할 수 있습니다. 이 접근 방식의 문제점은 mysql 사용자가 /var/log/mysql 디렉토리에 쓸 수있는 권한이 없다는 것입니다.

실행 명령 :

docker run -d \ 
    --name mysql \ 
    -v /var/lib/mysql:/var/lib/mysql \ 
    mysql:5.7 \ 
    mysqld \ 
    --datadir=/var/lib/mysql \ 
    --user=mysql \ 
    --server-id=1 \ 
    --log-bin=/var/log/mysql/mysql-bin.log \ 
    --binlog_do_db=test 

출력 :

mysqld: File '/var/log/mysql/mysql-bin.index' not found (Errcode: 2 - No such file or directory) 

내가 저장소를 포크와 MySQL의 사용자가 쓸 수 /var/log/mysql에 대한 볼륨을 추가하고 사용자 정의 이미지를 생성해야하거나 그것을 할 수있는 더 좋은 방법이 있습니까? 공식 MySQL 이미지 만 사용 가능합니까?

답변

1

이 방법의 문제점은 MySQL의 사용자가

문제는 실제로 디렉토리 /var/log/mysql가 아니라 존재 않는 것을는/var/로그/mysql을 디렉터리에 쓰기 권한이 없다는 것입니다 mysql:5.7 도커 이미지.

$ docker run --rm mysql:5.7 ls /var/log/ 
alternatives.log 
apt 
bootstrap.log 
btmp 
dmesg 
dpkg.log 
faillog 
fsck 
lastlog 
wtmp 

또한, MySQL binary logs는 MySQL 서버의 활동이나 오류를 다음과 같은 의미 로그가 아닌, 다음과 같은 컨테이너를 실행해야합니다 그것을 할 수 있습니다 그것들은 서버 충돌시 MySQL 서버에 데이터를 복구 할 수있는 기회를주기위한 로그입니다.

  • 이 빠른 파일 시스템
  • 대부분의 경우

, 부두 노동자의 컨테이너 파일에 기록되는 데이터에 머무르기를 :

은 결과적으로, 당신은 그 바이너리 로그를 원하는 시스템이 느리고 컨테이너의 MySQL 데이터 폴더가 VOLUME으로 선언 된 것입니다.

따라서 바이너리 로그가 Docker 컨테이너 파일 시스템이 아니라 Docker 데이터 볼륨에 기록되기를 원합니다.

docker run -d \ 
    --name mysql \ 
    -v /var/lib/mysql:/var/lib/mysql \ 
    mysql:5.7 \ 
    mysqld \ 
    --datadir=/var/lib/mysql \ 
    --user=mysql \ 
    --server-id=1 \ 
    --log-bin=/var/lib/mysql/mysql-bin.log \ 
    --binlog_do_db=test 
+0

감사 :


긴 이야기를 짧게하여 컨테이너를 시작합니다. 나는 혼란스럽게 할 수 있었지만 이것이 내가 잘못 나온 곳임을 깨닫게했다. 처음에는/var/log를 사용해서는 안됩니다. – Brett

관련 문제