반응형
1. mysql_tzinfo_to_sql
mysql_tzinfo_to_sql 프로그램은 mysql에서 사용하는 time zone 을 설정 할 수 있는 정보를 mysql server에 제공합니다. 기본값은 시스템 타임 존(system_time_zone)을 따라가는 SYSTEM으로 설정이 되어 있습니다.
mysql> show VARIABLES LIKE '%time_zone%';
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | KST |
| time_zone | SYSTEM |
+------------------+--------+
서버의 time_zone은 서버에서 사용되는 시간 NOW(), CURRENT_DATE() 등의 시간 함수의 시간에 영향을 줍니다.
AWS Aurora Mysql은 시스템 시간이 UTC 고정이고 변경이 불가능합니다. 이런 경우 한국시간으로 명시적으로 지정하여 mysql에서 사용되는 시간을 지정할 수 있습니다.
mysql> SET GLOBAL time_zone = 'Asia/Seoul';
ERROR 1298 (HY000): Unknown or incorrect time zone: 'Asia/Seoul'
하지만 mysql을 dnf로 설치시 mysql.time_zone 테이블에 해당 정보가 존재하지 않아 설정이 불가능합니다. 이런 경우 linux의 시간 정보를 이용하여 mysql에서 사용 할 수 있는 time_zone 정보를 넣을 수 있는데 이때 사용하는 프로그램이 mysql_tzinfo_to_sql 입니다.
1) rocky linux 9.x 의 timezone 경로
[root@37bfcb726d10 zoneinfo]# pwd
/usr/share/zoneinfo
[root@37bfcb726d10 zoneinfo]# ls
Africa Canada Factory Iceland MST7MDT ROC Zulu
America Chile GB Indian Mexico ROK iso3166.tab
Antarctica Cuba GB-Eire Iran NZ Singapore leapseconds
Arctic EET GMT Israel NZ-CHAT Turkey posix
Asia EST GMT+0 Jamaica Navajo UCT posixrules
Atlantic EST5EDT GMT-0 Japan PRC US right
Australia Egypt GMT0 Kwajalein PST8PDT UTC tzdata.zi
Brazil Eire Greenwich Libya Pacific Universal zone.tab
CET Etc HST MET Poland W-SU zone1970.tab
CST6CDT Europe Hongkong MST Portugal WET
[root@37bfcb726d10 zoneinfo]#
2) mysql에 timezone 정보 입력
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Enter password:
Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/leapseconds' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/tzdata.zi' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it.
3) timezone정보 확인
mysql> SELECT * FROM mysql.time_zone_name LIMIT 10;
+--------------------+--------------+
| Name | Time_zone_id |
+--------------------+--------------+
| Africa/Abidjan | 1 |
| Africa/Accra | 2 |
| Africa/Addis_Ababa | 3 |
| Africa/Algiers | 4 |
| Africa/Asmara | 5 |
| Africa/Asmera | 6 |
| Africa/Bamako | 7 |
| Africa/Bangui | 8 |
| Africa/Banjul | 9 |
| Africa/Bissau | 10 |
+--------------------+--------------+
10 rows in set (0.00 sec)
4) time_zone 설정
mysql> SET GLOBAL time_zone = 'Asia/Seoul';
Query OK, 0 rows affected (0.00 sec)
5) timezone 다운로드
만약 linux의 timezone 정보가 없거나 최신이 아닌 경우 아래의 경로에서 최신 정보를 다운 받아 입력 할 수 있습니다.
https://dev.mysql.com/downloads/timezones.html
반응형
'Database > MySQL' 카테고리의 다른 글
mysqlcheck (0) | 2022.11.18 |
---|---|
mysqladmin (0) | 2022.11.17 |
mysql_secure_installation (0) | 2022.11.17 |
mysql 8.x - mysql_config_editor (0) | 2022.11.16 |
mysql 8.x 관련 스크립트 파일 (0) | 2022.11.16 |