PostgreSQL이 Linux에서 모든 데이터베이스를 보관할 기본 디렉토리는 무엇입니까?
PostgreSQL이 Linux에서 모든 데이터베이스를 보관할 기본 디렉토리는 무엇입니까?
답변:
postgresql이 모든 데이터베이스를 보관할 " 디렉토리 (및 구성)"를 "데이터 디렉토리"라고하며 PostgreSQL 이 분산 컴퓨팅과 관련이없는 " 데이터베이스 클러스터 "를 호출하는 (조금 혼란스럽게도) 일치 하며 그룹을 의미합니다. PostgreSQL 서버에서 관리하는 데이터베이스 및 관련 개체의
데이터 디렉토리의 위치는 배포에 따라 다릅니다. 소스에서 설치하는 경우 기본값은 /usr/local/pgsql/data
다음과 같습니다.
파일 시스템 측면에서 데이터베이스 클러스터는 모든 데이터가 저장되는 단일 디렉토리입니다. 이를 데이터 디렉토리 또는 데이터 영역이라고합니다. 데이터 저장 위치는 전적으로 귀하에게 달려 있습니다. 기본값은 없지만 / usr / local / pgsql / data 또는 / var / lib / pgsql / data와 같은 위치가 널리 사용됩니다. ( 심판 )
게다가 실행중인 PostgreSQL 서버의 인스턴스는 하나의 클러스터에 연결됩니다. 데이터 디렉토리의 위치는 명령 줄 옵션 에서 서버 데몬 ( " postmaster "또는 " postgres ")으로 전달 -D
되거나 PGDATA
환경 변수 (일반적으로 실행중인 사용자의 범위, 일반적으로 postgres
)에 의해 전달 될 수 있습니다. 일반적으로 다음과 같이 실행중인 서버를 볼 수 있습니다.
[root@server1 ~]# ps auxw | grep postgres | grep -- -D
postgres 1535 0.0 0.1 39768 1584 ? S May17 0:23 /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
자주는 아니지만 서로 다른 "클러스터"(데이터 디렉토리)를 제공하는 동일한 PostgreSQL 서버의 두 인스턴스 (동일한 바이너리, 다른 프로세스)를 실행할 수 있습니다. 물론 각 인스턴스는 자체 TCP / IP 포트에서 수신 대기합니다.
/var/lib/postgresql/[version]/data/
적어도 Gentoo Linux 및 Ubuntu 14.04에서 기본적으로.
postgresql.conf
param을 찾아 볼 수 있습니다 data_directory
. 주석 처리 된 경우 데이터베이스 디렉토리는이 구성 파일 디렉토리와 동일합니다.
/var/lib/8.1/postgresql
/var/lib/pgsql/9.3
데이터베이스에 연결하고 다음 명령을 실행합니다.
SHOW data_directory;
추가 정보:
https://www.postgresql.org/docs/current/sql-show.html https://www.postgresql.org/docs/current/runtime-config-file-locations.html
패키지 관리자 apt-get을 사용한 설치 후 Debian 8.1 및 PostgreSQL 9.4의 기본값
ps auxw | grep postgres | grep -- -D
postgres 17340 0.0 0.5 226700 21756 ? S 09:50 0:00 /usr/lib/postgresql/9.4/bin/postgres -D /var/lib/postgresql/9.4/main -c config_file=/etc/postgresql/9.4/main/postgresql.conf
그래서 분명히 /var/lib/postgresql/9.4/main
.
명령 pg_lsclusters
(적어도 Linux / Ubuntu에서는)을 사용하여 기존 클러스터와 함께 데이터 디렉토리를 나열 할 수 있습니다.
Ver Cluster Port Status Owner Data directory Log file
9.5 main 5433 down postgres /var/lib/postgresql/9.5/main /var/log/postgresql/postgresql-9.5-main.log
10 main 5432 down postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log
가장 좋은 방법은 pg_setting
뷰 를 쿼리하는 것입니다 .
select s.name, s.setting, s.short_desc from pg_settings s where s.name='data_directory';
산출:
name | setting | short_desc
----------------+------------------------+-----------------------------------
data_directory | /var/lib/pgsql/10/data | Sets the server's data directory.
(1 row)
아래 쿼리는 postgres 구성 파일을 찾는 데 도움이됩니다.
postgres=# SHOW config_file;
config_file
-------------------------------------
/var/lib/pgsql/data/postgresql.conf
(1 row)
[root@node1 usr]# cd /var/lib/pgsql/data/
[root@node1 data]# ls -lrth
total 48K
-rw------- 1 postgres postgres 4 Nov 25 13:58 PG_VERSION
drwx------ 2 postgres postgres 6 Nov 25 13:58 pg_twophase
drwx------ 2 postgres postgres 6 Nov 25 13:58 pg_tblspc
drwx------ 2 postgres postgres 6 Nov 25 13:58 pg_snapshots
drwx------ 2 postgres postgres 6 Nov 25 13:58 pg_serial
drwx------ 4 postgres postgres 36 Nov 25 13:58 pg_multixact
-rw------- 1 postgres postgres 20K Nov 25 13:58 postgresql.conf
-rw------- 1 postgres postgres 1.6K Nov 25 13:58 pg_ident.conf
-rw------- 1 postgres postgres 4.2K Nov 25 13:58 pg_hba.conf
drwx------ 3 postgres postgres 60 Nov 25 13:58 pg_xlog
drwx------ 2 postgres postgres 18 Nov 25 13:58 pg_subtrans
drwx------ 2 postgres postgres 18 Nov 25 13:58 pg_clog
drwx------ 5 postgres postgres 41 Nov 25 13:58 base
-rw------- 1 postgres postgres 92 Nov 25 14:00 postmaster.pid
drwx------ 2 postgres postgres 18 Nov 25 14:00 pg_notify
-rw------- 1 postgres postgres 57 Nov 25 14:00 postmaster.opts
drwx------ 2 postgres postgres 32 Nov 25 14:00 pg_log
drwx------ 2 postgres postgres 4.0K Nov 25 14:00 global
drwx------ 2 postgres postgres 25 Nov 25 14:20 pg_stat_tmp