프로젝트를 하던 중 스케줄러로 설정해놓았던 공지 팝업이 제시간에 나타나지 않아 원인을 분석해보았다.
원인은 바로 DB의 TIMEZONE이 UTC(Universal Time Coordinated)로 설정되어있어, 한국시간으로 동작중인 나의 서버와 9시간의 차이가 났던 것이다. (한국 : UTC + 9)
내가 사용했던 환경은 Paas 환경인 Elastic beanstalk였는데, 그래서인지 구글링을 했을 때 환경설정 파일을 첨부해서 배포하는 방법밖에 나오지 않았다. 나는 콘솔에서 설정할 수 있는 법을 찾고싶었다.
결국은 찾았고 방법은 아래와 같다.
DB의 현재 설정시간은 SELECT @@global.time_zone
명령어로 확인해볼 수 있다. 현재 UTC이다.
RDS 항목에 들어가 좌측에서 파라미터 그룹
을 선택하고, 파라미터 그룹 생성
을 버튼을 클릭한다.
(기존에 있는 default:mysql8.0
는 변경이 불가능하기 때문에 새로 만들어준다.)
DB의 버전을 입력을 선택하고 DB Parameter Group
유형을 선택한 뒤 그룹 이름을 재량껏 작성하고 생성
버튼을 누른다.
생성완료 후 목록으로 나와지면, 생성한 파라미터 그룹을 클릭한 뒤 검색창에 zone
을 검색하면 time_zone 이 나온다. 파라미터 편집
버튼을 누르고 드롭다운 목록에서 Asia/Seoul
을 선택한 뒤 저장한다.
여기서 끝이 아니다. 이 파라미터 그룹을 사용할 데이터 베이스에 적용을 해야한다.
좌측 메뉴에서 데이터베이스를 누른 뒤 적용할 데이터베이스를 선택하면 아래 창으로 들어와진다.
구성
메뉴를 보면 DB인스턴스 파라미터 그룹이라는 것이 있는 것을 확인할 수 있다.
이것을 수정해야한다. 우측 상단에 수정
버튼을 클릭한다.
스크롤를 내리다보면 추가구성
의 데이터 베이스 옵션
항목에서 생성했던 DB파라미터를 고른 후 저장한다.
이후 우측상단의 작업
드롭다운에서 재부팅을 누른다.
잠시뒤 DB파라미터가 적용되고, DB로 돌아가 다시 SELECT @@global.time_zone
을 실행해보면 Asia/Seoul
로 바뀐 것을 볼 수이다.