PostgreSQL은 데이터베이스를 어디에 저장합니까?


답변:


355

데이터 디렉토리의 위치를 ​​보려면이 쿼리를 사용하십시오.

show data_directory;

모든 런타임 매개 변수를 보려면

show all;

파일 공간의 다른 부분에 데이터베이스 객체를 저장하기 위해 테이블 ​​스페이스를 생성 할 수 있습니다. 해당 데이터 디렉토리에 없을 수있는 테이블 스페이스를 보려면이 쿼리를 사용하십시오.

SELECT * FROM pg_tablespace;

1
data_directory를 표시하십시오. 명령은 정확한 데이터 위치를 가리 킵니다. 다른 사람이 당신을 위해 그것을 설치했을 수도 있기 때문에 특정 폴더를 검색하는 것은 고통스럽고 이제는 구성을 알지 못하므로 sql을 따르는 것이 시간을 절약하는 데 도움이됩니다. :) 고마워 마이크.
Vishal

3
그것은 :( "수퍼 유저가 데이터 디렉토리 검토해야한다"라고
temporary_user_name

5
DBA가 아닌 경우에는 실제로 알 필요가 없습니다.
Mike Sherrill 'Cat Recall'8

8
BTW-누군가 내가 Mac과 같이 Mac에서 Postgres.app의 데이터베이스 위치를 찾고 있다면 ~ / Library / Application Support / Postgres [ver] / var에 있습니다.
sstringer

1
쿼리를 실행하려면 PGAdmin III을 사용하고 메뉴 표시 줄에서 "쿼리 실행"아이콘을 사용하십시오.
Rutger Hofste

61

Windows7에서 모든 데이터베이스는 pg_database아래에 이름이 지정된 파일의 번호로 참조됩니다 C:\Program Files (x86)\PostgreSQL\8.2\data\global. 그런 다음 아래에서 해당 번호로 폴더 이름을 검색해야합니다 C:\Program Files (x86)\PostgreSQL\8.2\data\base. 이것이 데이터베이스의 내용입니다.


3
질문에 명시 적으로 OS가 명시되어 있지 않는 한 OS 별 방식으로 답변하지 마십시오.
simonmenke

24
왜 안돼? OS를 언급하지 않고 "this works"라고 말하면 다른 OS에서 시도하는 사람은 혼란 스러울 것입니다. 관련이 있습니다. 편집 : 아, 아마 "OS에 특정 답변을주지 마십시오." 나는 그것이 말이된다고 생각합니다.
David Winiecki

34
@David, 질문은 어떤 OS를 지정하지 않았기 때문에 아마도 닫혔습니다. (운영체제를 지정했다면 너무 구체적으로 폐쇄 된 것입니다.) 귀하의 답변은 도움이되고 유익한 정보였습니다. 최종적으로 SO 파괴에 성공할 때까지 naysayers와 downvoter는 무시하십시오. 증오 자들은 미워할 것입니다.
SamGoody

@SamGoody이 답변이 실제로 정확하다면, 당신이 말한 것에 약간의 포인트가 있습니다. (폴더 Windows에있을 있으므로 엄격하게 올바르지 는 않지만 확실하게 제공되지는 않습니다). 경우에 따라 이미 주어진 대답에 따라 쉽게 찾을 수 있습니다.
Jon Hanna

@senthilkumari postgresql 11과 windows 10이 있습니다. 언급했듯이 전역 폴더 안에 pg_database를 보려고했지만 아무것도 볼 수 없었습니다. 나는 _vms, _fsm, config_exec_params, pg_control, pg_filenode.map, pg_internal.init이라는 것을 알 수 있습니다. 파일 이름이 지정된 Windows 10의 경우 검색해야합니다. 다른가요?
Nachiket

29

pgAdmin을 열고 특정 데이터베이스의 속성으로 이동하십시오. OID를 찾은 다음 디렉토리를 엽니 다

<POSTGRESQL_DIRECTORY>/data/base/<OID>

DB 파일이 있어야합니다.


14
SELECT oid from pg_database where datname = '<dbname>'
Charlie


27

내 Linux 설치에서 여기 있습니다 : /var/lib/postgresql/8.x/

당신은 그것을 변경할 수 있습니다 initdb -D "c:/mydb/"


12
배포판에 따라 다르지만 Fedora 20의 경우는 다음과 같습니다 /var/lib/pgsql/data. 를 사용하는 것이 더 ps auxw|grep postgres|grep -- -D좋습니다.
Skippy le Grand Gourou

17

특정 테이블 / 인덱스의 위치는 TABLESPACE로 조정할 수 있습니다.

CREATE TABLESPACE dbspace LOCATION '/data/dbs';
CREATE TABLE something (......) TABLESPACE dbspace;
CREATE TABLE otherthing (......) TABLESPACE dbspace;

15

모두가 이미 답변했지만 최신 업데이트에 대해서만. 모든 구성 파일이 어디에 있는지 알고 싶다면 쉘에서이 명령을 실행하십시오.

SELECT name, setting FROM pg_settings WHERE category = 'File Locations';

14

pg_ctl start다음과 같은 오류를 시도 하고 수신 했기 때문에이 질문을하는 것이 좋습니다 .

pg_ctl : 데이터베이스 디렉토리가 지정되지 않았으며 환경 변수 PGDATA가 설정되지 않았습니다.

즉, 명령 에 넣을 디렉토리를 찾고 -D있습니다 pg_ctl start.

이 경우 찾고있는 디렉토리에 이러한 파일이 포함됩니다.

PG_VERSION      pg_dynshmem     pg_multixact
pg_snapshots    pg_tblspc       postgresql.conf
base            pg_hba.conf     pg_notify   
pg_stat         pg_twophase     postmaster.opts
global          pg_ident.conf   pg_replslot
pg_stat_tmp     pg_xlog         postmaster.pid
pg_clog         pg_logical      pg_serial
pg_subtrans     postgresql.auto.conf    server.log

OS와 함께 제공된 검색을 사용하여 위의 파일과 디렉토리를 찾아서 찾을 수 있습니다.

예를 들어 필자의 경우 ( Mac OS XHomeBrew 설치 )이 파일은에 있습니다 . 서버를 시작하려면 다음을 입력하십시오./usr/local/var/postgres

pg_ctl -D /usr/local/var/postgres -w start

... 그리고 작동합니다.


1
homebrew를 사용하는 경우이 데이터를 찾는 가장 쉬운 방법은 다음과 같습니다.brew info postgres
Ben

데이터베이스 폴더를 찾는 이유에 대해 옳습니다. 그러나 문제는 위의 파일을 찾을 수 없다는 것입니다.locate <filename>
aswin prabhakar

그들을 찾았습니다 ... 사용했습니다sudo locate <filename>
aswin prabhakar

14

Postgres는 데이터 디렉토리의 파일에 데이터를 저장합니다. 아래 단계에 따라 데이터베이스 및 해당 파일로 이동하십시오.

postgresql 테이블 파일에 해당하는 데이터베이스는 디렉토리입니다. 전체 데이터 디렉토리의 위치는 다음을 실행하여 얻을 수 있습니다 SHOW data_directory. OS와 같은 UNIX에서 (예 : Mac) /Library/PostgreSQL/9.4/data 모든 데이터베이스 폴더가있는 데이터 디렉토리의 기본 폴더로 이동하십시오./Library/PostgreSQL/9.4/data/base

다음을 실행하여 데이터베이스 폴더 이름을 찾으십시오 (정수 제공. 데이터베이스 폴더 이름 임).

SELECT oid from pg_database WHERE datname = <database_name>;

다음을 실행하여 테이블 파일 이름을 찾으십시오 (정수 제공). 파일 이름입니다.

SELECT relname, relfilenode FROM pg_class WHERE relname = <table_name>; 

이진 파일입니다. 크기 및 생성 날짜 시간과 같은 파일 정보는 평소와 같이 얻을 수 있습니다. 자세한 내용 은이 SO 스레드를 읽으십시오


11

Mac에서 : /Library/PostgreSQL/9.0/data/base

디렉토리를 입력 할 수 없지만 다음을 통해 컨텐츠를 볼 수 있습니다. sudo du -hc data


13
homebrew를 통해 설치 한 경우 (그리고 왜 그렇지 않습니까?) /usr/local/var/postgres@MikeSherrill의 show data_directory;팁을 사용하여 발견 할 수 있습니다
Chris Beck

/Library/PostgreSQL/9.0/data/base보다 Mac과 같은 위치 인 것 같습니다 /usr/local/var/postgres. 숨겨진 Finder 기능을 활성화하지 않으면 Finder에서 후자를 탐색 할 수 없습니다.
Charlie

@Charlie Go 메뉴에서 Finder를 사용하여 찾아 볼 수 있습니다. 이동> 폴더로 이동 ... 또는 ⇧⌘G
Jason S

@JasonS 네, 그 트릭을 사용하여 Finder에서 Mac과 같은 폴더를 열 수 있습니다.
Charlie

1
내 경우에는 : / Users / bob / Library / Application Support / Postgres / var-9.5
Bwyss

7

Windows에서 PostgresSQL 문서가 설명 하는 PGDATA 디렉토리는 다음 과 같습니다 C:\Program Files\PostgreSQL\8.1\data. 특정 데이터베이스의 데이터는 (예를 들어) 아래 C:\Program Files\PostgreSQL\8.1\data\base\100929에 있으며 100929는 데이터베이스 번호라고 생각합니다.


1
주의 : 파일 시스템 수준 백업을 수행하려는 경우 문서에서 설명하는 것처럼 "..." 디렉토리 만 백업하지 마십시오 . "... 각 개별 테이블 또는 데이터베이스 만 백업하거나 복원하려고 할 수 있습니다. 이 파일에 포함 된 정보는 모든 트랜잭션의 커밋 상태를 포함하는 커밋 로그 파일 pg_clog / * 없이는 사용할 수 없기 때문에 작동하지 않습니다. "
Janis Veinbergs 2013 년

이것은 다릅니다. 설치시 다른 폴더로 구성했을 수 있습니다.
ANeves

내 C : \ Program Files \ PostgreSQL \ 9.4 \ 안에 데이터 폴더가 없습니다. 이것은 9.4에만 해당되거나 잘못된 일입니까?
LucyViolet 2012 년

2

picmate의 답변이 옳습니다. Windows에서 기본 DB 폴더 위치는 (적어도 설치시)

C:\PostgreSQL\9.2\data\base\

프로그램 파일에는 없습니다.

그의 두 스크립트는 필요한 정확한 디렉토리 / 파일을 제공합니다 :

SELECT oid from pg_database WHERE datname = <database_name>;
SELECT relname, relfilenode FROM pg_class WHERE relname = <table_name>; 

광산은 datname 16393 및 relfilenode 41603에 있습니다.

postgresql의 데이터베이스 파일


0

도커 컨테이너 (CentOS의 경우)에서 postgres (9.5)를 실행 중이며 위의 주석에서 Skippy le Grand Gourou가 언급했듯이 파일은에 있습니다 /var/lib/postgresql/data/.

$ docker exec -it my-postgres-db-container bash
root@c7d61efe2a5d:/# cd /var/lib/postgresql/data/
root@c7d61efe2a5d:/var/lib/postgresql/data# ls -lh
total 56K
drwx------. 7 postgres postgres   71 Apr  5  2018 base
drwx------. 2 postgres postgres 4.0K Nov  2 02:42 global
drwx------. 2 postgres postgres   18 Dec 27  2017 pg_clog
drwx------. 2 postgres postgres    6 Dec 27  2017 pg_commit_ts
drwx------. 2 postgres postgres    6 Dec 27  2017 pg_dynshmem
-rw-------. 1 postgres postgres 4.4K Dec 27  2017 pg_hba.conf
-rw-------. 1 postgres postgres 1.6K Dec 27  2017 pg_ident.conf
drwx------. 4 postgres postgres   39 Dec 27  2017 pg_logical
drwx------. 4 postgres postgres   36 Dec 27  2017 pg_multixact
drwx------. 2 postgres postgres   18 Nov  2 02:42 pg_notify
drwx------. 2 postgres postgres    6 Dec 27  2017 pg_replslot
drwx------. 2 postgres postgres    6 Dec 27  2017 pg_serial
drwx------. 2 postgres postgres    6 Dec 27  2017 pg_snapshots
drwx------. 2 postgres postgres    6 Sep 16 21:15 pg_stat
drwx------. 2 postgres postgres   63 Nov  8 02:41 pg_stat_tmp
drwx------. 2 postgres postgres   18 Oct 24  2018 pg_subtrans
drwx------. 2 postgres postgres    6 Dec 27  2017 pg_tblspc
drwx------. 2 postgres postgres    6 Dec 27  2017 pg_twophase
-rw-------. 1 postgres postgres    4 Dec 27  2017 PG_VERSION
drwx------. 3 postgres postgres   92 Dec 20  2018 pg_xlog
-rw-------. 1 postgres postgres   88 Dec 27  2017 postgresql.auto.conf
-rw-------. 1 postgres postgres  21K Dec 27  2017 postgresql.conf
-rw-------. 1 postgres postgres   37 Nov  2 02:42 postmaster.opts
-rw-------. 1 postgres postgres   85 Nov  2 02:42 postmaster.pid
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.