본문 바로가기

프로젝트 기록

MySql 시간 설정 삽질 기록 + 기타 기록

DB에 데이터가 들어갈 때, 계속 UTC 타임으로 설정이 되어 있어서 9시간씩 일찍 시간이 들어갔다.

로컬에서 할 때는 잘 되었는데, 이상하게 ec2에서 그런 일이 발생했다.

그래서 그걸 고치는 과정에서 한 삽질을 기록해본다.

 

결론적으로 말하면, ec2가 돌아가는 서버(우분투)에서의 시간 설정을 해주면 된다. 

그걸 몰라서..우분투 안의 mysql server timezone을 바꾼다고 엄청 삽질했다..

 

 

 

일단, 서버 시간을 바꾸는 방법은 아래 포스팅에서 timedatectl을 사용해서 해결했다.

 

https://blog.buffashe.com/2020/02/changing-ubuntu-timezone/

 

우분투 시간대(timezone) 변경하기 – buffashe's Blog

우분투 18.04.4 LTS 환경에서 진행하였습니다. 현재 설정된 시간대는 timedatectl 명령어를 사용하여 확인할 수 있습니다. 현재 Etc/UTC로 설정되어 있습니다. 방법 1: … 더 보기 "우분투 시간대(timezone)

blog.buffashe.com

이렇게 해 주면,

'select @@system_time_zone'의 결과로 KST가 잘 반영된 것을 볼 수 있다.

 

 

 

 

Mysql server timezone을 바꾸는 방법은 다음과 같다.

 

나는 이 사이트의 2번 방법을 참고했다.

https://jwkim96.tistory.com/23

 

[MySQL] mysql server timezone 한국으로 설정하기.

timezone이란? (넘어가실 분들은 여기클릭) <미국의 timezone> 한국은 표준시(대한민국 표준시 - KST)를 하나의 시간대(timezone)만 사용하지만 미국처럼 영토가 넓은 국가들은 timezone이 여러개 있습니다.

jwkim96.tistory.com

 

여기서 주의할 점은, 압축을 풀고 실행 시

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

 

[MySQL] DDL, DML 기본 명령어

Mysql을 사용할 때 데이터베이스, 테이블 관련 그리고 데이터 관련 명령어들을 정리했습니다. 명령어에서 대소문자 구분은 하지 않지만, 가독성을 위해 대문자로 표기한 명령어들이 있습니다. 1.

victorydntmd.tistory.com

 

 

- 서비스 제어 명령어 : systemctl

 

systemctl [명령] [서비스명]

명령 종류 : start, stop, status, restart, reload, enable, disable

 

 

리눅스 명령어 참고 :

https://it-serial.tistory.com/entry/Linux-systemctl-%EB%AA%85%EB%A0%B9%EC%96%B4-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EC%83%81%ED%83%9C-%ED%99%95%EC%9D%B8

 

[Linux] systemctl 명령어 & 프로세스 상태 확인

○ systemctl 서비스 제어 명령어 # systemctl [명령] [서비스명] : 서비스명 입력할 때 [서비스명].service를 다 쳐야하는 경우도 있습니다. 예시) # systemctl start httpd 아파치 서비스 시작 # systemctl st..

it-serial.tistory.com

 

 

-foreign key가 존재하는 table을 truncate/delete 할 때 constraint 에러 문제 해결하기

 

https://devpouch.tistory.com/111

 

[mysql] foreign key가 존재하는 table을 truncate/delete할때 constraint 에러 문제 해결하기

문제상황 truncate 테이블명; ERROR 1701 (42000): Cannot truncate a table referenced in a foreign key constraint (`DB명`.`참조하는 테이블`, CONSTRAINT `test` FOREIGN KEY (`외래키`) REFERENCES `DB명`.`..

devpouch.tistory.com

 

'프로젝트 기록' 카테고리의 다른 글

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