MySQL에서 Time Zone 관련 변수를 설정하고 사용하는 방법
global.time_zone은 MySQL 서버에서 모든 세션에 대해 사용되는 기본 타임존입니다. session.time_zone은 현재 세션에서 사용되는 타임존입니다.
global.time_zone은 MySQL 설정 파일에 설정되거나 SET GLOBAL time_zone 명령어를 사용하여 변경할 수 있습니다. session.time_zone은 SET time_zone 명령어를 사용하여 변경할 수 있습니다.
global.time_zone과 session.time_zone의 차이점
- global.time_zone은 모든 세션에 대해 사용되지만 session.time_zone은 현재 세션에서만 사용됩니다.
- global.time_zone은 MySQL 서버를 다시 시작하더라도 유지되지만 session.time_zone은 MySQL 서버를 다시 시작하면 초기화됩니다.
- global.time_zone은 MySQL 설정 파일에 설정되거나 SET GLOBAL time_zone 명령어를 사용하여 변경할 수 있지만 session.time_zone은 SET time_zone 명령어를 사용하여만 변경할 수 있습니다.
global.time_zone과 session.time_zone을 어떻게 사용할지는 애플리케이션의 요구 사항에 따라 결정해야 합니다. 일반적으로 global.time_zone은 MySQL 서버에서 모든 세션에 대해 사용되는 기본 타임존으로 설정하는 것이 좋습니다. session.time_zone은 특정 세션에서 다른 타임존을 사용해야 하는 경우에만 변경하는 것이 좋습니다.
- 현재시간 및 TimeZone 확인
SELECT NOW(), @@system_time_zone AS TimeZone;
mysql> SELECT NOW(), @@system_time_zone AS TimeZone;
+---------------------+----------+
| NOW() | TimeZone |
+---------------------+----------+
| 2023-09-19 13:26:08 | KST |
+---------------------+----------+
1 row in set (0.00 sec)
global.time_zone과 session.time_zone의 사용 예시
- MySQL 시간대 관련 변수 확인
- MySQL에서 현재 시간대 관련 변수의 설정을 확인
SELECT @@global.time_zone AS global_time_zone, @@session.time_zone AS session_time_zone;
mysql> SELECT @@global.time_zone AS global_time_zone, @@session.time_zone AS session_time_zone;
+------------------+-------------------+
| global_time_zone | session_time_zone |
+------------------+-------------------+
| SYSTEM | SYSTEM |
+------------------+-------------------+
1 row in set (0.00 sec)
또는
mysql> SELECT @@global.time_zone, @@session.time_zone;
+--------------------+---------------------+
| @@global.time_zone | @@session.time_zone |
+--------------------+---------------------+
| SYSTEM | SYSTEM |
+--------------------+---------------------+
1 row in set (0.00 sec)
이 쿼리는 global.time_zone (전역 시간대)와 session.time_zone (세션 시간대) 변수의 현재 설정을 반환합니다.
- MySQL 설정 변경
global.time_zone 설정을 변경하려면 MySQL 서버 설정 파일 (my.cnf 또는 my.ini)을 수정하고 다음 내용을 추가하세요.
vim my.cnf
[mysqld]
default-time-zone = 'Asia/Seoul' # 원하는 시간대로 변경
- global.time_zone 설정(Asia/Seoul로 설정)
- global.time_zone 변수는 MySQL 서버 자체의 시간대를 설정합니다.
SET GLOBAL time_zone = 'Asia/Seoul';
이 명령은 MySQL 서버의 전역 시간대를 'Asia/Seoul'로 설정합니다. 이 설정은 MySQL 서버가 다시 시작될 때까지 유지됩니다.
- session.time_zone 설정(America/New_York로 설정)
- session.time_zone 변수는 클라이언트 세션별로 사용자 지정 시간대를 설정합니다. 각 클라이언트 세션은 다른 시간대를 가질 수 있습니다.
SET time_zone = 'America/New_York';
이 명령은 현재 클라이언트 세션의 시간대를 'America/New_York'로 설정합니다. 이 설정은 클라이언트 세션이 열려 있는 동안에만 유지됩니다.
- 현재 global.time_zone과 session.time_zone을 확인
mysql> SELECT @@global.time_zone AS global_time_zone, @@session.time_zone AS session_time_zone;
+------------------+-------------------+
| global_time_zone | session_time_zone |
+------------------+-------------------+
| SYSTEM | SYSTEM |
+------------------+-------------------+
1 row in set (0.00 sec)
- MySQL 시간대 데이터베이스 사용
- MySQL은 시간대 정보를 저장하고 검색하는 데 사용할 수 있는 데이터베이스를 제공합니다. 이 데이터베이스를 사용하여 시간대 정보를 확인하고 변경할 수 있습니다. 예를 들어, 시간대 데이터베이스를 업데이트하려면 다음 명령을 실행합니다.
INSTALL SONAME 'time_zone';
이 명령은 시간대 데이터베이스를 최신 상태로 유지합니다.
- 시간대 변환 및 사용
- 설정된 시간대를 기반으로 데이터를 저장 및 검색할 수 있습니다. MySQL 함수인 CONVERT_TZ()를 사용하여 시간대 간 변환을 수행할 수 있습니다.
SELECT CONVERT_TZ('2023-09-19 12:00:00', 'UTC', 'America/New_York');
이 쿼리는 '2023-09-19 12:00:00' 시간을 UTC에서 뉴욕 시간으로 변환합니다.
MySQL에서 시간대 관련 설정은 서버 전역 또는 세션별로 제어할 수 있으므로 다양한 시나리오에 맞게 설정할 수 있습니다.
참고URL
- MySQL Server Time Zone Support : https://dev.mysql.com/doc/refman/8.0/en/time-zone-support.html
'리눅스' 카테고리의 다른 글
ping, telnet으로 통신(포트) 상태 확인 (0) | 2023.09.20 |
---|---|
MySQL 엔진 및 MySQL MHA를 설치하고 구성하는 방법 (0) | 2023.09.20 |
jq 명령어 (0) | 2023.09.19 |
리눅스 password hashing 알고리즘 변경하기 (0) | 2023.09.18 |
Squid 프록시를 사용하여 vsftpd 서버에 접근하는 테스트를 수행하는 방법 (0) | 2023.09.18 |