게시판 프로젝트를 진행하며 LocalDateTime으로 게시글 생성, 수정시간을 AuditingEntityListener
로 자동 매핑하고 있었습니다.
그런데 글을 쓰면 9시간 전인 UTC 표준 시간으로 표시되고 있었습니다.
저는 DB로 RDS(MySQL8.0)을 사용하고 있었는데요, DB에 접속하여 SELECT NOW()
를 호출하니 DB 시간 자체가 default인 UTC로 설정되어 있었습니다.
이제 저는 RDS의 time_zone을 바꿔주기로 결정했습니다.
AWS > RDS > 파라미터그룹 > 그룹 생성
에서 그룹을 생성합니다.
아래와 같이 파라미터 그룹 패밀리(DB 종류), 유형, 그룹이름, 설명을 지정합니다.
생성된 파라미터 그룹에서 편집
을 누릅니다.
수정 가능한 파라미터에서 time_zone
을 찾아 파라미터를 서울 기준인 Asia/Seoul
로 설정합니다.
적용할 RDS를 선택하여 수정을 누릅니다.
밑에 있는 추가 구성 > 데이터베이스 옵션 > DB 파라미터 그룹
을 생성한 파라미터그룹으로 지정합니다.
계속
을 눌러 페이지를 넘기고, 수정 예약
dmf 즉시 적용
으로 선택한 후 DB 인스턴스 수정
으로 최종 적용합니다.
적용했다면 해당 RDS의 상태가 수정중
으로 되어있습니다. 상태가 사용 가능
으로 다시 바뀌었다면 작업 > 재부팅
으로 재부팅합니다.
다시 DB에 접속하여 현재시간을 호출해보면 현재 서울의 시간에 맞춰 잘 변경되어 나오는 모습을 볼 수 있습니다.
RDS의 시간은 서울시간과 같아졌지만, 아직도 게시글을 작성하면 생성일시가 -9시간으로 표시되고 있었습니다.
로컬에선 문제가 없었던 것으로 보아, 서버의 시간이 default UTC 기준이라서 발생한 문제로 보입니다.
@PostConstructor
로 스프링 애플리케이션 Timezone 설정@SpringBootApplication
public class UmustbeApplication {
@PostConstruct
public void started() {
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Seoul"));
}
public static void main(String[] args) {
SpringApplication.run(UmustbeApplication.class, args);
}
}