PostgreSQL的目录结构及修改数据目录

initdb 的时候会指定一个 PGDATA 目录,这就是 PostgresQL 存储数据的地方,比如:/var/lib/pgsql/10/data。
======显示数据目录
1. 进入psql
sudo -u postgres psql
2. 找到数据目录
postgres=# SHOW data_directory;
data_directory
------------------------
/var/lib/pgsql/10/data
(1 row)

======PGDATA 下面各项存储的内容大概是:
文件 存储内容
PG_VERSION     实例的 版本号
postgresql.conf   主配置文件
postgresql.auto.conf (新功能,优先级更高)
pg_hba.conf        认证配置文件
pg_ident.conf       映射配置文件
postmaster.opts    /usr/pgsql-10/bin/postgres "-D" "/var/lib/pgsql/10/data/"
postmaster.pid
...

目录名: 存储内容
base: 默认表空间目录,建立的表格储存在此目录中.每个 database 会在 base 目录下有一个子目录
global: 一些共享系统表的目录.Postgres 自己的 meta 数据库存放的地方(全局 DB)
pg_stat_tmp: 统计信息的存储目录
pg_tblsp: 存储了指向各个用户自建表空间实际目录的链接方式
pg_twophase: 使用两阶段提交功能时分布式事务的存储目录
==以下目录功能待补充...
log
pg_commit_ts
pg_dynshmem
pg_logical
pg_multixact
pg_notify
pg_replslot
pg_serial
pg_snapshots
pg_stat
pg_subtrans
pg_wal
pg_xact

以下目录应该是10.0以前版本的
pg_clog: commit log的目录
pg_log:系统日志目录,在查询一些系统错误时就可查看此目录下的日志文件
pg_xlog:wal(Write Ahead Log 预写式日志)日志的目录

base 目录是最重要的一个目录,放的是每一个 database 的数据。
base 目录里的每一个数字目录对于一个 database 的 oid,可以通过 查看 pg_database 这张表查看每一个 数据库的 oid 。
[[email protected]]# ls /var/lib/pgsql/10/data/base
1 13805 13806
postgres=# select oid, datname from pg_database ;
oid | datname
-------+-----------
13806 | postgres
1 | template1
13805 | template0
(3 rows)

每一张表的数据(大部分)又是放在 base/(dboid)/(relfilenode) 这个文件里面:
postgres=# select relname, relowner, relfilenode from pg_class where relowner = 13805;
relname | relowner | relfilenode
---------+----------+-------------
(0 rows)

查询‘item‘表的数据文件.这里的‘item‘是table名称.
lai=# select pg_relation_filepath(‘item‘);
pg_relation_filepath
----------------------
base/16385/24595
(1 row)

======PG安装目录,postgresql默认在/usr/pgsql-10
子目录有:
(1)/usr/pgsql-10/bin: 二进制可执行文件目录,此目录下有postgres,psql等可执行程序.
(2)/usr/pgsql-10/lib: 动态库目录,PG程序运行需要的动态库都在此目录下,如libpg.so.
(3)/usr/pgsql-10/share: 此目录下存放有文档和配置模板文件,一些扩展包的sql文件,在此目录的子目录extension下.

-----------
修改data_directory的所有者,目录权限
chown -R postgres:postgres /home/pgdata
chmod 700 /home/pgdata
--------
======修改数据目录
1. 进入psql
sudo -u postgres psql
2. 找到数据目录
SHOW data_directory;
3. 关闭数据库
sudo systemctl stop postgresql
sudo systemctl status postgresql
4. 我们将现有的数据库目录复制到新的位置用rsync。
>> 使用-a标志保留的权限和其他目录属性, 能避免未来的升级权限问题.
>> 而-v提供详细输出,以便能够按照进度。
注意:确保没有对目录没有尾随斜线,如果你使用制表符完成可以加入。
当有一个结尾的斜线, rsync将转储目录复制到安装点,而不是转移成一个包含内容PostgreSQL目录:
sudo rsync -av /var/lib/postgresql /mnt/newdir
5. 复制完成后,我们将使用.bak扩展名重命名当前文件夹,并保留该文件,直到我们确认移动已成功。 通过重命名它,我们将避免可能由于新的和旧的位置中的文件引起的混乱:
sudo mv /var/lib/postgresql/10/data /var/lib/postgresql/10/data.bak
6. 修改配置文件:postgresql.conf
data_directory = ‘/mnt/newdir/postgresql/10/data‘
7. 启动数据库
sudo systemctl start postgresql
sudo systemctl status postgresql
8. 显示数据目录
sudo -u postgres psql
SHOW data_directory;
9. 删除备份
sudo rm -Rf /var/lib/postgresql/9.5/main.bak
10.重启
sudo systemctl restart postgresql
sudo systemctl status postgresql

==================
移动PostgreSQL的数据目录移到新位置
https://www.howtoing.com/how-to-move-a-postgresql-data-directory-to-a-new-location-on-ubuntu-16-04

