콘텐츠로 건너뛰기

mariadb default_time_zone my.cnf 올바른 방법

    인터넷 믿고 그냥 따라 하다가 서버 10분정도 다운이 되었습니다.

    무작정 Ctrl + C -> V 복사 붙여넣기 하지마시기 바랍니다.

    명령어가 정확하게 동작하는지 버전 다 확인하고 동작시켜야 합니다.

    mariadb default_time_zone my.cnf

    올바른 설정 방법을 알려드리겠습니다.

    쿠팡방문하고 계속읽기

    원하지 않을 경우 뒤로가기를 눌러주세요

    쿠팡파트너스 활동의일환으로,이에따른 일정액의 수수료를 제공받습니다

     
    • 서버: Localhost via UNIX socket
    • 서버 타입: MariaDB
    • 서버 연결: SSL is not being used 
    • 서버 버전: 5.5.68-MariaDB – MariaDB Server
    • 제품 버전: 10

    mysql 서버는 오라클에 인수된 이후로 mariadb 를 주소 사용하고 있습니다.

    지금까지 별 생각없이 기본세팅으로 사용을 하고 있었는데…

    오늘 방문자 조회를 하기 위해서 Rows를 보는데 시간이 UTC (한국시간 9시간전)로 지정되어져있더군요.

    웹사이트를 운영할때에는 +9시간을 더하여 시간을 변형해주면되지만

    DB를 직접 확인하고 따로 페이지를 만들 계획이 없다보니 9시간 차이 나는부분이 조금 혼란이 생기더군요.

    그래서 그냥 DB자체를 기본 한국시간에 맞춰서 입력해놓자싶어서 구글링 끝에 사이트 2~3군데를 펼쳐놓고 세팅 점검하면서 명령어도 잘 동작하기에 바로 서버에 적용시켰습니다.

    vi /etc/my.cnf

    [mysqld_safe]
    timezone=’Asia/Seoul’

    [mariadb]
    default_time_zone=’+9:00′

    이 4줄 적는것 때문에 서버가 대략 10분 멈췄으며 실서버를 이용하던 고객의 불편함과 서버 다운으로 인한 검색엔진의 신뢰도 평가 손실을 따지면… my.cnf 설정은 신중히 해야한다는 사실을 다시 깨달았습니다.

    제가 하고 싶었던것은 이렇습니다.

    UTC 기본시각으로 지정되어져있다보니 한국 +9시간 빠르게 만드는것 한가지와

    서버를 재부팅할때 자동으로 이 설정이 유지되도록 하는 한가지 이렇게 총 2가지입니다.

    첫번째 한가지는 Query명령어로 바로 확인할수 있습니다.

    SELECT @@global.time_zone, @@session.time_zone

    SQL 문을 위와같이 입력하여 아래처럼 나오면 한국시간으로 지정된것입니다.

    @@global.time_zone@@session.time_zone
    +09:00+09:00

    하지만 아래처럼 SYSTEM | SYSTEM 으로 나올 경우에는 UTC 기본상태입니다.

    @@global.time_zone@@session.time_zone
    SYSTEMSYSTEM

    명령어를 아래처럼 입력하면 바로 변경이 됩니다.

    따로 데이터베이스 서버를 재실행 하지 않아도 되므로 크게 위험하지는 않습니다.

    그냥 복사 붙여넣기 하셔도 됩니다.

    SET GLOBAL time_zone=’+09:00′;
    SET time_zone = ‘+09:00’;
    세팅을 입력하고 다시 확인해보면 변경이 된것을 확인 할 수 있습니다.

    SELECT @@global.time_zone, @@session.time_zone;

    @@global.time_zone@@session.time_zone
    +09:00+09:00

    하지만 우리의 서버는 여러가지 이유로 재부팅을 해야할 일이 생길수 있습니다.

    MariaDB 오류/재실행/서버 업그레이드 등 다양한 이유로 다시 실행하면 위의 세팅이 다시 초기화됩니다.

    이때 다시 실행하더라도 한국시간을 그대로 유지하기 위해서는 my.cnf 파일에 저장을 하고 DB서버를 다시 실행하면됩니다.

    my.cnf 파일 위치는 리눅스 버전과 종류, 그리고 설치방법에 따라 저장위치가 다를 수 있습니다.

    보통 dnf나 yum으로 자동설치를 했다면 CentOS 7,8,9 기준으로 /etc/my.cnf 위치에 설정파일이 위치합니다.

    이 파일을 vim 명령어로 4줄만 넣어주면됩니다.

    vi /etc/my.cnf

    [mysqld_safe]
    timezone=’Asia/Seoul’

    [mariadb]
    default_time_zone=’+9:00′

    아래 두줄만 넣으면 될꺼같은데…

    mariadb 홈페이지 가보니깐 mysqld_safe 항목에도 넣으라고 적혀있더군요.

    한국시각 변경해야하므로 America/New_Yourk 미국동부 지역을 예시로 적혀있더군요.

    우리나라가 +9시간 아시아 서울이므로 Asia/Seoul 을 입력한것입니다.

    default_time_zone=’+9:00′

    이 부분을 어떤 사이트에서는 default-time-zone=’+9:00′ 이렇게 알려주기도 하더군요

    이부분 찾는데 한참 걸렸으며 (위 방법은 틀린거니 절대 따라 하지마세요)

    또 [mariadb] 항목을 [mysqld]로 세팅되어져서 그때문에 또 헤맸습니다.

    여러분들은 저와같은 실수를 하지 않았으면 하는 마음에 글로 작성해놓았습니다.

    물론 저도 나중에 이글을 보고 다시 정리해야겠네요.