PostgreSQL将所有数据库保留在Linux上的默认目录是什么?
PostgreSQL将所有数据库保留在Linux上的默认目录是什么?
Answers:
“ 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