PG安装目录
https://blog.csdn.net/liguangxianbin/article/details/79563881
Postgres 数据表文件存储位置
https://blog.csdn.net/jameshadoop/article/details/60962451
http://veryr.com/posts/postgres-storage-location/

原文地址:https://www.cnblogs.com/sztom/p/9541272.html

时间: 2024-10-10 17:48:33

PostgreSQL的目录结构及修改数据目录的相关文章

tomcat 的目录结构及修改端口号

一.Tomcat 服务器文件压缩成功后,将会出现7个文件夹,Tomcat目录下的文件结构,如下: Tomcat (1)bin --------------------保存启动与监控Tomcat命令文件 (2)config-----------------保存Tomcat配置文件 (3)lib---------------------保存web应用访问的jar包文件 (4)logs-------------------保存Tomcat日志文件 (5)temp------------------保存

Linux重要目录结构补充

继续学习Linux重要目录结构. 修改主机名 查看/etc/hostname,可以看到主机名,修改分为临时修改和永久修改. 临时修改:hostname 主机名,可以看出来虽然主机名修改成了luxiaofeng,在Ctrl+D后重新连接Linux系统主机名也变成了luxiaofeng,但是查看/etc/hostname文件发现这只是临时修改生效,真正的名字还是youngchaolin. 永久修改:hostnamectl set-hostname 主机名,这是个Centos7后的修改方式. 可以看出

BAT 快速删除CVS文件和拷贝最近修改文件的目录结构

相信大家在操作大量文件的的时候,经常会遇到一些手动很难操作的情况 比如有CVS版本控制下每个文件夹下都有一个CVS文件夹,一个个手工删除肯定很费劲,我们都是懒人,还是用工具解决吧.不用重新写程序,直接用BAT命令就能作到.把下面的代码拷贝到记事本,保存成bat可执行文件,放到CVS根目录下,直接执行就行. ? 1 2 3 4 5 6 7 @echo off echo Deleting CVS folders and files under: %1 REM Open Folder specifie

xcode修改代码目录结构出现clang: error: no such file or directory 解决方法

需要迁移一个开源工程的一部分内容到自己工程,迁移对方的工程到自己工程之后,因目录结构配置整理需要,对嵌入的工程目录进行了结构改变,编译后出现: clang: error: no such file or directory: '/Users/username/Desktop/echonest-echoprint-ios-sample-b937c04/Classes/ClassName/clang: error: no such file or directory:' 揪其原因,很明显,因为改变了

linux 目录结构(转)

原文:http://www.centoscn.com/CentOS/2014/1222/4347.html linux 目录结构 /: 根目录,一般根目录下只存放目录,不要存放文件,/etc./bin./dev./lib./sbin应该和根目录放置在一个分区中/bin:/usr/bin: 可执行二进制文件的目录,如常用的命令ls.tar.mv.cat等./boot: 放置linux系统启动时用到的一些文件./boot/vmlinuz为linux的内核文件,以及/boot/grub.建议单独分区,

CentOS目录结构超详细版

 linux 目录结构 /: 根目录,一般根目录下只存放目录,不要存放文件,/etc./bin./dev./lib./sbin应该和根目录放置在一个分区中/bin:/usr/bin: 可执行二进制文件的目录,如常用的命令ls.tar.mv.cat等./boot: 放置linux系统启动时用到的一些文件./boot/vmlinuz为linux的内核文件,以及/boot/grub.建议单独分区,分区大小100M即可/dev: 存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,

Linux 标准目录结构

Linux 标准目录结构 初学Linux,首先需要弄清Linux 标准目录结构 / root --- 启动Linux时使用的一些核心文件.如操作系统内核.引导程序Grub等. home --- 存储普通用户的个人文件 ftp --- 用户所有服务 httpd samba user1 user2 bin --- 系统启动时需要的执行文件(二进制) sbin --- 可执行程序的目录,但大多存放涉及系统管理的命令.只有root权限才能执行 proc --- 虚拟,存在linux内核镜像:保存所有内核

CentOS目录结构

/:根目录,一般根目录下只存放目录,不要存放文件 /bin:可执行二进制文件的目录,如常用的命令ls.tar.mv.cat等 /boot:放置linux系统启动时用到的一些文件 /dev:存放linux系统下的设备文件,如挂载光驱:mount /dev/cdrom /mnt /etc:系统配置文件存放的目录,修改配置文件之前记得备份 hosts (文件)配置主机将用的DNS服务器信息 /etc/sysconfig network:(文件)设置主机名,主机名可用hostname命令查看 netwo

CentOS6.5菜鸟之旅:纯转载Linux目录结构

来自:http://www.iteye.com/topic/1125162 使用linux也有一年多时间了  最近也是一直在维护网站系统主机  下面是linux目录结构说明 本人使用的是centos系统,很久没有发表博文了 近期会整理自己所用所了解知识点,发表linux相关的文章,记录自己的linux点点滴滴. linux 目录结构 /: 根目录,一般根目录下只存放目录,不要存放文件,/etc./bin./dev./lib./sbin应该和根目录放置在一个分区中/bin:/usr/bin: 可执