DB에 데이터가 들어갈 때, 계속 UTC 타임으로 설정이 되어 있어서 9시간씩 일찍 시간이 들어갔다.
로컬에서 할 때는 잘 되었는데, 이상하게 ec2에서 그런 일이 발생했다.
그래서 그걸 고치는 과정에서 한 삽질을 기록해본다.
결론적으로 말하면, ec2가 돌아가는 서버(우분투)에서의 시간 설정을 해주면 된다.
그걸 몰라서..우분투 안의 mysql server timezone을 바꾼다고 엄청 삽질했다..
일단, 서버 시간을 바꾸는 방법은 아래 포스팅에서 timedatectl을 사용해서 해결했다.
https://blog.buffashe.com/2020/02/changing-ubuntu-timezone/
이렇게 해 주면,
'select @@system_time_zone'의 결과로 KST가 잘 반영된 것을 볼 수 있다.
Mysql server timezone을 바꾸는 방법은 다음과 같다.
나는 이 사이트의 2번 방법을 참고했다.
https://jwkim96.tistory.com/23
여기서 주의할 점은, 압축을 풀고 실행 시
mysql 안에 들어가서 use mysql 후
mysql> source 실행할_파일경로;
이 코드를 치면 파일이 실행된다 (https://semtax.tistory.com/46 참고)
그 후, /etc/mysql/my.cnf 파일에 이 내용을 추가한다.
[mysqld]
default-time-zone='timezone'
주의할 점은 [mysqld] 이것도 쳐야 한다!
(참고로, my.cnf 파일 위치 찾는 법 : https://extrememanual.net/10810)
그 후 mysql을 재시작 해주면(service mysql restart), 다음과 같은 결과를 얻을 수 있다.
이렇게 서버 시간과 mysql server timezone을 다 변경해 주면,
select @@global.time_zone, @@session.time_zone, @@system_time_zone;
의 결과로
가 나오게 된다. (원래는 SYSTEM, SYSTEM, UTC 였음)
그 외 참고 :
https://devsquare.tistory.com/27
https://dogcowking.tistory.com/179
+)
만약 이렇게 다 시간 설정 올바로 해 줬는데도 여전히 해결이 안 된다면,
프론트에서 시간 표시를 +9시간으로 해 주면 임시적으로라도 해결이 된다.
추가 기록들
- 3306포트 사용 중이라서, mysql 종료시켜야 할 때
pid kill 하지 말고, 그냥 '서비스' 앱 들어가 mysql 찾은 다음 중지/재시작 시키기.
- MySQL DDL, DML 기본 명령어 정리
https://victorydntmd.tistory.com/136
- 서비스 제어 명령어 : systemctl
systemctl [명령] [서비스명]
명령 종류 : start, stop, status, restart, reload, enable, disable
리눅스 명령어 참고 :
-foreign key가 존재하는 table을 truncate/delete 할 때 constraint 에러 문제 해결하기
https://devpouch.tistory.com/111
'프로젝트 기록' 카테고리의 다른 글
JMeter 성능 테스트 기록 (0) | 2022.02.23 |
---|---|
JPA 쿼리 최적화 기록 (0) | 2022.02.23 |
SpringBoot Dockerize 기록 (0) | 2022.02.23 |
MobaXterm을 통한 배포 기록 (0) | 2022.02.23 |
JPA Paging 삽질 기록 (0) | 2022.02.23 |