【PG】Linux系统部署PostgreSQL单机数据库

news2025/1/2 3:24:28

安装方式

1 安装包方式 (Packages and Installers)

支持的操作系统包括

  • liunx
  • Macos
  • Windows
  • BSD
  • Solaris
2 源码安装 (Source code)

下载源码包

通过下载地址PostgreSQL: File Browser

可以看到有各个版本的源码目录 选择13.12的版本,源码包提供另种打包压缩方式 分别为tar.bz2和 tar.gz。这里下载postgresql-13.12.tar.gz

上传至需要安装的服务器

解压源码包

tar -zxvf postgresql-13.12.tar.gz

之后出现源码目录 postgresql-13.12,包含的文件如下 

安装所需依赖或要求

编译过程中需要的依赖包
  • GNU make版本3.80或以上 通过make --version命令查看版本
  • 需要有一个编译器, 推荐GCC
  • 默认时将自动使用GNU Readline库,它允许psql(PostgreSQL的命令行 SQL 解释器)记住你输入的每一个命令并且允许你使用箭头键来找回和编辑之前的命令
  • 需要tar来解包源代码
  • zlib压缩库,来支持 pg_dump和pg_restore中对压缩归档。
使用yum 安装上面的包

yum install -y cmake make gcc zlib gcc-c++ perl readline readline-devel zlib

可选的依赖包
  • Perl
  • Python
  • Tcl
  • 支持加密的客户端连接,则需要OpenSSL,最低的版本要求是1.0.1。
  • Kerberos、OpenLDAP和/或PAM服务的认证
空间要求
  • 大概需要近 350 MB 用于存放编译过程中的源码树和大约 40 MB 用于安装目录

安装

./configure

该脚本将运行一些测试来决定一些系统相关的变量, 并检测你的操作系统的特殊设置,并且最后将在编译树中创建一些文件以记录它找到了什么。

构建(build)

默认时所有文件都将安装到/usr/local/pgsql

make

make install

/usr/local/pgsql目录下的文件夹

设置环境变量

~/.bash_profile 在这个文件中设置只影响本用户

/etc/profile 在这个文件中设置只影响所有用户

export PATH=/usr/local/pgsql/bin:$PATH export MANPATH=/usr/local/pgsql/share/man:$MANPATH export LD_LIBRARY_PATH=/usr/local/pgsql/lib export PGPORT=5432 export LANG=en_US.UTF8 export PS1="[`whoami`@`hostname`:"'$PWD]$' export PGDATA=/home/storage/pgsql/data export PGHOME=/usr/local/pgsql

共享库

以便让运行时链接器更快地找到共享库

/sbin/ldconfig /usr/local/pgsql/lib /sbin/ldconfig -m /usr/local/pgsql/lib

平台支持

CPU

CPU 架构上工作:x86、 x86_64、IA64、PowerPC、PowerPC 64、S/390、S/390x、Sparc、Sparc 64、ARM、MIPS、MIPSEL和PA-RISC

操作系统

 Linux(所有最近的发布)、Windows(XP及以上)、 FreeBSD、OpenBSD、NetBSD、macOS、AIX、HP/UX 和 Solaris。其他类 Unix 系统可能也可以工作,但是目前没有被测试。

创建普通用户

通常使用postgres这个用户名

groupadd postgres

useradd postgres -g postgres

创建目录修改权限

mkdir -p /home/storage/pgsql/data

chown -R postgres:postgres /home/storage/pgsql/data

chown -R postgres:postgres /usr/local/pgsql

初始化

方式一

initdb -D /home/storage/pgsql/data

方式二

pg_ctl -D /home/storage/pgsql/data initdb

启动数据库

pg_ctl -D /home/storage/pgsql/data -l logfile start

停止数据库

直接管理服务器时,可以通过向 postgres 进程发送不同的信号来控制关闭的类型:

SIGTERM

这是智能关闭模式。在接收SIGTERM后, 服务器将不允许新连接,但是会让现有的会话正常结束它们的工作。仅当所有的会话终止后它才关闭。 如果服务器处在线备份模式,它将等待直到在线备份模式不再被激活。当在线备份模式被激活时, 仍然允许新的连接,但是只能是超级用户的连接(这一例外允许超级用户连接来终止在线备份模式)。 如果服务器在恢复时请求智能关闭,恢复和流复制只有在所有正常会话都终止后才停止。

SIGINT

这是快速关闭模式。服务器不再允许新的连接,并向所有现有服务器进程发送SIGTERM,让它们中断当前事务并立刻退出。然后服务器等待所有服务器进程退出并最终关闭。 如果服务处于在线备份模式,备份模式将被终止并致使备份无用。

SIGQUIT (不建议)

