Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

mysql_tzinfo_to_sql 완벽 가이드: MySQL 시간대 테이블 로드 방법

mysql_tzinfo_to_sql은 MySQL 데이터베이스의 mysql 스키마에 있는 시간대(time zone) 테이블을 손쉽게 로드할 수 있도록 도와주는 유틸리티 프로그램입니다. 이 프로그램은 zoneinfo 데이터베이스, 즉 각 시간대 정보를 담고 있는 파일 집합을 제공하는 운영체제에서 사용할 수 있습니다.

zoneinfo 데이터베이스를 지원하는 대표적인 운영체제는 다음과 같습니다.

  • Linux
  • FreeBSD
  • Solaris
  • macOS

시간대 파일은 일반적으로 /usr/share/zoneinfo 디렉터리에 위치하며, Solaris에서는 /usr/share/lib/zoneinfo 경로를 사용합니다.

mysql_tzinfo_to_sql 실행 방법

만약 시스템에 zoneinfo 데이터베이스가 없다면, 배포판에서 제공하는 패키지를 별도로 설치해야 합니다. mysql_tzinfo_to_sql은 여러 가지 방식으로 호출할 수 있으며, 기본 문법은 아래와 같습니다.

shell> mysql_tzinfo_to_sql tz_dir
(또는)
shell> mysql_tzinfo_to_sql tz_file tz_name
(또는)
shell> mysql_tzinfo_to_sql --leap tz_file

1. 디렉터리 전체 로드하기

첫 번째 호출 방식은 zoneinfo 디렉터리의 경로명을 mysql_tzinfo_to_sql에 전달하는 방법입니다. 이렇게 하면 해당 디렉터리의 모든 시간대 정보가 처리되며, 그 결과는 mysql 프로그램으로 전달됩니다.

shell> mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql

위 예제에서 mysql_tzinfo_to_sql은 시스템의 시간대 파일들을 읽어 SQL 문장을 생성하고, 이후 mysql 프로그램이 이 문장들을 실행하여 시간대 테이블에 데이터를 적재합니다.

2. 특정 시간대 하나만 로드하기

두 번째 호출 방식은 개별 시간대 파일 하나만 로드하고 싶을 때 사용합니다. tz_file에는 시간대 파일 경로를, tz_name에는 해당 시간대의 이름을 지정합니다.

shell> mysql_tzinfo_to_sql tz_file tz_name | mysql -u root mysql

3. 윤초(leap second) 정보 초기화하기

시스템 시간대가 윤초(leap second)를 고려해야 하는 경우라면 세 번째 호출 방식을 사용합니다. --leap 옵션과 함께 실행하면 윤초 관련 정보가 초기화되어 테이블에 반영됩니다. 여기서 tz_file은 사용자의 시간대 파일 이름입니다.

shell> mysql_tzinfo_to_sql --leap tz_file | mysql -u root mysql

실행 후 주의사항

mysql_tzinfo_to_sql 실행이 완료된 후에는 반드시 MySQL 서버를 재시작하는 것이 좋습니다. 서버를 재시작하지 않으면 이전에 캐시된 시간대 데이터를 계속 사용하게 되어, 새로 로드한 시간대 정보가 정상적으로 반영되지 않을 수 있습니다.