PostgreSQL的安装目录下子目录介绍

PostgreSQL的安装目录下子目录介绍

基础信息
OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo)
DB版本:16.2
pg软件目录:/home/pg16/soft
pg数据目录:/home/pg16/data
端口:5777

PostgreSQL 安装目录下包含多个子目录,它们各自承担着不同的职责。这些目录用于存储数据库数据、配置文件、日志文件、临时文件、扩展等。了解每个目录的作用有助于数据库管理员更好地管理和维护 PostgreSQL 数据库系统。下面列举并解释了 PostgreSQL 默认安装目录下常见的核心目录及其作用:

1. base

  • 作用:存储所有数据库的数据文件。
  • 详细说明:每个数据库在 base 目录下都有一个对应的子目录,子目录的名字是数据库的 OID(对象标识符)。这些子目录内部存储了属于该数据库的表和索引的数据文件。
[pg16@test base]$ pwd
/home/pg16/data/base
[pg16@test base]$ ll
total 72
drwx------ 2 pg16 pg16 8192 May 16 07:11 1
drwx------ 2 pg16 pg16 8192 May 16 07:11 16505
drwx------ 2 pg16 pg16 8192 May 16 07:10 16520
drwx------ 2 pg16 pg16 8192 May 16 07:10 16535
drwx------ 2 pg16 pg16 8192 May 10 06:23 4
drwx------ 2 pg16 pg16 8192 May 16 07:10 5
drwx------ 2 pg16 pg16    6 May  9 07:08 pgsql_tmp
[pg16@test base]$ 
[pg16@test base]$ oid2name
All databases:
    Oid  Database Name  Tablespace
----------------------------------
      5       postgres  pg_default
      4      template0  pg_default
      1      template1  pg_default
  16505          white  pg_default
  16520         white2  pg_default
  16535         white3  pg_default

2. global

  • 作用:存储与集群相关的全局数据。
  • 详细说明:包含数据库集群的全局系统表,例如 pg_databasepg_authid 等。此外,还包括控制文件 pg_control,这是 PostgreSQL 数据库集群的关键文件。
ls /home/pg16/data/global          # 查看全局系统表和控制文件

3. pg_tblspc

  • 作用:存储表空间的符号链接。
  • 详细说明:该目录下的每个符号链接指向一个表空间实际存储位置的目录。通过这个机制,PostgreSQL 可以支持用户自定义的表空间位置。
[pg16@test pg_tblspc]$ ll /home/pg16/data/pg_tblspc/
total 0
lrwxrwxrwx 1 pg16 pg16 12 May 14 06:50 17024 -> /pgdir/test2
lrwxrwxrwx 1 pg16 pg16 12 May 14 06:54 17026 -> /pgdir/test3