这是立即关闭模式。服务器将给所有子进程发送 SIGQUIT并且等待它们终止。如果有任何进程没有在 5 秒内终止,它们将被发送 SIGKILL。主服务器进程将在所有子进程退出之后立刻退出,而无需做普通的数据库关闭处理。这将导致在下一次启动时(通过重放 WAL 日志)恢复。只在紧急 时才推荐这种方式。

kill -INT `head -1 /home/storage/pgsql/data/postmaster.pid`

连接数据库

psql

服务器参数设置 或 调优

1 共享内存和信号量

默认的共享内存设置通常已经足够好了,除非您将shared_memory_type设置为sysv,即使这样, 也只适用于低默认值的旧内核版本。System V信号量不在此平台上使用。

共享内存大小设置可以通过sysctl界面更改。例如,允许 16 GB:

$ sysctl -w kernel.shmmax=17179869184 $ sysctl -w kernel.shmall=4194304

2 Linux大页面
3 资源限制

Unix类操作系统强制了许多种资源限制,这些限制可能干扰你的PostgreSQL服务器的操作。尤其重要的是对每个用户的进程数目的限制、每个进程打开文件数目的限制以及每个进程可用的内存的限制。这些限制中每个都有一个“硬”限制和一个“软”限制。实际使用的是软限制,但用户可以自己修改成最大为硬限制的数目。而硬限制只能由root用户修改

4 systemd RemoveIPC

如果正在使用systemd,则必须注意IPC资源(包括共享内存) 不会被操作系统过早删除

方式一 创建用户时使用以下方式,创建postgres为系统用户

useradd -r

adduser --system

useradd --help

-r, --system create a system account

方式二 如果用户创建不正确 或者 无法修改的情况下

修改文件 /etc/systemd/logind.conf

添加配置

RemoveIPC=no

5 Linux内存使用问题

设置为可以使用物理内存 和 交换空间(swap),可以避免在内存用尽时PG进程发生OOM

sysctl -w vm.overcommit_memory=2

某些情况中,降低内存相关的配置参数可能有所帮助,特别是shared_buffers、work_mem和hash_mem_multiplier。在其他情况中,允许太多连接到数据库服务器本身也可能导致该问题。

在很多情况下,最好减小max_connections并且转而利用外部连接池软件。

 参考

GitHub上的书籍

GitHub - faisalbasra/postgres_books

中文文档

http://postgres.cn/docs/13

一个安装博客

Linux上生产环境源码方式安装配置postgresql12_mob604757057176的技术博客_51CTO博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1068447.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WPF向Avalonia迁移(二、一些可能使用到的库)

可能使用到的一些库 1. UI库 开源项目:https://github.com/irihitech/Semi.Avalonia 如果想引用他的DataGrid样式还需要添加Semi.Avalonia.DataGrid 2. 图表库 LiveChartsCore.SkiaSharpView.Avalonia 3.SVG库 开源项目:https://github.com/wieslaw…

prometheus使用数据源的timestamp而非server的timestamp

关于timestamp指标的解释 prometheus中的指标timestamp有两个: prometheus拉取时刻的timestamp,即服务端的timestamp:time.Now();exporter的/metrics接口,除了返回metric,value,还返回timesta…

chromium线程模型(1)-普通线程实现(ui和io线程)

通过chromium 官方文档,线程和任务一节我们可以知道 ,chromium有两类线程,一类是普通线程,最典型的就是io线程和ui线程。 另一类是 线程池线程。 今天我们先分析普通线程的实现,下一篇文章分析线程池的实现。&#xff…

asp.net电影院选座系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net电影院选座系统 是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使用c#语言开发 asp.net电影院选座系统1 二、功能介…

简述CRM系统软件的作用

销售部门作为企业重要的营收部门,做好企业管理意义重大。如今市场竞争激烈,人工管理很难兼顾。不少企业借助CRM销售管理系统优化改进工作流程中各个环节存在的问题。下面小Z来简单说说CRM系统是做什么的? 一、客户档案管理 通过CRM销售管理…

使用企业订货系统后的效果|软件定制开发|APP小程序搭建

使用企业订货系统后的效果|软件定制开发|APP小程序搭建 企业订货系统是一种高效的采购管理系统,它可以帮助企业更好地管理采购流程,降低采购成本,提高采购效率。 可以帮助企业提高销售效率和降低成本的软件工具。使用该系统后,企业…

押注“AI写小说”!陈天桥加持,宜搜科技二闯港股IPO

大数据产业创新服务媒体 ——聚焦数据 改变商业 9月29日,IPO征程一波三折的宜搜科技又一次递交招股书,向港交所上市发起冲击。 2014年,宜搜科技美股上市失败,三年后挂牌新三板。2019年,宜搜科技终止挂牌,冲…

vue:权限绑定菜单(全局引入,在template内用v-if调用)

登录成功后,将返回的权限保存到缓存 sessionStorage:浏览页面期间保存,关闭浏览器后丢掉数据 在utils内index.js内定义isAuth方法 在main.js内引入,并挂载全局 在vue页面内,在template内用v-if调用

