CentOS는 시스템과 MySQL에 대해 동일한 날짜와 시간대를 정의합니다.

CentOS는 시스템과 MySQL에 대해 동일한 날짜와 시간대를 정의합니다.

나는 Digital Ocean의 일부 Droplet이 운영 체제와 MySQL 사이에 서로 다른 시간대를 가지고 있다는 것을 깨달았습니다. 기본적으로 모든 가상 머신을 브라질 시간대(미국/상파울루)로 구성했으며 tzselectMySQL이 시스템 기본 시간대를 사용한다고 가정했습니다.

따라서 현재 타임스탬프를 입력하면 CentOS에서 다음과 같은 결과를 얻습니다.

date

Thu Jun  9 09:43:03 BRT 2016

그리고 MySQL에서:

mysql> select current_timestamp;
+---------------------+
| current_timestamp   |
+---------------------+
| 2016-06-09 12:45:57 |
+---------------------+
1 row in set (0.00 sec)

mysql>

문서 읽기MySQL 5.5, 시간대를 문자열로 사용하는 옵션이 있습니다. 예를 들어 'America/Sao_Paulo'CentOS 6.5는 MySQL 5.1과 함께 제공되며 +3:00과 같이 시간만 사용하는 동일한 옵션이 없습니다. 나는 시스템에 MySQL 날짜/시간을 구성했기 때문에 MySQL 날짜/시간에 대해 걱정할 필요가 없다고 확신합니다.

내가 만든 CentOS 시간대 구성:

tzselect나는 MySQL이 이 구성을 채택할 것이라고 생각하면서 브라질 시간대를 설정하기 위해 명령을 사용했습니다 . 재부팅 후 시스템이 tzselect에서 내 구성을 삭제했다는 것을 깨달았습니다. 이를 방지하기 위해 다음 줄을 입력했습니다 /etc/rc.local.

ln -sf /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime

이 구성을 사용하더라도 일부 VM은 UTC이고 다른 VM은 BRT라는 것을 알고 있습니다. 현재로서는 모든 서버를 동일한 방식으로 구성하는 방법을 잘 모르겠습니다. 최소 40대의 시스템입니다.

누군가 시스템의 시간대와 MySQL의 시간대를 올바르게 설정하는 방법을 설명하는 데 도움을 줄 수 있습니까?

추가 정보

시스템: CentOS 6.5 x64 MySQL: 5.1(기본값)

@lese가 요청한 명령은 다음과 같습니다.

mysql> SELECT @@global.time_zone, @@session.time_zone;
+--------------------+---------------------+
| @@global.time_zone | @@session.time_zone |
+--------------------+---------------------+
| SYSTEM             | SYSTEM              |
+--------------------+---------------------+
1 row in set (0.00 sec)

mysql> select current_timestamp;
+---------------------+
| current_timestamp   |
+---------------------+
| 2016-06-09 14:31:19 |
+---------------------+
1 row in set (0.00 sec)

mysql> exit
Bye

$ date
Thu Jun  9 11:31:22 BRT 2016

/etc/sysconfig/clock파일의 기계 시간은 다음과 같습니다.

[root@xxxx]# cat /etc/sysconfig/clock
ZONE=Etc/UTC

감사합니다.

답변1

문제를 발견했는데,

tzselect시간대를 선택했지만 /etc/sysconfig/clock이 함께 제공되어 시스템 ZONE=America/New_York의 날짜/시간 정보를 사용하는 시스템 및 응용 프로그램에 일부 오류가 발생했습니다. 이 문제를 해결하고 BIOS 시계를 시스템 시계와 동기화된 상태로 유지하려면 다음 단계를 따르십시오.

sudo vim /etc/sysconfig/clock

ZONE="America/Sao_Paulo"
UTC=true
ARC=false

그런 다음 시스템을 다시 시작하십시오.

sudo reboot

default_time_zone(CentOS 의 /etc/my.cnf경우) 또는 (Ubuntu 기반 운영 체제의 경우) /etc/mysql/my.cnf불필요한 시간대 매개변수를 제거합니다 .

그런 다음 MySQL 서버 인스턴스를 다시 시작합니다.

sudo /etc/init.d/mysqld restart

마지막으로 모든 구성이 올바른지 확인하려면 다음 명령을 사용하십시오.

mysql> select current_timestamp;
+---------------------+
| current_timestamp   |
+---------------------+
| 2016-06-09 15:18:32 |
+---------------------+
1 row in set (0.00 sec)

mysql> exit
Bye
[carlos@xxxx-setup ~]$ date
Thu Jun  9 15:18:34 BRT 2016
[carlos@xxx-setup ~]$

@lese님의 관심에 감사드립니다.

답변2

나는 오래된 게시물을 삭제하는 것을 싫어하지만 이 정보를 게시할 수 있는 유일한 장소는 여기인 것 같습니다. CentOS 7에서는 기본 MariaDB 10 설정(CentOS 표준 rpm 사용)에 시간대 파일 위치가 잘못되었습니다. 시간대 정보를 MySQL에 의존하는 애플리케이션에 문제가 발생했습니다. 애플리케이션에서 어떤 설정을 사용하든 항상 UTC 시간대 시간을 반환합니다.

이것:

mysql_tzinfo_to_sql /usr/share/zoneinfo/right |mysql -u root mysql -p

문제는 즉시 수정되었습니다. 재부팅이 필요하지 않습니다! 좋은 측정을 위해 캐시 등을 지웠습니다.

관련 정보