- PostgreSQL数据库集簇是——多个数据库的集合。
初始化库集簇:INITDB –D $PGDATA来完成。(相当于oracle数据库dbca建库)
pg_ctl -d $PGDATA可以启动数据库
对象标识符(OID)来对整个数据集簇中唯一的标识数据库对象,包括:数据库、表、索引、视图、元组、类型等。
默认的端口号是5432 ,端口号可以在配置文件中进行修改
数据默认的表空间有pg_default和pg_global两个
pg_default表空间是用来存储系统目录对象、用户表、用户表index、和临时表、临时表index、内部临时表的默认空间。对应存储目录$PADATA/base/ (template0、template1和postgres数据库存放在pg_default表空间下)
pg_global表空间用来存放系统字典表,共享系统目录;对应存储目录$PADATA/global/。相当于oracle数据库的system表空间
$PG_DATA/pg_tblspc目录下有表空间的标识符16384,软链接到具体的路径
postgres=# CREATE TABLESPACE tbs1 LOCATION '/var/postgre/data1_tbs';
select * from pg_tablespace;
2.PostgreSQL集簇的布局
文件:
- pg_hba.conf 认证文件 :控制主机访问的客户端认证文件。控制哪些客户端可以访问数据库服务器。 【主机 数据库 用户 ip 认证方式】
- pg_ident.conf 控制postgresql用户名映射的文件:配置操作系统用户和数据库服务器上的用户名的映射;
- postgresql.conf 参数文件:控制postgreSQL数据库的参数,配置参数;
- PG_VERSION: 存放postgreSQL主版本号的文件
- postgresql.auto.conf :存储使用ALTER SYSTEM修改的配置参数文件(9.4以后版本)
- postmaster.opts :记录服务器上一次启动的启动命令选项
目录:
- base/ 包含数据库对应的子目录
- global/ 包含数据库相关的表(pg_database pg_control文件)
- pg_commit_ts/ 事务提交的一个时间戳数据
- pg_dynshmem (dynamic share menmory)动态共享内存子系统使用的文件
- pg_logical/ 逻辑解码的状态数据(9.4之后)
- pg_tblspc/ pg表空间目录(存放表空间的链接目录,符号目录)
- pg_wal/ WAL (write ahead log)段文件 pg_xlog而来
3.initdb演示:
生成数据库集簇
- mkdir /pgdb/data3
- initdb -D /pgdb/data3
- mkdir /pgdb/tbs01
- 改配置
- 启动,创建表空间pgtbs1
- 创建数据库
- 连接数据库
- 查看数据库
- 当前数据库的oid:select oid from pg_database where datname=current_database();
- 查看表空间:\db+
- 查看test表格:select pg_relation_filepath('test'::regclass);
create table test(id serial primary key,uname varchar(20));
CREATE TABLE
insert into test (uname) values ('mia');
insert into test (uname) values ('pg');
insert into test (uname) values ('redis');
test=# select pg_relation_filepath('test'::regclass);
pg_relation_filepath
----------------------
base/16384/16388 ---数据库oid/表的oid
(1 row)
pgtbs1
Create tablespace tbs01 location '/pgdb/tbs01’;
Create database test tablespace tbs01;
PostgreSQL集簇的布局
PostgreSQL数据集簇