当前位置: 首页 > news >正文

安装PostgresSQL

目录

安装postgressql所需的依赖环境

编译安装

解压源码包

切换目录

--prefix指定安装目录

编译以及安装

配置环境创建用户

创建数据存储目录

更改数据存储目录的归属用户

配置环境变量

登录数据库

Dnf安装

安装postgresql

初始化数据库

登录数据库

postgresql结构

pG的逻辑结构

pG的物理结构

安装目录里的基本内容如下

数据库目录结构

文件和目录相关作用描述

数据库有两个基础的对象一个是oid,一个是表空间

base的物理布局设计

表空间跟数据库的关系


安装postgressql所需的依赖环境

[root@localhost ^]#yum -y install gcc gcc-* make libicu libicu-devel readline-devel zlib zlib-devel

编译安装

解压源码包

[root@localhost~]# tar zxvf postgresql-16.3.tar.gz

切换目录

[root@localhost~]#cd postgresql-16.3

--prefix指定安装目录

[root@localhost postgresql-16.3~]#./configure --prefix=/usr/1ocal/pgsql

编译以及安装

[root@localhost postgresql-16.3]#make & make install

配置环境创建用户

[root@localhost^]#adduser postgres

创建数据存储目录

[root@localhost~]#mkdir /usr/local/pgsql/data

更改数据存储目录的归属用户

[root@localhost]#chown postgres /usr/local/pgsql/data

配置环境变量

[root@localhost ^]# vim /etc/profile
export PATH=$PATH:/usr/local/pgsql/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pgsql/lib

                刷新环境变量

[root@localhost# source /etc/profile

登录数据库

不要使用root登录,切换到postgres用户

[root@localhost ^]# su - postgres
[postgres@localhost]$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data/
[postgres@localhost]$ /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data/ -l logfile start
[postgres@localhost]$ /usr/local/pgsql/bin/psql

Dnf安装

安装postgresql

[root@localhost]# dnf install -y postgresql-server

初始化数据库

[root@localhost ^]# postgresql-setup --initdb
* Initializing database in '/var/lib/pgsql/data
* Initialized, logs are in /var/lib/pgsql/initdb_postgresql.1Jog

              不要使用root用户登录,使用postgres用户 

登录数据库

[root@bogon]# postgres

 pg_ctl start   然后再重启一下就能进去数据库了

pG的逻辑结构

PG采用了多层逻辑结构:第一层为实例,第二层为数据库(每个实例下可有
多个相互独立的数据库),第三层为Schema(每个数据库下包含多个Schema)
每个Schema下可以创建表、视图、索引、函数等数据库对象。

 >Database cluster(数据库集):由postgresql server管理的数据库的
集合,下面由多个database组成。一个数据库集簇可以包含多个Database、多
个User,每个Database以及Database中的所有对象都有它们的所有者:User。
Database数据库:Postgres默认数据库、Template0最精简模板、Templatel
默认模板:数据库本身也是数据库对象,并且在逻辑上彼此分离。存储schema的
一个逻辑空间,对应在物理层面上也是一个目录。Schema:
一个数据库可以有多个User用户,多个Schnema模式,默认创建一
个数据库会存储在默认表空间,它包含一个Public名称的Schema模式(拷贝自
Templatel模板)。它可隔离多个用户之间相同名称的对象。一个数据库可以有
多个Schema模式,他们互不相关互相隔离。实际存储数据库对象的逻辑空间->
逻辑上的对象编号,schema是依附于数据库而存在的。User用户:postgres用户是默认创建的超级管理员;每个数据库都有一个
OWNER用户,每个用户可以OWNER多个数据库。
数据库对象:这里包含了table,index,view,序列,函数等,数据最终存储
在表中。表的组成表由多个page[block]组成)一个page包含(页头信息空
闲空间Tuple),实际存储数据的区域->对应到物理层面上就是文件-->page
构成
tablespace:存储数据库的一个逻辑空间,可以存放不同的数据库->对应
在物理层面上是一个目录
OID:所有数据库对象都有各自的oid(objectidentifiers),oiid是一个无符
号的四字节整数,相关对象的oid都存放在相关的systemcatalog表中,比如
数据库的oid和表的oid分别存放在pg_database,pg_class表中。从大小排列databasecluster-->databases-->schemia-->objects
Tablespace是数据最大的存储空间,Database是构成表空间的存储单元,
pages是PostgreSQL数据库中最小的I0单元

postgresql结构

pG的物理结构

数据库的文件默认保存在initdb时创建的数据目录中。在E数据目录中有很
多类型、功能不同的目录和文件,除了数据文件之外,还有参数文件、控制文件、
数据库运行日志及预写日志等。本质上都是PG的相关一些文件

安装目录里的基本内容如下

[postgres@localhost ^]$ which psql
/usr/local/pgsql/bin/psql
[postgres@localhost ^]$ cd /usr/local/pgsq]
[postgres@localhost pgsql]$ ll

                各个目录及用途

bin:二进制可执行文件,是PG数据库的所有相关命令所在,为方便使用需
设置到环境变量中lib:动态库目录,PostgreSQL运行所需要的动态库都在正此目录下
share:放有文档和配置模板文件,一些拓展插件的SQL文件在此目录下的extension 中
data:目录是数据库集群的物理存储核心,包含用户数据、元数据和配置文
件include:目录则提供编译扩展和客户端程序所需的C语言头文件。

数据库目录结构

文件和目录相关作用描述