WPF向Avalonia迁移(一、一些通用迁移项目)

通用变更 WPF&#xff1a;Visibility 其他参考文档 WPF&#xff1a; <TextBlock Visibility"Visible"/><TextBlock Visibility"Collapsed"/><TextBlock Visibility"Hidden"/>Avalonia &#xff1a; <TextBlock IsVisib…

京东快递超时件查询:教你如何操作

近年来&#xff0c;随着电商的快速发展&#xff0c;物流行业也迎来了蓬勃的发展。然而&#xff0c;由于物流订单数量庞大&#xff0c;物流公司在处理这些订单时往往会遇到一些瓶颈&#xff0c;例如超时订单的筛选。为了提高物流效率&#xff0c;许多物流公司采用了智能筛选超时…

IDEA的使用(一) (IntelliJ IDEA 2022.1.3版本)

目录 1. IDEA项目结构 2. 模块的导入操作 2.1 正规操作 2.2 取巧操作 2.3 出现乱码 2.4 模块改名 3. 代码模板的使用 后缀补全&#xff08;Postfix Completion&#xff09;、实时模板&#xff08;Live Templates&#xff09;菜单里面什么介绍都有&#xff0c;可以自学&a…

华为数通方向HCIP-DataCom H12-831题库(单选题:221-240)

第221题 以下哪些项能被正则表达式^30.成功匹配? A、200 100 300 B、100 200 300 C、300 200 100 D、300 100 200 答案:CD 解析: 30.其中的“点”表示的是任何的一个数字,表示的是as-path的开头;所以以300开头的都是满足题目需求的。 第222题 以下哪些项的Community属性能…

MongoDB增删改查常用操作以及podman下载MongoDB命令

Podman下载mongodb命令 podman run -d --name mongodb2 -p 27016:27017 mongo Navicat创建连接 新建数据库 创建集合 use test db.createCollection("coll1") MongoDB查询命令 ## 条件查询 db.getCollection("coll1").find({Date: "20230924&quo…

OnPrem.LLM:一个轻量级 Python 库,用于使用私有数据运行本地大型语言模型

一、介绍 OnPrem.LLM OnPrem.LLM 是一个简单的 Python 库&#xff0c;用于使用非公开数据运行本地大型语言模型。它默认使用的 7B 参数模型&#xff0c;你也可以通过提供 use_largerTrue 使用默认的 13B 模型。你还可以提供不同模型的 URL。OnPrem.LLM 主要受到 privateGPT 项…

【SpringCloud】微服务技术栈入门5 - ElasticSearch

ElasticSearch 倒排索引 倒排索引建立&#xff1a;对文章标题进行分词&#xff0c;将每个词存入 term&#xff0c;这些词也对应一个 id 也就是文档 倒排索引检索&#xff1a;假设我们搜索华为手机 分词&#xff1a;“华为”“手机”从数据库中找到对应的两个 key&#xff0c;…

8年经验之谈 —— Web ui自动化测试框架总结!

实施过了web系统的UI自动化&#xff0c;回顾梳理下&#xff0c;想到什么写什么&#xff0c;随时补充。 首先&#xff0c;自动化测试不是手动测试的替代品&#xff0c;是比较好的补充&#xff0c;而且不是占大比重的补充。 70%的测试工作集中在底层接口测试和单元测试&#xff0…

机器人中的数值优化(二十一)—— 伴随灵敏度分析、线性方程组求解器的分类和特点、优化软件

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考&#xff0c;主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等&#xff0c;本系列文章篇数较多&#xff0c;不定期更新&#xff0c;上半部分介绍无约束优化&#xff0c;…

二、图像处理

待完善 一、图片缩放 import org.bytedeco.opencv.global.opencv_imgcodecs; import org.bytedeco.opencv.global.opencv_imgproc; import org.bytedeco.opencv.opencv_core.Mat; import org.bytedeco.opencv.opencv_core.Size;public class ImageResizer {public static voi…

LLMs 蒸馏, 量化精度, 剪枝 模型优化以用于部署 Model optimizations for deployment

现在&#xff0c;您已经了解了如何调整和对齐大型语言模型以适应您的任务&#xff0c;让我们讨论一下将模型集成到应用程序中需要考虑的事项。 在这个阶段有许多重要的问题需要问。第一组问题与您的LLM在部署中的功能有关。您需要模型生成完成的速度有多快&#xff1f;您有多…

Linux深度学习:除基本命令操作外的实用操作

Linux深度学习&#xff1a;除基本命令操作外的实用操作 软件安装systemctl软连接日期、时区IP地址、主机名网络传输下载和网络请求端口 进程管理主机状态系统资源监控磁盘信息监控网络状态监控 环境变量上传、下载压缩、解压root用户、用户、用户组管理查看、修改权限控制 软件…