[MySQL] Invalid MySQL server downgrade: Cannot downgrade from 80300 to 80200. Downgrade is only permitted between patch releases
·
개발 ━━━━━/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 로 되어 있기 때문에 정확한 버전을 알 수가 ..
[Nginx] Blue / Green 배포 전략으로 Spring 프로젝트 EC2 에 무중단 배포하기
·
개발 ━━━━━/Dev
무중단 배포 현재 연습하고 있는 프로젝트는 사진과 같은 단순 배포 방식으로 프로젝트가 배포 되고 있어 업데이트 사항이 있을 때 서버가 항상 종료가 되었다가 새로 시작하는 방식으로 운영되고 있었다. 종료가 된 상태에선 서비스 이용을 못할 뿐더러 새롭게 배포된 프로젝트에 문제가 있을시 수습되기 전까진 서비스 이용을 또 못하고 있는 상황이 연출되어 무중단 배포를 적용시켜보기로 했다. 무중단 배포 전략 1. Rolling Update (롤링 배포) 롤링 배포는 사용 중인 인스턴스 내에서 새 버전의 프로젝트를 점진적으로 교체하는 방식 서비스 중인 인스턴스 하나를 로드밸런서에 라우팅하지 않도록 한 뒤, 새 버전을 적용하여 라우팅하도록 한다. 새 버전을 배포할 때 인스턴스가 감소를 하므로 트래픽이 몰려 과부하가 발생..
[Docker] Docker Volume 을 이용한 MySQL 데이터 백업
·
개발 ━━━━━/Dev
Ubuntu 에서 Docker 로 띄워놓은 MySQL 컨테이너의 데이터를 Docker Volume 을 만들어 관리하려 한다. docker inspect mysql_컨테이너_ID 로 해당 컨테이너에 마운트 되어 있는 볼륨을 찾는다. "Mounts" 부분에서 찾을 수 있다. docker volume create 새로운_volume_이름 으로 새로운 볼륨을 생성해주고 docker run --rm -v 백업할_volume_이름:/from -v 새로_만든_volume_이름:/to alpine ash -c "cd /from && cp -av . /to" • 백업할_볼륨_이름을 /from 경로에 마운트합니다. • 새로_만든_볼륨_이름을 /to 경로에 마운트합니다. • alpine 컨테이너를 시작하고, /from에서 ..
[Redis] NOAUTH Authentication required
·
개발 ━━━━━/Troubleshoot
문제 상황 Docker-Compose 로 Spring + MySQL + Redis 컨테이너를 실행시키는데 Spring 컨테이너 로그를 살펴보니 NOAUTH Authentication required 이런 오류가 뜬다. 로컬에서 Redis 를 돌릴 땐 비밀번호가 필요 없었던 것 같아 프로젝트에서 삭제를 했더니 생긴 오류인 것 같다. 해결 우선 spring 프로젝트에서 비밀번호 부분을 다시 활성화시키고 Redis 컨테이너가 띄워진 상태로 // redis 컨테이너 접속 docker exec -it redis_컨테이너_ID bash // redis-cli 접속 redis-cli // Redis 비밀번호 확인 config get requirepass // Redis 비밀번호 설정 config set require..
[Docker] Spring + MySQL + AWS EC2 + Github Actions + Docker 를 활용한 프로젝트 진행하면서 발생했던 각종 오류들
·
개발 ━━━━━/Troubleshoot
글을 시작하기 전... 결론적으로 이 글은 Spring 프로젝트를 Dockerfile 로 빌드한 후 Github Actions 로 Docker Hub 에 올리고 EC2 환경에서 각종 컨테이너들을 Docker-Compose 로 관리하는 것을 목표로 이것 저것 해보면서 발생했던 모든 문제들을 다루는 글이라 내용이 다소 난잡하고 중구난방일 수 있다. 프로젝트 환경 진행했던 프로젝트가 있는데 성공적으로 끝마치고 나니 프로젝트 때 맡은 부분을 구현하느라 미처 해보지 못했던 서버 구성을 해보고 싶었고 이것 저것 실험해보고 싶은게 생겨 개인 서버를 구축해 프로젝트를 그대로 실행시켜 보기로 했다. 구 프로젝트는 1. Github Actions 로 jar 파일을 직접 배포하여 실행 2. MySQL 은 RDS 를 구성하여..
[Docker] MySQL 컨테이너를 이미지화 하여 Docker Hub 에 push 하기
·
개발 ━━━━━/Dev
현재 EC2 에서 돌아가고 있는 MySQL DB 를 Docker Hub 에 commit & push 를 하려고 한다. 터미널에서 // docker commit -m "커밋메세지" -a "docker hub 계정이메일" 컨테이너ID 계정명/이미지이름:태그 docker commit -m "v1.0.0" -a "***@gmail.com" 02dcc ***/mysql-***:1.0.0 명령어로 현재 실행 중인 컨테이너를 이미지화 한다. 그럼 이렇게 1.0.0 태그가 달려있는 이미지가 생성이 되고 docker login 이미지를 올릴 docker hub 에 로그인을 해준 후 // docker push 이미지이름:태그 docker push ***/mysql-***:1.0.0 push 를 해주면 docker hub ..
[Docker] The requested image's platform (linux/arm64) does not match the detected host platform (linux/amd64/v3) and no specific platform was requested
·
개발 ━━━━━/Troubleshoot
AWS EC2 에서 RDS 가 아닌 Docker Hub 를 통해 Mysql 이미지를 관리하고자 Docker Hub 에서 mysql:latest 를 받아 데이터베이스만 새로 만든 상태로 hub 에 push 후 EC2 로 pull 하고 run 을 해보았는데 WARNING: The requested image's platform (linux/arm64) does not match the detected host platform (linux/amd64/v3) and no specific platform was requested 같은 에러가 떴다. 문제는 최초로 mysql 을 받았던 환경이 M1 (Arm64) 맥이기 때문으로 ec2 의 플랫폼 (Amd64) 과 호환되지 않아 발생하는 문제이다. 해결 방법으로 my..