4. pg_wal(之前版本中称为 pg_xlog

  • 作用:存储写前日志(WAL, Write-Ahead Logging)文件。
  • 详细说明:WAL 是用于数据恢复的重要机制之一,确保了即使在崩溃的情况下也能恢复事务。WAL 文件记录了数据库的每一个变更操作。
[pg16@test ~]$ ll /home/pg16/data/pg_wal/
total 81924
-rw------- 1 pg16 pg16      341 May  5 02:17 000000010000000000000024.00000028.backup
-rw------- 1 pg16 pg16 16777216 May 16 07:15 000000010000000000000078
-rw------- 1 pg16 pg16 16777216 May 13 06:56 000000010000000000000079
-rw------- 1 pg16 pg16 16777216 May 14 07:14 00000001000000000000007A
-rw------- 1 pg16 pg16 16777216 May 15 07:16 00000001000000000000007B
-rw------- 1 pg16 pg16 16777216 May 15 07:17 00000001000000000000007C
drwx------ 2 pg16 pg16       59 May 16 07:15 archive_status

5. pg_stat

  • 作用:存储统计信息。
  • 详细说明:该目录包含 PostgreSQL 内部统计系统的数据文件,用于存储统计信息,如表的扫描数、索引的使用情况等。
[pg16@test ~]$ ll /home/pg16/data/pg_stat         # 查看统计信息文件

6. pg_stat_tmp

  • 作用:用于存储临时文件。
  • 详细说明:该目录下的文件是在执行某些操作时生成的,比如并行查询或者使用了临时的HASH表。这个目录是在启动数据库服务器时自动创建的,并且通常在使用过程中不需要手动干预。。
[pg16@test data]$ ll /home/pg16/data/pg_stat_tmp 
total 72
-rw------- 1 pg16 pg16 71681 May 16 07:13 pgss_query_texts.stat

7. pg_multixact

  • 作用:存储多事务相关的数据。
  • 详细说明:多事务文件用于锁管理,特别是在多个事务同时访问相同的数据时管理共享锁。
# 查看多事务相关文件
[pg16@test ~]$ ll /home/pg16/data/pg_multixact
total 0
drwx------ 2 pg16 pg16 18 Apr  8 23:46 members
drwx------ 2 pg16 pg16 18 Apr  8 23:46 offsets    

8. pg_subtrans

  • 作用:存储子事务状态。
  • 详细说明:子事务是嵌套事务的一部分,它们的状态信息记录在这个目录中,便于管理事务在嵌套中的处理情况。
# 查看子事务状态文件
[pg16@test ~]$ ll /home/pg16/data/pg_subtrans
total 32
-rw------- 1 pg16 pg16 32768 May 16 07:15 0004

9. pg_loglog

  • 作用:存储数据库的日志文件。
  • 详细说明:记录了数据库的错误、警告、通知信息。数据库管理员可以通过分析这些日志文件来诊断数据库问题和优化性能。
[pg16@test ~]$ ll /home/pg16/data/log/
total 3572
-rw------- 1 pg16 pg16   32515 May  1 08:23 postgresql-2024-05-01_070606.log
-rw------- 1 pg16 pg16  108684 May  2 08:40 postgresql-2024-05-02_072736.log
-rw------- 1 pg16 pg16   39613 May  3 23:59 postgresql-2024-05-03_222155.log
-rw------- 1 pg16 pg16  380102 May  4 08:17 postgresql-2024-05-04_000000.log
-rw------- 1 pg16 pg16  225831 May  5 06:30 postgresql-2024-05-05_004214.log
-rw------- 1 pg16 pg16  114277 May  5 23:59 postgresql-2024-05-05_212152.log
-rw------- 1 pg16 pg16    5316 May  6 00:07 postgresql-2024-05-06_000000.log

10. pg_xact(在 PostgreSQL 10 之前的版本中称为 pg_clog

  • 作用:存储事务提交状态。
  • 详细说明:存储了每个事务的提交或中止状态,是事务管理和数据恢复的重要组成部分。
# 查看事务提交状态文件
[pg16@test ~]$ ll /home/pg16/data/pg_xact
total 72
-rw------- 1 pg16 pg16 73728 May 16 07:15 0000

11. pg_commit_ts

  • 作用:存储事务的提交时间戳。
  • 详细说明:该目录下存储了事务的提交时间戳数据,对于某些时间相关的事务处理功能很有用。
# 查看事务提交时间戳文件
[pg16@test ~]$ ll /home/pg16/data/pg_commit_ts

12. pg_dynshmem

  • 作用:存储动态共享内存段信息。
  • 详细说明:该目录包含了管理和跟踪数据库使用的动态共享内存段的文件。
# 查看动态共享内存段文件
[pg16@test ~]$ ll /home/pg16/data/pg_dynshmem

13. pg_replslot

  • 作用:存储复制槽信息。
  • 详细说明:该目录包含了逻辑复制和流复制使用的复制槽信息,用于确保在主从数据库复制过程中不会遗漏数据。
# 查看复制槽文件
[pg16@test ~]$ ll /home/pg16/data/pg_replslot

15. pg_snapshots

  • 作用:存储快照信息。
  • 详细说明:包含了数据库快照信息,用于一致性视图和时间点恢复。
# 查看快照信息文件
[pg16@test ~]$ ll /home/pg16/data/pg_snapshots

15. pg_twophase

  • 作用:存储两阶段提交事务的状态文件。
  • 详细说明:用于管理两阶段提交(2PC)事务的预提交状态,确保在分布式系统中的事务一致性。
# 查看两阶段提交事务文件
[pg16@test ~]$ ll /home/pg16/data/pg_twophase

16. pg_serial

  • 作用:存储序列锁信息。
  • 详细说明:用于管理并发时序列锁的文件,确保序列生成的数字唯一且连续。
# 查看序列锁文件
[pg16@test ~]$ ll /home/pg16/data/pg_serial

总结

理解 PostgreSQL 数据库自带目录的作用对于数据库管理至关重要。这不仅涉及日常的数据库维护和性能优化,还包括在出现问题时的故障排除和数据恢复。通过合理地管理和维护这些目录,能够确保 PostgreSQL 数据库可靠、高效、安全地运行。

谨记:心存敬畏,行有所止。

  • 11
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值