mysql을 8.0으로 업데이트 하면서 기존 데이터 베이스가 날아갔고, 다시 복구되지도 않았다. 이번 기회에 서버를 재설치 하고 요즘 뜨는 docker로 서비스를 돌리기로 해다. 의지는 있지만 docker 기본 개념과 철학을 잘 이해하지 못한 상태에서 apache, mysql을 연동하는데 너무나 어려웠다.
- docker container는 한 개 daemon만 실행한다.
- 여러 daemon이 필요하면 container를 새로 만든다.
- docker build 옵션 중 cmd ,entrypoint는 마지막 한 개만 유효하다.
- docker run에 –link 옵션으로 다른 container를 연결하면 hosts 파일에 container 이름이 추가된다. 다른 container에 이름으로 접근할 수 있다.
- docker run 중 -p 옵션으로 포트를 설정하지 않으면 expose 옵션으로 열린 포트를 외부에서 접근할 수 없다.
- mysql docker image에 bind-address 옵션이 없고, 넣어도 역할을 하지 않는다.
- link 옵션 대신 network으로 추가할 수 있는데, 힘들어서 못 하겠다.
- mysql 로 MYSQL_ROOT_PASSWORD로 실행한 후 mysql < file.sql로 복구한 뒤, flush priviliges로 복구 파일 password를 적용시켜야 한다. 파일에 저장된 root password로 데이터 베이스 비밀번호를 초기화 할 수 있다.
- https 설정시 lets encrypt로 받은 키를 configure file에 default에 넣지 않고 별도 virtual host를 설정하면SSL_ERROR_RX_RECORD_TOO_LONG 가 뜬다.
- apache에서 database에 접근하기 위한 사용자 이름, 패스워드를 별도 파일을 만들어 접근할 때, docker container에 넣어 줘야 한다.
이 밖에도 수 많은 시행 착오가 있었다. 게다가 가장 최근 백업 파일이 두 달 전 파일이었다. 주중에 한 번씩 백업 하도록 수정했다. 설정하기는 힘들었어도 사용해 보니 편하다. 간단한 업데이트로 서버를 재설장 한다는게 말도 안되지만 잦은 빈도로 발생한다. phpmyadmin도 설치해야 하는데, 지금 엄두가 안 난다.
두 달치 기록을 날리고 값진 경험을 했다. 아직도 복구 중…