PostgreSQL 数据库集簇(Database Cluster)是指一个或多个数据库实例的集合,这些数据库实例共享相同的数据库系统文件和配置。这种设计允许在同一个 PostgreSQL 服务器上管理多个数据库,而每个数据库又可以独立地运行和存储数据。
PostgreSQL 数据库集簇的主要特点
1. 多数据库管理:
2. 共享系统资源:
3. 数据目录:
4. 配置和管理:
5. 高可用性和扩展性:
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 -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 的强大功能