PostgreSql-Install

server/2024/9/22 22:49:45/

PostgreSql源码安装

  • 一、源代码下载
  • 二、操作系统配置
  • 三、编译安装
  • 四、启动数据库
  • 五、相关命令

PostgreSQL是一个强大的 开源对象关系数据库系统,它使用并扩展了SQL语言,并结合了许多功能,可以安全地存储和扩展最复杂的数据工作负载。

一、源代码下载

  1. PostgreSql官方网址,进入Download页面,此处选择的是下边的File Browser(文件浏览)进入下载页面后选择Source进行源码选择对应版本进行下载。[此处选择v14.9版本]
    在这里插入图片描述

    此处选择 bz2 or gz 为后缀的安装包进行下载,任选一个即可[此处选择gz压缩包]

  2. 下载到本地操作系统的任意位置,之后使用SFTP上传到Linux服务器即可。
    在这里插入图片描述

二、操作系统配置

  1. 管理用户的创建
    root根用户权限较大,不适合管理数据库,此处建议非root用户管理数据库,因此可以创建单独用户和组进行区分管理。
groupadd postgres 添加组
useradd -g postgres postgres  创建用户并划分组
passwd postgres 设置用户密码
  1. 安装依赖包
yum groupinstall -y "Development Tools" "Legacy UNIX Compatibility"

在这里插入图片描述

groupinstall: yum 命令,用于安装指定的软件包组。

“Development Tools”: 软件包组名称,通常包含软件开发的工具和库,比如编译器、调试器等。

“Legacy UNIX Compatibility”: 软件包组的名称,包含用于提供与传统 UNIX 系统兼容性的工具和库。

yum install -y bison flex readline* zlib-devel gcc* gmake

此处安装依赖可能会报错,原因是镜像中找不到对应的依赖,我这里把原来的各种国内源镜像替换回默认国外镜像后执行yum clean all & yum makecache后重新安装就没问题了。
在这里插入图片描述

  1. 创建软件安装目录和数据存储目录
mkdir -p /usr/local/pg12
mkdir -p /pgdata/12/data
chown -R postgres. /pgdata
chown -R postgres. /usr/local/pg12
chmod 700 /pgdata/12/data -R

此处的postgres对应的是用户名,文件夹无法创建的可以使用root用户权限sudo进行创建。

在这里插入图片描述
4. 操作系统参数设置

说在前边,个人使用时可以不必设置这些参数。

pg和oracle类似需要调一些内核参数,因为是多进程,对于内核参数的要求较多;

sudo vim /etc/sysctl.conf kernel.shmmax = 68719476736 共享内存段的最大值,单位是字节。 64GB
kernel.shmall = 4294967296 系统中所有共享内存段的总共享内存页数 大约是 16TB
kernel.shmmni = 4096 系统中最大的共享内存段数目。
kernel.sem = 50100 64128000 50100 1280 信号量的值,格式为 semmsl semmns semopm semmni
fs.file-max = 7672460 系统中最大文件句柄数。
net.ipv4.ip_local_port_range = 9000 65000 系统分配给本地 TCP/UDP 端口的范围。
net.core.rmem_default = 1048576 接收套接字缓冲区的默认大小。
net.core.rmem_max = 4194304 接收套接字缓冲区的最大大小。
net.core.wmem_default = 262144 发送套接字缓冲区的默认大小。
net.core.wmem_max = 1048576 发送套接字缓冲区的最大大小。

在这里插入图片描述

这些参数可以根据实际情况进行修改!

限制参数修改:

该文件用于设置用户的资源限制。在这里,针对所有用户设置了文件描述符数量、进程数量、栈大小和内存锁定等限制。

sudo vim /etc/security/limits.conf* soft   nofile    131072 文件描述符的软限制
* hard   nofile    131072 文件描述符的硬限制
* soft   nproc    131072 进程数量的软限制
* hard   nproc    131072 进程数量的硬限制
* soft   stack    unlimited 栈大小的软限制
* hard   stack   unlimited 栈大小的硬限制
* hard   memlock    50000000 内存锁定的硬限制
* soft   memlock    50000000 内存锁定的软限制

软限制是指进程可以自由地增加或减少的资源限制。当进程达到软限制时,系统会向进程发送一个警告信号,但是进程仍然可以继续使用更多的资源,直到达到硬限制。

三、编译安装

可以提前创建文件夹指定位置安装(本文在/opt/module/postgresql目录):

  1. 解压缩到指定目录
tar -zxvf postgresql-14.9.tar.gz -C /opt/module
  1. 进入解压的指定目录下执行如下命令
./configure --prefix=/usr/local/pg12 --with-pgport=5432
参数名含义
prefix软件目录也就是安装目录
with-perl编译时添加该参数才能够使用 perl 语法的 PL/Perl 过程语言写自定义函数,需要提前安装好相关的 perl 开发包:libperl-dev
with-python编译时添加该参数才能够使用 python 语法的 PL/Perl 过程语言写自定义函数,需要提前安装好相关的 python 开发包:python-dev
with-blocksize & with-wal-blocksize默认情况下 PG 数据库的数据页大小为 8KB,若数据库用来做数仓业务,可在编译时将数据页进行调整,以提高磁盘 IO
  1. 编译安装
#全部可用功能编译
gmake world
#把所有编译好的进行安装(建目录+拷贝)
gmake install -world

在这里插入图片描述
4. 配置环境变量

