Linux上的PostgreSQL数据库默认位置


Answers:


134

PostgreSQL将保留所有数据库的目录 ”(和配置)称为“数据目录”,它对应于PostgreSQL所谓的“ 数据库集群 ” (有点混乱),该数据库集群与分布式计算无关,它仅表示一个组PostgreSQL服务器管理的数据库和相关对象的数量。

数据目录的位置取决于分布。如果从源代码安装,则默认值为/usr/local/pgsql/data

用文件系统的术语来说,数据库集群将是一个目录,所有数据都将存储在该目录下。我们称其为数据目录或数据区域。选择存储数据的位置完全取决于您。没有默认值,尽管/ usr / local / pgsql / data或/ var / lib / pgsql / data等位置很受欢迎。(参考

此外,一个正在运行的PostgreSQL服务器的实例与一个集群相关联。可以通过命令行选项或环境变量(通常在运行用户的范围内)将其数据目录的位置传递到服务器守护程序(“ postmaster ”或“ postgres ” )。通常,您可以看到正在运行的服务器,如下所示:-DPGDATApostgres

[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端口。


我可以看到当前数据目录,但可以看到许多其他文件夹和文件。psql是将数据库“保存”为许多文件,还是该数据目录中只有一个数据库即DB?因为我在想类似mysql或sql server上的DB文件之类的东西……
CamiloVA

70
/var/lib/postgresql/[version]/data/

默认情况下至少在Gentoo Linux和Ubuntu 14.04中。

您可以找到postgresql.conf并查看param data_directory。如果带有注释,则数据库目录与此配置文件目录相同。


21
这将取决于分布,他们所做的略有不同。如果可以连接到系统,则使用“ SHOW data_directory”可能是最简单的方法。
Magnus Hagander 2010年

@MagnusHagander这是一个答案,您不是将此评论作为答案。对我来说效果很好。
维沙尔2013年

在Gnome中,我在这里看到的内容相同/var/lib/8.1/postgresql
JuniorMayhé2014年

对我来说,它的'/var/lib/postgresql/9.3/main'–
radtek

9
Centos 7,postgres 9.3路径/var/lib/pgsql/9.3
rana_stack


15

使用软件包管理器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


11

在Centos 6.5 / PostgreSQL 9.3上:

将值更改为"PGDATA=/var/lib/pgsql/data"初始脚本文件中所需的任何位置/etc/init.d/postgresql

请记住, chmod 700chown postgres:postgres在新的位置,你是老板。


2

该命令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

1

我认为最好的方法是查询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)

0

下面的查询将帮助查找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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.