PostgreSql-Install

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.rhkb.cn/news/313812.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

npm install 卡在still idealTree buildDeps不动

前言 再使用npm install 安装包依赖时 发现一直卡住 停留在 观察node_cache下的_logs文件 发现一直在拉取包 37 silly idealTree buildDeps 38 silly fetch manifest riophae/vue-treeselect0.4.0尝试解决 尝试设置了taobao镜像源 依然如此 获取已经设置的镜像源 确实是ta…

高级数据结构—线段树(一)

学线段树的原因是因为cf的一道题目始终想不出来怎么优化,后来知道区间查询和修改要用到线段树。。。 原题:Iva & Pav 线段树的作用 区间最值查询:可以高效地找到给定区间内的最大值、最小值等。 区间和查询:可以高效地计算…

关于MCU核心板的一些常见问题

BGA植球与焊接(多涂焊油): 【BGA芯片是真麻烦,主要是植锡珠太麻烦了,拆一次就得重新植】https://www.bilibili.com/video/BV1vW4y1w7oNvd_source3cc3c07b09206097d0d8b0aefdf07958 / NC电容一般有两种含义&#xff1…

Python爱心代码

爱心效果图: 完整代码: import random from math import sin, cos, pi, log from tkinter import *# 定义画布尺寸和颜色 CANVAS_WIDTH 640 CANVAS_HEIGHT 480 CANVAS_CENTER_X CANVAS_WIDTH / 2 CANVAS_CENTER_Y CANVAS_HEIGHT / 2 IMAGE_ENLARG…

AI容器化部署开发尝试 (一)(Pycharm连接docker,并部署django测试)

目标:使用容器化技术快速部署AI应用进行开发。 注意:从 Docker 19.03 开始,Docker 引入了对 NVIDIA GPU 的原生支持,因此若AI要调用GPU算力的话docker版本也是有要求的,后面博客测试。 当然本篇博客还没设计到GPU的调…

微服务两种方式登录

目录 1.restTemplate方式 1.1页面 1.2消费者 1.3生产者 1.4效果 2.Feign方式 2.1Service 2.2生产者 三个生产者 一个消费者,三个生产者需要用mysqlmybatis 三个不同的数据库。 页面输入用户名和密码,提交到后端消费者,消费者传到生产…

vLLM-prefix浅析(System Prompt,大模型推理加速)

原文:vLLM-prefix浅析(System Prompt,大模型推理加速) 简介 本文浅析了在大模型推理加速方面一个非常优秀的项目 vLLM 的一个新特性 Prefix。在 Prompt 中有相同前缀时可以提高吞吐量降低延迟,换句话说可以省去这部分…

【C++】:构造函数和析构函数

目录 前言一,构造函数1.1 什么是构造函数1.2 构造函数的特性1.3 总结 二,析构函数2.1 什么是析构函数2.2 析构函数的特性2.3 总结 前言 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗?并不是,任何…

JVM学习笔记(五)内存模型

目录 1、原子性 1.1 问题分析 1.2 解决方法 2、可见性 2.1 退不出的循环 2.2 解决办法 3、有序性 3.1 诡异的结果 3.2 解决办法 3.3 有序性理解 3.4 happens-before 4、CAS与原子类 4.1 CAS 4.2 乐观锁与悲观锁 4.3 原子操作类 5、synchronized 优化 5.1 轻量…

华为认证云计算前景如何

互联网/移动互联网经历了高速发展的二十年,我们有幸一起见证了华为、阿里、腾讯、百度、字节跳动、京东、滴滴、拼多多等互联网公司的崛起,让普通技术人实现逆袭拿到高薪,也让小镇做题家们有了阶层跨越的机会。 但机会都是留给有准备的人&…

记录一个hive中因没启yarn导致的spark引擎跑insert语句的报错

【背景说明】 刚在hive中配置了Spark引擎,在进行Hive on Spark测试时报错, 报错截图如下: [atguiguhadoop102 conf]$ hive which: no hbase in (/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/module/jdk1.8.0_212/bin:/opt/mod…

分享三个转换速度快、准确率高的视频转文字工具

想要直接将视频转换成文字,转换工具很重要!给大家分享三个转换速度快、准确率高的视频转文字工具,轻松完成转换。 1.网易见外 https://sight.youdao.com/ 网易家的智能转写翻译服务工作站,网页端就可以直接使用,支持视…

【threejs教程7】threejs聚光灯、摄影机灯和汽车运动效果

【图片完整效果代码位于文章末】 在上一篇文章中我们实现了汽车模型的加载,这篇文章主要讲如何让汽车看起来像在运动。同时列出聚光灯和摄像机灯光的加载方法。 查看上一篇👉【threejs教程6】threejs加载glb模型文件(小米su7)&…

Web3钱包开发获取测试币-Base Sepolia(二)

Web3钱包开发获取测试币-Base Sepolia(二) 基于上篇 Web3钱包开发获取测试币-Polygon Mumbai(一) :https://suwu150.blog.csdn.net/article/details/137949473 我们今天来说说Base Sepolia网络的添加。 一、添加Base Sepolia到钱包 什么是Base Sepolia&#xff1f…

如何在PostgreSQL中使用索引覆盖扫描提高查询性能?

文章目录 解决方案1. 创建合适的索引2. 确保查询能够使用索引覆盖扫描3. 调整查询以利用索引覆盖扫描4. 监控和调优 示例代码1. 创建索引2. 编写查询3. 检查是否使用索引覆盖扫描4. 调整索引 总结 在PostgreSQL中,索引是提高查询性能的关键工具之一。索引允许数据库…

【Hello算法】 > 第 3 关 >栈与队列

数据结构 之 数组与链表 1 栈 / 栈的常见操作、实现、应用2 队列 /队列的常见操作、实现、应用3 双向队列4 Tips ———————————————————————————————————————————————————————————- ————————————————…

LeetCode in Python 48. Rotate Image/Matrix (旋转图像/矩阵)

旋转图像/矩阵的重点是寻找旋转前后对应位置的坐标关系。 示例: 图1 旋转图像/矩阵的输入输出示意图 代码: class Solution:def rotate(self, matrix):n len(matrix)for i in range(n // 2):for j in range(i, n - 1 - i):topleft matrix[i][j]ma…

Navicat连接SQLSever报错:[08001] MicrosoftTCP Provider 远程主机强迫关闭了一个现有的连接

Navicat连接SQLSever报错:[08001] [Microsoft][SQL Server Native Client 10.0]TCP Provider: 远程主机强迫关闭了一个现有的连接 问题分析 旧版的MSSQL 如果不是最新版的,可以去这安装以下即可。 最新版的MSSQL 如果是安装最新版的MSSQL连接不上很正…

鸿蒙OpenHarmony【轻量系统 环境搭建】 (基于Hi3861开发板)

安装Hi3861开发板特有环境 除上述[安装库和工具集]和[安装编译工具]外,针对Hi3861开发板还需要安装特定的编译工具。 工具要求 表1 Hi3861 WLAN模组需要安装的编译工具 开发工具用途SCons3.0.4编译构建工具python模块:setuptools、kconfiglib、pycry…

Macs Fan Control Pro for Mac:全面优化Mac风扇控制软件

Macs Fan Control Pro for Mac是一款专为苹果电脑用户设计的风扇控制软件,旨在通过精确的风扇速度调节,全面优化Mac的散热性能,确保系统始终运行在最佳状态。 Macs Fan Control Pro for Mac中文版下载 该软件具备实时监控功能,能够…