filesdescription
PG_VERSION包含postgresql主版本号的文件
pg_hba.conf控制postgresql客户端验证的文件控制PG客户端认证文件主机数据库用户ip地址
认证方式
pg_ident.conf控制postgresql用户名映射的文件,配置操作系统用户和数据库服务器上的用户映射
postgresql.conf配置参数文件
postgresql.auto.conf用于存储在ALTER SYSTEM(版本9.4或更高版本)中设置的配置参数的文件
postmaster.opts记录服务端上一次启动的命令行选项
subdirectoriesdescription
base/包含每个数据库子目录的子目录
global/包含群集范围表的子目录,例如pg_database和pg_control
pg_commit_ts/包含事务提交时间戳数据的子目录。9.5版本以后
pg_clog/ (Version 9.6 or earlier)包含事务提交状态数据的子目录。它在版本10中重命名为pg_xact.CLOG将在5.4童节
中详解
pg_dynshmem/包含动态共享内存子系统使用的文件的子目录。9.4版本以后
pg_logical/包含逻辑解码的状态数据的子目录。9.4版本以后
pg_multixact包含多事务状态数据的子目录(用于shared row locks)
pg_notify/包含LISTEN/NOTIFY状态数据的子目录
pg_repslot/包含复制槽数据的子目录(9.1版本以后)
pg serial/包含有关已提交的序列化事务(9.1版本以后)信息的子目录
pg_snapshots/包含导出快照的子目录(9.2版本以后),PostgreSQL的函数pg_expeort_snapshot
在此子目录中创建快照信息文件
pg_stat/包含统计子系统永久文件的子目录
pg_stat_tmp/包含统计子系统临时文件的子目录
pg_subtrans/包含子事物状态数据的子目录
pg_tblspc/表空间符号链接目录
pg_twophase/包含prepare事务的状态文件
pg_wal/ (Version 10 or later)包含WAL
(WriteAhead Logging)段文件的子目录。在版本10中从pg_xlog重命名
而来.
pg_xact/ (Version 10 o r later)包含事务提交状态数据的子目录。在版本10中从pg_clog重命名而来.CLOG将在5.4章
节中详解
pg_xlog/ (Version 9.6 or earlier)包含WAL(WriteAhead Logging)段文件的子目录。在版本10中重命名为pg

数据库有两个基础的对象一个是oid,一个是表空间

0ID(ObjectIdentifier)是数据库对象的唯一标识符。
表空间实际上是文件系统中的一个位置链接,即一个目录录,它是一个逻辑上
的概念,目录是它的物理存在方式。数据库中创建的对象(表、索引、数据库对
象)都保存在表空间中。postgresql初始化完成后,会有两个默认的表空间,
一个是pg_default,如果用户建表时没有指定表空间,所有建的表都会放在
pg_default中,另一个是pg_global,存放的是整个实例数故据库所共享的系统表。

base的物理布局设计

每个数据库都会在$PGDATA/base下面生成一个子目录

[root@localhost base]# 1s /usr/local/pgsql/data/base/
postgres=# select datname,oid from pg_database;

表空间跟数据库的关系

在0racle数据库中;一个表空间只属于一个数据库使用;而一个数据库可
以拥有多个表空间。属于"一对多"的关系
在PostgreSQL集群中;一个表空间可以让多个数据库使用;而一个数据库
可以使用多个表空间。属于"多对多"的关系。

系统自带表空间:
表空间pg_default是用来存储系统目录对象、用户表、用户表index、和临时
表、临时表index、内部临时表的默认空间。对应存储日录SPADATA/base/
表空间pg_global用来存放系统字典表;对应存储目录$PADATA/global/

相关文章:

  • 在 Kotlin 中,什么是内联函数?有什么作用?
  • 微软的 Windows Linux 子系统现已开源
  • 基于R语言的空间异质性数据分析技术
  • Django基础(二)Django 项目基础操作
  • 【缺陷】GaN和AlN中的掺杂特性
  • Spring Cloud Gateway深度解析:原理、架构与生产实践
  • 如何使用MATLAB NLP工具箱进行文本聚类
  • 使用SQLite Expert个人版VACUUM功能修复数据库
  • 国标GB28181视频EasyGBS视频监控平台搭建城市交通道路可视化管理/道路视频巡检/应急监控指挥
  • [Java实战]Spring Boot整合Sentinel:流量控制与熔断降级实战(二十九)
  • 音频应用的MediaSession冲突
  • 畅游Diffusion数字人(30):情绪化数字人视频生成
  • 若依项目集成sentinel、seata和shardingSphere
  • arcgispro双击打开没反应怎么办
  • 【华为OD- B卷 - 书籍叠放 200分(python、java、c、c++、js)】
  • 芯片分享之AD976性能介绍
  • CentOS Stream安装MinIO教程
  • 《探索具身智能机器人视觉-运动映射模型的创新训练路径》
  • Liquid Wire 柔性应变传感器:金属凝胶导体 | 仿生肌肉长度监测 | 高精度动作控制
  • 医学影像辅助诊断系统开发教程-基于tensorflow实现
  • 虎牙传奇杯亮相ACL,创新思维也是电竞赛事的生命力
  • 中公教育:现阶段在全力解决学员退费问题,部分地区历史退费已逐步出清
  • 特朗普亲家有了新工作:美国驻法大使
  • 牛市早报|年内首次存款利率下调启动,5月LPR今公布
  • 商务部就美国商务部调整芯片出口管制有关表述答记者问
  • 小米法务部:犯罪团伙操纵近万账号诋毁小米,该起黑公关案告破