efbe94caec96da71cddecfa060e08788.jpeg

PostgreSQL 数据库集簇(Database Cluster)是指一个或多个数据库实例的集合,这些数据库实例共享相同的数据库系统文件和配置。这种设计允许在同一个 PostgreSQL 服务器上管理多个数据库,而每个数据库又可以独立地运行和存储数据。

PostgreSQL 数据库集簇的主要特点

1. 多数据库管理:

  • 一个 PostgreSQL 集簇可以包含多个数据库,用户可以在同一实例中创建和管理多个数据库。

  • 每个数据库都有独立的用户和权限设置。

2. 共享系统资源:

  • 所有数据库共享同一个集簇的系统资源,包括内存、CPU、磁盘等。

  • 集簇内的各个数据库共享相同的配置文件和系统目录。

3. 数据目录:

  • PostgreSQL 集簇在文件系统中有一个数据目录,所有数据库的数据和元数据都存储在此目录中。

  • 数据目录中包含多个子目录和文件,管理不同数据库和其对象。

4. 配置和管理:

  • 集簇的配置参数存储在 postgresql.conf 文件中,影响所有数据库的行为。

  • 通过工具如 pg_ctl 和 psql 等,可以管理数据库集簇的启动、停止和其他操作。

5. 高可用性和扩展性:

  • PostgreSQL 支持多种高可用性解决方案(如流复制、热备份),适用于集簇的部署。

  • 可以在集簇中添加更多数据库或扩展现有数据库,以满足不同的需求。

PostgreSQL 数据库集簇的目录

archive/                - 存放归档的 WAL (Write-Ahead Logging) 日志文件,用于数据恢复和备份。
base/                   - 存放数据库的主要数据文件,包含每个数据库的表和索引。
conn.sh                 - 一个脚本文件,用于管理数据库连接。
contrib/                - 存放 PostgreSQL 贡献模块和扩展的目录。
current_logfiles       - 存放当前的日志文件信息。
global/                 - 存放全局数据库信息,如用户和角色。
log/                    - 存放数据库的日志文件。
pg_commit_ts/          - 存放事务提交时间戳的信息。
pg_dynshmem/           - 存放动态共享内存的信息,用于进程间通信。
pg_hba.conf            - PostgreSQL 访问控制文件,定义用户连接数据库的权限。
pg_ident.conf          - 存放标识文件,用于映射操作系统用户到 PostgreSQL 用户。
pg_logical/            - 存放逻辑复制相关的信息。
pg_multixact/          - 存放多事务信息,用于处理多事务的情况。
pg_notify/             - 存放通知信息,用于实现事件通知功能。
pg_replslot/           - 存放复制槽信息,用于逻辑复制。
pg_serial/             - 存放序列的状态信息。
pg_snapshots/          - 存放快照信息,用于事务管理。
pg_stat/               - 存放数据库统计信息的目录。
pg_stat_tmp/           - 存放临时的统计信息。
pg_subtrans/           - 存放子事务的信息。
pg_tblspc/             - 存放表空间的符号链接。
pg_twophase/           - 存放二阶段提交的事务信息。
PG_VERSION              - 存放 PostgreSQL 数据库版本信息的文件。
pg_wal/                - 存放 WAL 日志文件,确保数据的持久性和可靠性。
pg_xact/               - 存放事务状态信息的目录。
postgresql.auto.conf   - 自动生成的 PostgreSQL 配置文件。
postgresql.conf        - PostgreSQL 主配置文件,定义数据库的参数设置。
postmaster.opts        - 存放 PostgreSQL 启动时的选项配置。
postmaster.pid         - 存放 PostgreSQL 服务进程的进程 ID。
start.sh               - 启动 PostgreSQL 服务的脚本文件。
stop.sh                - 停止 PostgreSQL 服务的脚本文件。

创建和管理数据库集簇

  • 初始化集簇:

    使用 initdb 命令来初始化一个新的数据库集簇,这会创建数据目录及必要的系统文件。

initdb -D /path/to/data_directory

启动集簇:

使用 pg_ctl 命令启动数据库集簇。

pg_ctl -D /path/to/data_directory start

连接到数据库:

使用 psql 命令连接到特定数据库。

psql -d database_name

查看集簇信息:

可以使用 \l 命令在 psql 中查看当前集簇中的所有数据库。

查看表语数据库目的对应关系

postgres=# select relname,oid,relfilenode from pg_class where  relname = 'saas2';
 relname |  oid  | relfilenode 
---------+-------+-------------
 saas2   | 16465 |       16465
[root@server07 pgdata]# ls ./base/5/16465
./base/5/16465

根据表名称查出文件路径

postgres=# select pg_relation_filepath('saas2');
 pg_relation_filepath 
----------------------
 base/5/16465


[root@test19-server07 5]# ll -id 2605*
201703396 -rw------- 1 postgres postgres 16384 Aug 22 14:31 2605      //主题数据文件
201703397 -rw------- 1 postgres postgres 24576 Aug 22 14:31 2605_fsm  //空闲空间映射文件 
201705588 -rw------- 1 postgres postgres  8192 Aug 22 14:31 2605_vm   //可见性映射文件

总结

PostgreSQL 数据库集簇是一个强大的功能,允许用户在一个数据库实例中高效地管理多个数据库。这种架构提供了灵活性和扩展性,适用于各种应用场景,包括小型应用到大型企业级解决方案。通过合理的配置和管理,用户可以充分利用 PostgreSQL 的强大功能。

5dd0df0b026c79f4368e8cdf780ca811.jpeg

公众号内直接回复加群也可以,扫码加群也可以,觉得帖子写的不错,点点关注,点点赞,多多转载,请多多支持。

往期帖子汇总:

数据库维护工具:数据迁移、性能监控、数据修复的全面工具汇总

上一篇:从零开始学PostgreSQL-工具篇2:碎片回收pg_repack

从零开始学PostgreSQL-工具篇:备份与恢复

从零开始学PostgreSQL (十四):高级功能

从零开始学PostgreSQL (十三):并行查询

从零开始学PostgreSQL (十二):高效批量写入数据库

从零开始学PostgreSQL (十一):并发控制

从零开始学PostgreSQL (十):磁盘使用情况

从零开始学PostgreSQL (九):任务进度报告

从零开始学PostgreSQL (八):监控数据库动态

从零开始学PostgreSQL (七):高可用性、负载平衡和复制

从零开始学PostgreSQL (六):备份和恢复

从零开始学PostgreSQL (五):日常数据库维护任务

从零开始学PostgreSQL (四):数据库角色

从零开始学PostgreSQL (三):索引篇

从零开始学PostgreSQL (二):配置文件

从零开始学PostgreSQL (一):Centos8 RPM安装PostgreSQL16

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