PostgreSQL数据库存储在哪里?

469

PostgreSQL数据库的文件存储在哪里?


4
https://www.postgresql.org/docs/9.5/static/storage-file-layout.html - William Pursell
46
sudo -u postgres psql -c "show data_directory;" 命令可显示标准 PostgreSQL 安装的当前存储位置。 - user6901258
1
psql -U postgres -c "show data_directory;" 对我有效。 - E Epsylon
14个回答

9

picmate的回答是正确的。在Windows上,主数据库文件夹的位置是(至少在我的安装中)

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 的数据库文件


1
应该有最多的投票^^ - Deniz

8
在Windows上,PostgreSQL文档描述的PGDATA目录位于类似于C:\Program Files\PostgreSQL\8.1\data的某个位置。特定数据库的数据位于(例如)C:\Program Files\PostgreSQL\8.1\data\base\100929下,其中100929是数据库编号。

1
注意:如果您想进行文件系统级别的备份,请不要仅仅备份这些目录,因为正如文档所描述的那样:“...您可能会尝试仅从各自的文件或目录中备份或恢复某些单个表或数据库。这是行不通的,因为这些文件中包含的信息在没有提交日志文件pg_clog/*的情况下是无法使用的,这些文件包含所有事务的提交状态。” - Janis Veinbergs
这取决于情况。您可能已经在安装时将其配置到不同的文件夹中。 - ANeves
1
在我的电脑上,C:\Program Files\PostgreSQL\9.4\ 目录下没有 data 文件夹,这是 9.4 版本特有的问题还是我做错了什么? - LucyViolet

4

我正在CentOS的Docker容器中运行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

1
一条终端命令:pg_lsclusters,(使用Ubuntu
你需要的在数据目录下:
Ver Cluster Port Status Owner    Data directory               Log file
10  main    5432 online postgres /var/lib/postgresql/10/main  /var/log/postgresql/postgresql-10-main.log
11  main    5433 online postgres /var/lib/postgresql/11/main  /var/log/postgresql/postgresql-11-main.log

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接