[PostgreSQL] PostgreSQL 시간 설정
- Database(데이터베이스)
- 2022. 6. 24. 03:57
목적
- PostgreSQL Docker 로 실행하게 되면, Database 내에 시간과 실제 서버 시간이 맞지 않는 부분이 있습니다.
- 때문에, PostgreSQL 컨테이너 시간을 맞춰주는 작업을 진행해야 합니다.
- TIME ZONE을
Asiz/Seoul
로 변경하는 방법에 대해서 정리 진행합니다.
docker-compose.yml 파일 작성
- PostgreSQL Docker 컨테이너를 docker compose 로 관리하기 위해서 docker-compose.yml 파일을 다음과 같이 작성 하였습니다.
version: '3.4'
services:
postgres:
image: postgres-db
container_name: postgres
environment:
- POSTGRES_USER=test
- POSTGRES_PASSWORD=system
- POSTGRES_DB=adc
- TIMEZONE=Asia/Seoul
ports:
- '5432:5432'
volumes:
- D:/postgresql/data/:/var/lib/postgresql/data
- 위 docker-compose.yml 파일을 실행하려면 해당 경로로 가서
docker-compose up
명령어를 통해 컨테이너를 실행하면 됩니다.
PostgreSQL 컨테이너 시간 확인
- postgreSQL 컨테이너가 실행된 후, PostgreSQL 컨테이너 bash 로 접속 후 psql 명령어를 통해 현재 PostgreSQL 컨테이너의 시간이 어느 시간 기준으로 되어 있는지 확인합니다.
1. postgres 컨테이너 bash 접속
- postgres 컨테이너 bash 로 접속 합니다.
- 아래 명령어를 통해 bash 로 접근할 수 있습니다.
> docker exec -it postgres bash
2. psql 명령어로 PostgreSQL 접속
- psql 명령어를 통해서 PostgreSQL 에 접속합니다.
- PostgreSQL 접속하는 명령어는 다음과 같습니다.
root@c1141990c8f7:/# psql -d {데이터베이스 이름} -p {포트정보} -h {호스트IP} -U {사용자계정}
- 위와 같이 명령어를 입력 후, 정상적으로 접속이 되었다면 아래와 같이 출력됩니다.
root@c1141990c8f7:/# psql -d postgres -p 5432 -h 127.0.0.1 -U mirero
psql (14.3 (Debian 14.3-1.pgdg110+1))
Type "help" for help.
postgres=#
3. 현재 PostgreSQL 시간 정보 확인
- 다음 쿼리문을 통해 PostgreSQL 시간 정보를 확인할 수 있습니다.
SELECT CURRENT_SETTING('TIMEZONE'), NOW(), CURRENT_TIMESTAMP, clock_timestamp();
- 확인 결과, 현재 TimeZone 은
Etc/UTC
시간 기준으로 설정되어 있는 것을 확인할 수 있습니다.
postgres=# SELECT CURRENT_SETTING('TIMEZONE'), NOW(), CURRENT_TIMESTAMP, clock_timestamp();
current_setting | now | current_timestamp | clock_timestamp
-----------------+-------------------------------+-------------------------------+-------------------------------
Etc/UTC | 2022-06-21 08:23:37.175958+00 | 2022-06-21 08:23:37.175958+00 | 2022-06-21 08:23:37.186102+00
(1 row)
- 위 시간을
Asia/Seoul
시간으로 변경하도록 하겠습니다.
4. TimeZone 확인
- 다음 쿼리문을 통해 TimeZone 을 확인할 수 있습니다.
SHOW timezone;
postgres=# SHOW timezone;
TimeZone
----------
Etc/UTC
(1 row)
5. TimeZone 변경
- 이제 TimeZone 을
Etc/UTC
에서Asia/Seoul
로 변경하도록 하겠습니다. - TimeZone 변경하는 명령어는 아래와 같습니다.
SET TIME ZONE 'Asia/Seoul';
postgres=# SELECT CURRENT_SETTING('TIMEZONE'), NOW(), CURRENT_TIMESTAMP, clock_timestamp();
current_setting | now | current_timestamp | clock_timestamp
-----------------+-------------------------------+-------------------------------+------------------------------
Asia/Seoul | 2022-06-21 17:24:10.406169+09 | 2022-06-21 17:24:10.406169+09 | 2022-06-21 17:24:10.40628+09
(1 row)
- 조회 결과,
Asia/Seoul
로 TimeZone 이 정상적으로 변경된 것을 확인할 수 있습니다.
728x90
'Database(데이터베이스)' 카테고리의 다른 글
[PostgreSQL] PostgreSQL 백업 방법 - SQL 덤프 백업 (0) | 2022.06.26 |
---|---|
[PostgreSQL] PostgreSQL Docker-Compose TimeZone 설정 (0) | 2022.06.24 |
[PostgreSQL] PostgreSQL postgresql.conf 파일 정보 (0) | 2022.06.24 |
[PostgreSQL] PgTune 이란? (0) | 2022.06.23 |
[PostgreSQL] pgAgent Job Scheduler 에 VACUUM 등록 테스트 (0) | 2022.06.23 |
이 글을 공유하기