su postgres
cd ~
vim .bash_profileexport PGDATA=/pgdata/12/data
export LANG=en_US.utf8
export PGHOME=/usr/local/pg12
export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
export DATE=`date +"%Y%m%d%H%M"`
export PATH=$PGHOME/bin:$PATH:.
export MANPATH=$PGHOME/share/man:$MANPATH
export PGUSER=postgressource .bash_profile

此处主要为配置环境变量,不一定需要将修改存放到bash_profile中,存放到任意一个shell可加载的环境变量文件中即可。

注意最后的PGUSER为我们定义的用户

能成功显示版本信息即是配置成功。
在这里插入图片描述
5. 简易初始化数据

initdb -D /pgdata/12/data   此处为前边创建的数据目录

在这里插入图片描述

四、启动数据库

1 创建启动日志/pgdata/pglog/logs/start.log (可以自定义)
在这里插入图片描述
2 启动数据库服务,并使用日志文件

pg_ctl -D /pgdata/12/data/ -l /pgdata/pglog/logs/start.log start

在这里插入图片描述

3 数据库client
第一次安装仅允许本地socket连接,一般socket再/tmp目录下,是个隐藏文件,直接输入psql,输入密码即可进入命令行,默认进入系统postgres这个库中;

4 参数修改
PostgreSQL 数据目录中,会自动生成 pg_hba.conf 文件,该文件是一个黑名单访问控制文件,可以控制允许哪些 IP 地址的机器访问数据库。默认,不允许远程访问数据,所以安装完成后需要配置下。

su postgres
cd $PGDATA
vim pg_hba.conf 

在这里插入图片描述
如果允许任何用户远程连接数据库,连接时需要提供密码,在最后一行添加

host    all             all             0/0                     md5

此外由于默认只监听本地,还需要配置linstener才能监听到,在数据目录中的 postgresql.cnf 中,可以找到如下内容:
在这里插入图片描述
其中,参数 listen_addresses 表示监听的 IP 地址,默认是在 localhost/127.0.0.1 处监听,这样会导致远程主机无法访问数据库,如果需要远程访问,需要将其设置为实际网络地址,设置为 * 表示监听所有地址,该参数修改重启生效。

配置完之后便可开启远程连接

在这里插入图片描述

五、相关命令

  • 查看版本信息: select version();
  • 重启数据库服务: pg_ctl restart -mf
  • 在这里插入图片描述

http://www.ppmy.cn/server/3313.html

相关文章

小程序AI智能名片S2B2C商城系统:颠覆传统,引领门店私域流量狂潮,打造线上赚钱新神话!

随着互联网电商的迅猛发展,消费者到店频次逐渐降低,线下门店的流量日渐式微,迫使门店不得不更多地依赖线上平台。然而,过度依赖线上平台往往意味着被其深度捆绑,门店的自主权和利润空间受到严重挤压。若门店未能掌握流…

股票战法课程之主力的痕迹

文章目录 1. 主力的操作痕迹2. 主力的建仓2.1 建仓的三种方式2.2 建仓的五个特点2.3 建仓的迹象2.4 建仓的成交量特征 1. 主力的操作痕迹 序号痕迹原因1不跟随大盘节奏筹码都在主力手中2突发利空消息,股价不跌反涨主力被套,不希望散户抛盘3很小的成交量…

在Ubuntu中如何查看NASM -f选项支持的输出格式

2024年4月19日,周五下午 用下面这条指令就可以了: nasm -hf

C语言 | Leetcode C语言题解之第40题组合总和II

题目: 题解: int** ans; int* ansColumnSizes; int ansSize;int* sequence; int sequenceSize;int** freq; int freqSize;void dfs(int pos, int rest) {if (rest 0) {int* tmp malloc(sizeof(int) * sequenceSize);memcpy(tmp, sequence, sizeof(int…

【Spring Cloud】服务容错中间件Sentinel入门

文章目录 什么是 SentinelSentinel 具有以下特征:Sentinel分为两个部分: 安装 Sentinel 控制台下载jar包,解压到文件夹启动控制台访问了解控制台的使用原理 微服务集成 Sentinel添加依赖增加配置测试用例编写启动程序 实现接口限流总结 欢迎来到阿Q社区 …

SpringBoot使用maven指定依赖包的版本

目录 1. 解决示例2. 完整pom示例 前言:我们在使用A依赖的时候,这个依赖有引入了第三方B依赖,这时候我想指定B依赖的版本号 1. 解决示例 我想将 mysql、logback、tomcat 的版本升级到指定版本 只需在 pom.xml 文件的 properties 里面添加如下…

Node.js 基础学习

文章目录 1. Node.js1.1 是什么?1.2 作用 2. 命令行工具2.1 命令的结构2.2 常用命令 3. Node.js 注意点3.1 Node.js 中不能使用DOM 和BOM 的API3.2 Node.js 中顶级对象叫做global 4. Buffer4.1 Buffer 特点4.2 Buffer 创建方式4.3 Buffer 操作与注意点 5. 计算机基础…

day02-Gateway(网关)

文章目录 Gateway网关Gateway介绍网关搭建路由断言工厂路由过滤器全局过滤器(自定义过滤器)过滤器执行顺序跨域问题 Gateway网关 Gateway介绍 网关搭建 路由断言工厂 路由过滤器 全局过滤器(自定义过滤器) package cn.itcast.gat…