[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 로 되어 있기 때문에 정확한 버전을 알 수가 ..
[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에서 ..
[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 ..
[Spring] 이전 데이터를 불러올때 stream문과 for문의 성능 차이 테스트 - 1
·
개발 ━━━━━/Spring
Spring 프로젝트에서 Websocket 을 이용한 채팅 기능을 구현하였다. 주고 받는 채팅 메세지들은 DB 에 저장이 되고, 채팅방에 입장시 이전 메세지들이 stream 문으로 불러와진다. stream 문 보단 for 문이 더 익숙한 나로선 실시간성이 중요한 채팅에서 stream 문과 for 문으로 각각 구현시 유의미한 성능 차이가 있을지 문득 궁금해졌다. 채팅 메세지들은 MySQL 과 Redis 에 저장되고 있고 Redis 에서만 불러오게끔 되어 있었는데 프로젝트를 진행하면서 이런 저런 테스트를 진행하다 보니 인메모리 데이터베이스인 Redis 에 있던 데이터들이 자꾸 날아가는 상황이 발생하였다. 그래서 채팅 메세지 불러오는 로직을 Redis 에 데이터가 있을 때) 1. Redis 데이터랑 MySQL..
[TIL] Programmers SQL 문제 풀이
·
개발 ━━━━━/TIL
https://school.programmers.co.kr/learn/courses/30/lessons/144853 SELECT BOOK_ID, SUBSTRING_INDEX(PUBLISHED_DATE, 1, 10) FROM BOOK WHERE CATEGORY = '인문' AND SUBSTRING_INDEX(PUBLISHED_DATE, 1, 4) = 2021 ORDER BY PUBLISHED_DATE https://school.programmers.co.kr/learn/courses/30/lessons/151136 SELECT ROUND(AVG(DAILY_FEE), 0) AS AVERAGE_FEE FROM CAR_RENTAL_COMPANY_CAR WHERE CAR_TYPE = 'SUV' https://sc..