mysql에서 타임존 변경하기
작성자 정보
- 웹관리자 작성
- 작성일
컨텐츠 정보
- 27,240 조회
- 0 추천
- 목록
본문
mysql에서 타임존 변경하기
0. 개요
사이트 및 서버를 운영시 서버의 위치와 서비스 지역이 달라 시간 설정이
문제가 되는 경우가 발생한다 .
이런경우 프로그램상에서 변경도 가능하나 DB에서 직접 변경함으로
프로그램의 단순화를 유지할 수 있다 .
time_zone 변경부분에 대해 알아보도록 하자 .
1. time_zone 관련된 환경변수 및 테이블
time_zone 관련된 환경변수
system_time_zone : mysql서버가 스타트할 당시의 호스트머신의 localtime의 값을 저장하는 변수이다
한번 설정되면 변경되지않는다 .
time_zone : mysql에서 실제 참조하는 time_zone을 저장하는 변수이다.
기본값은 SYSTEM 이며 이는 system_time_zone을 계승한다는 의미이다.
time_zone 테이블
time_zone : 각 타임존의 아이디가 저장되며 leaf 세컨드 설정의 가부를 지정한다.
time_zone_leap_second :
time_zone_name : 각 타임존의 명칭과 타임스템프에 대한 정의가 저장된다 .
time_zone_transition :
time_zone_transition_type :
2. time_zone 변경시 확인사항
타임존설정 변경이 가능한 경우
mysql> use mysql
Database changed
mysql> select * from time_zone_name where name='KST';
+------+--------------+
| Name | Time_zone_id |
+------+--------------+
| KST | 1652 |
+------+--------------+
1 row in set (0.00 sec)
타임존설정 변경이 불가능한 경우
mysql> use mysql
Database changed
mysql> select * from time_zone_name where name='KST';
Empty set (0.00 sec)
타임존설정 변경이 불가능한 경우라도 time_zone 데이타베이스 구축하면 타임존설정 변경이 가능해진다.
3. time_zone 데이타베이스 구축
호스트 머신의 time_zone 데이타를 mysql에서 사용가능한 데이타로 컨버팅하기 위해서는 mysql_tzinfo_to_sql을 이용한다.
호스트 머신의 time_zone 데이타를 mysql에서 사용가능한형태로 변경
/usr/local/mysql/bin/mysql_tzinfo_to_sql /usr/share/zoneinfo > /root/mysql_time_zone.sql
싱글 time_zone 데이타를 mysql에서 사용가능한형태로 변경
/usr/local/mysql/bin/mysql_tzinfo_to_sql /usr/share/zoneinfo/Asia/Seoul KST > /root/mysql_time_zone_seoul.sql
leaf 세컨드 time_zone데이터를 mysql에서 사용가능한형태로 변경(솔직히 뭐하는넘인지 몰것다.)
/usr/local/mysql/bin/mysql_tzinfo_to_sql --leaf /usr/share/zoneinfo/Asia/Seoul > /root/mysql_time_zone_seoul.sql
time_zone 데이타를 mysql에서 사용하도록 임포트 한다 .
mysql -u root -p mysql < /root/mysql_time_zone.sql
싱글 time_zone 데이타를 mysql에서 사용하도록 임포트 한다 .
mysql -u root -p mysql < /root/mysql_time_zone_seoul.sql
4. 타임존 변경 및 확인
mysql> show variables;
....
| system_time_zone | EET |
....
| time_zone | SYSTEM |
....
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2009-02-12 06:39:09 |
+---------------------+
1 row in set (0.00 sec)
mysql> set global time_zone = 'KST';
mysql> quit
환경변수 수정후 적용된겂을 보기위해 현재의 세션을 종료 후 재접속을 한다.
]# mysql -u root
mysql> show variables;
....
| system_time_zone | EET |
....
| time_zone | KST |
....
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2009-02-12 13:39:20 |
+---------------------+
5. 맺음말
지금까지 time_zone의 변경에 관해서 알아보았다
이런걸 어디에 쓰느냐 필요하느냐 라고 하는사람도 있젰지만
time_zone을 변경하는 이유는 앞에서 설명한 것과 같이 프로그램의 단순화도 있지만
시간차이에의해 발생하는 혼란 및 여러 시간대를 지원해야하는경우 (다국적 사이트 운영)에도
해당 국가별 지역 시간대를 보다 쉽고 단순화시길수 있다 .
비록 단순한 부분이며 간단한작업이지만 모르고있다면 시간설정을 변경할때마다
mysql을 리스타트를 시켜야하며 그에따르는 부담이 오히려 더커진다.
그리고 여러 time_zone을 지원해야 하는 경우에 대해 생각해 보자.
관련자료
-
이전
-
다음