MySQL, MariaDB

MySQL/MariaDB Timezone 설정 및 확인

SungWookKang 2019. 6. 13. 10:05
반응형

MySQL/MariaDB Timezone 설정 확인

 

·       Version : MySQL 5.7, Docker

 

MySQL/MariaDB 운영할때, 타임존에 대해서 알아본다. 아래 스크립트는 현재 데이터베이스의 타임존을 확인한다. 타임존이 SYSTEM 으로 표시되면 별도의 타임존 설정이 되어 있지 않다는 뜻이며 시스템의 타임존을 사용하겠다는 뜻이다.

SELECT @@GLOBAL.time_zone, @@SESSION.time_zone, @@system_time_zone;

 

 

데이터베이스 설정에서 default-time-zone 변경 방법은 my.ini (my.cnf)에서 [mysqld] 영역에 타임존을 추가한다. 아래 스크립트는KST 타임존을 설정하였으며 스크립트 적용 MySQL 서비스 재시작이 필요하다.

[mysqld]

default-time-zone='+9:00'

 

다른 방법으로는 현재 서비스 상태에서 글로벌, 또는 세션 변수의 값을 명시적으로 설정할 있다. 방법은 서비스를 재시작 하지 않아도 된다.

SET GLOBAL time_zone='timezone;

SET time_zone='timezone;

 

어플리케이션에서 연결시에도 타임존을 지정할 있다. 경우 세션으로 작동한다. JDBC URL 추가하는 방법은 아래 코드를 참고 한다.

<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">

  <property name="driverClassName" value="com.mysql.jdbc.Driver"/>

  <property name="url" value="jdbc:mysql://127.0.0.1:3306/ db?serverTimezone=UTC" />

  <property name="username" value="admin"/>

  <property name="password" value="admin"/>

</bean>

 

Timezone 값은 여러 가지 포맷으로 사용할 있으며 대소문자 구분이 없다.

·       SYSTEM MySQL 시스템의 타임존과 동일한 설정을 사용

·       ‘+9:00’ 또는 ‘-6:00’ 같이 GTM/UTC 기준 Offset 사용

·       US/Eastern, Asia/Seoul 같은 named timezone 사용

 

named timezone 형태의 값을 사용하려면  “mysql” 데이터베이스에 “time_zone”, “time_zone_name”, “time_zone_transition”, “time_zone_transition_type”, “time_zone_leap_second” 테이블을 참조하는데 실제 테이블은 빈테이블이기 때문에 사용자가 데이터를 입력해주어야 한다. 타임존 데이터는 아래 링크에서 정보를 다운로드 받아 스크립트를 실행한다. 스크립트를 살펴보면 타임존 정보를 확인할 있다.

·       https://dev.mysql.com/downloads/timezones.html

 

[참고자료]

·       https://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html

 

2019-06-12 / 강성욱 / http://sungwookkang.com

MySQL, MySQL Timezone, 타임존, DB time, time_zone, time_zone_name, time_zone_transition, time_zone_transition_type, time_zone_leap_second, named timezone

 

반응형