在 OpenEuler24.03 源码安装 PG16.3

在ANOLIS 23上源码安装了16.1,在OpenEuler24.03上PG16.3,安装也是一样的吗?

抱着这样的态度,我试​着去安装,如果不关闭SELINUX,还是有一个差异的,同时,发现即使是最小安装,openeuler也是安装了PG源码安装需要的主要包。

同时,以前安装,都是直接搜的baidu的安装文档,但网上的文档,不给你解释为什么要安装这个包,其实,PG官方文档写的比较全,遇到问题,也可以有相关链接,本次安装主要是参照官方文档进行,特别是SELINUX部分。好了,还是看正文吧 。

目录

1.环境

2.参考文档

3.具体安装步骤

3.1 安装必要的包

3.2 安装可选的包

3.3 建立目录

3.4 创建用户

3.5 给目录授权

3.6 下载源码

3.7 解压

3.8 Configure

3.9 编译

3.10 安装

3.11 配置环境变量

3.12 配置SELINUX,使用ROOT用户去配置             --本步骤可选

3.13 创建数据库集群

3.14 修改数据库参数

3.15 配置自动启动服务

3.16 设置内核参数

3.17 设置资源限制

3.18 关闭透明大页 --可选(建议关闭)

3.19 启停PG

3.20 验证

4.保持联系


1.环境

先来看看我们的环境:

OpenEuler 24.03 

内核:6.6.0-35

最小安装

root@openeuler2403 ~]# cat /etc/os-release
NAME=”openEuler”
VERSION=”24.03 (LTS)”
ID=”openEuler”
VERSION_ID=”24.03”
PRETTY_NAME=”openEuler 24.03 (LTS)”
ANSI_COLOR=”0;31”

[root@openeuler2403 ~]#
[root@openeuler2403 ~]# uname -r
6.6.0-35.0.0.43.oe2403.x86_64

[root@openeuler2403 ~]# yum grouplist

Available Environment Groups:
服务器
虚拟化主机
Installed Environment Groups:
最小安装
Available Groups:
容器管理
开发工具
无图形终端系统管理工具
传统 UNIX 兼容性
网络服务器
科学记数法支持
安全性工具
系统工具

2.参考文档


平时,我们习惯到网上搜安装文档,,其实,官网上已经写的比较完整,而且更可信赖。

PostgreSQL: Documentation

PostgreSQL: Documentation: 16: PostgreSQL 16.3 Documentation

3.具体安装步骤


3.1 安装必要的包

参考:PostgreSQL: Documentation: 16: 17.1. Requirements

需要的软件包如下:


make    3.81以上版本
gcc       c99以上
tar        带gzip
readline and readline-devel
zlib
zlib-devel
ICU      用于全球化支持,是 internal components for Unicode 的缩写
libicu-devel

OpenEuler最小安装后,这里主要的包都安装了,不够,可以重新安装一下:
yum -y install make gcc tar readline readline-devel zlib zlib-devel icu libicu-devel


3.2 安装可选的包


Perl            5.14以上
Python       3.2 以上
Tcl              8.4以上
Gettext
OpenSSL  1.0.1以上
MIT, OpenLDAP, and/or PAM
LZ4 ,          用于TOTAST,WAL压缩
Zstandard  1.4.0以上,用于 wal压缩
Flex and Bison 用于git
libselinux libselinux-devel    用于SELINUX

发现,MIT,Zstandard ,YUM源里没有,不过,反正也不用,没有管它。

安装命令:

yum -y install perl python tcl gettext openssl mit openldap pam lz4 zstandard flex bison libselinux libselinux-devel

3.3 建立目录

由于习惯了ORACLE式的目录结构,个人觉得比较明了,因此,借鉴了ORACLE的目录结构

PG软件放在:/u01/app/用户名/product/版本/dbhome_1

PG数据目录:/u01/app/用户名/pgdata

源码目录:     /u01/setup/source

我们这里使用postgres用户安装,pg版本为:16.3,因此如下:


mkdir /u01/app/postgres/product/16.3/dbhome_1 -p
mkdir /u01/app/postgres/pgdata -p
mkdir /u01/setup/source -p


3.4 创建用户


groupadd postgres
useradd -g postgres postgres
echo “postgres” | passwd --stdin postgres


3.5 给目录授权


chown -R postgres:postgres /u01/app/postgres 
chmod -R 775 /u01/app/postgres

3.6 下载源码

su – postgres
cd /u01/setup/source
wget https://ftp.postgresql.org/pub/source/v16.3/postgresql-16.3.tar.gz


3.7 解压

$ tar xvf postgresql-16.3.tar.gz

3.8 Configure


$ cd /u01/setup/source/postgresql-16.3


./configure —prefix=/u01/app/postgres/product/16.3/dbhome_1 --with-selinux

如果系统关闭了selinux,就不用 with-selinux


3.9 编译


make world -j 16 (含所有功能及文档,等于完整安装)

-j 加并行,相对要快一些

3.10 安装


make install-world -j 16


3.11 配置环境变量


cat >> ~/.bash_profile <<”EOF”
export PGPORT=5432
export PGDATA=/u01/app/postgres/pgdata
export PGHOME=/u01/app/postgres/product/16.3/dbhome_1
export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
export PATH=$PGHOME/bin:$PATH:.
export PGHOST=$PGDATA
export PGUSER=postgres
export PGDATABASE=postgres
export PGCLIENTENCODING=GBK
EOF

3.12 配置SELINUX,使用ROOT用户去配置             --本步骤可选


如果不想关闭SELINUX,就必须安装SELINUX 策略包

先安装selinux 策略软件包,否则,没有selinux相关包

yum install selinux-policy-devel

创建相关安全上下文

参见这个文档: SEPostgreSQL Administration - PostgreSQL wiki

   不过,这个文档写法有问题,
   ‘(./)?’ 应该为:’(/.)?’,否则,后面开启SELINUX时,一直无法正常启动PG。

   环境变量,前面已经说过:
   $PGDATA=/u01/app/postgres/pgdata 
   $PGHOME=/u01/app/postgres/product/16.3/dbhome_1

   设置上下文:

   # semanage fcontext -a -t usr_t ‘/u01/app/postgres/product/16.3/dbhome_1(/.*)?’
   # semanage fcontext -a -t bin_t ‘/u01/app/postgres/product/16.3/dbhome_1/bin(/.*)?’
   # semanage fcontext -a -t lib_t ‘/u01/app/postgres/product/16.3/dbhome_1/lib(/.*)?’
   # semanage fcontext -a -t postgresql_exec_t          ‘/u01/app/postgres/product/16.3/dbhome_1/bin/postgres’
   # semanage fcontext -a -t postgresql_exec_t ‘/u01/app/postgres/product/16.3/dbhome_1/bin/initdb’
   # semanage fcontext -a -t initrc_exec_t ‘/u01/app/postgres/product/16.3/dbhome_1/bin/pg_ctl’
/sbin/restorecon -R /u01/app/postgres/product/16.3/dbhome_1
   # semanage fcontext -a -t postgresql_db_t ‘/u01/app/postgres/pgdata(/.*)?’
   # /sbin/restorecon -R /u01/app/postgres/pgdata

 欧拉需要这个,应该是默认没有打标,执行后,重启系统生效。

 # touch /.autorelabel;
# reboot


3.13 创建数据库集群

su - postgres
$ initdb -D /u01/app/postgres/pgdata -E UTF8 --locale=zh_CN.UTF8 -U postgres

3.14 修改数据库参数


cat >> $PGDATA/postgresql.conf << “EOF”
listen_addresses = ‘*’
port=5432
unix_socket_directories=’/u01/app/postgres/pgdata’
logging_collector = on
log_directory = ‘pg_log’
log_filename = ‘postgresql-%a.log’
log_truncate_on_rotation = on
max_connections = 500
shared_buffers = 2GB
EOF

cat >> $PGDATA/pg_hba.conf << “EOF”

TYPE DATABASE USER ADDRESS METHOD
host all all 0.0.0.0/0 md5
EOF

3.15 配置自动启动服务


cat > /etc/systemd/system/pg16.service <<”EOF”
[Unit]
Description=PostgreSQL database server
Documentation=man:postgres(1)
After=network.target

[Service]
Type=forking
User=postgres
Group=postgres
Environment=PGPORT=5432
Environment=PGDATA=/u01/app/postgres/pgdata
OOMScoreAdjust=-1000
ExecStart=/u01/app/postgres/product/16.3/dbhome_1/bin/pg_ctl start -D ${PGDATA} -s -o “-p ${PGPORT}” -w -t 300
ExecStop=/u01/app/postgres/product/16.3/dbhome_1/bin/pg_ctl stop -D ${PGDATA} -s -m fast
ExecReload=/u01/app/postgres/product/16.3/dbhome_1/bin/pg_ctl reload -D ${PGDATA} -s
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=0

[Install]
WantedBy=multi-user.target
EOF

配置生效
[root@openeuler2403 ~]# systemctl daemon-reload

验证

开启随系统启动而启动

[root@openeuler2403 ~]# systemctl enable pg16

3.16 设置内核参数


cat > /etc/sysctl.conf <<”EOF”
vm.swappiness=10
vm.zone_reclaim_mode=0
fs.aio-max-nr = 1048576
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
kernel.shmmax = 8589934592
kernel.shmall = 2097152
kernel.shmmni = 4096
kernel.sem = 250 32000 250 128
EOF

kernel.sem四个数字分别是:SEMMSL,SEMMNS,SEMOPM,SEMMNI
SEMMSL:            控制每个信号量集合的最大信号数。
SEMMNS:           控制系统范围内能使用的最大信号量数。
SEMOPM:semop()函数 用来操作信号量)每次调用锁能操作的一个信号量集中的最大信号量,
SEMMNI:             内核中信号量集的最大数量。
SEMMNS=SEMMSL*SEMMNI
SEMOPM=SEMMSL,这两个参数一般设置为相同,

SEMMNl>= ceil((max connections + autovacuum max workers + 4)/16)

3.17 设置资源限制


cat >> /etc/security/limits.conf <<”EOF”

soft nofile 131072
hard nofile 131072
soft nproc 131072
hard nproc 131072
soft core unlimited
hard core unlimited
soft memlock unlimited
hard memlock unlimited
EOF


3.18 关闭透明大页 --可选(建议关闭)

# grubby —update-kernel ALL --args transparent_hugepage=never

 重启生效

这个RHEL9以上版本就使用这种方式来更新启动配置脚本

3.19 启停PG


使用POSTGRES用户去执行
su - postgres
$ pg_ctl start
$ pg_ctl status
$ pg_ctl stop

使用root 用户去执行

su - root

# systemctl start pg16

# systemctl status pg16

# systemctl stop pg16

3.20 验证


[postgres@openeuler2403 pgdata]$ psql


 

到此,数据库安装完成

4.保持联系

----------------------------------------------------------------------
如果你对数据库技术感兴趣,我们还可以在微信群:水煮数据库 进行交流,主要交流日常运维中用到的数据库相关问题,包含但不限于:ORACLE,PG,MYSQL,SQLSERVER,OB,TIDB,达梦,TDSQL,OPENGAUSS,人大金仓,GBASE等等,加我微信吧:zq24803366,备注:水煮数据库, 我拉你入群。
----------------------------------------------------------------------

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

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

相关文章

ElasticSearch学习篇15_《检索技术核心20讲》进阶篇之TopK检索

背景 学习极客实践课程《检索技术核心20讲》https://time.geekbang.org/column/article/215243&#xff0c;文档形式记录笔记。 相关问题&#xff1a; ES全文检索是如何进行相关性打分的&#xff1f;ES中计算相关性得分的时机?如何加速TopK检索&#xff1f;三种思路 精准To…

GEE:设置ui.Map.Layer上交互矢量边界填充颜色为空,只显示边界

一、目标 最近在GEE的交互功能鼓捣一些事情&#xff0c;在利用buffer功能实现了通过选点建立一个矩形后&#xff0c;需要将该矩形填充颜色设为空&#xff0c;只留边界。 然而通过正常设置layer的可视化参数并不能实现这一目的。因此只能另辟蹊径&#xff0c;改为定义矢量边界…

【JavaEE精炼宝库】 网络编程套接字——初识网络编程 | UDP数据报套接字编程

文章目录 一、网络编程基础1.1 网络编程的意义&#xff1a;1.2 网络编程的概念&#xff1a;1.3 网络编程的术语解释&#xff1a;1.4 常见的客户端服务端模型&#xff1a; 二、Socket 套接字2.1 Socket 套接字的概念&#xff1a;2.2 Socket 套接字的分类&#xff1a; 三、UDP数据…

fetchApi === 入门篇

目录 fetch 基本认知 fetch 如何使用 Response对象&#xff08;了解&#xff09; 常见属性 常见方法 fetch 配置参数 fetch发送post请求 fetch 函数封装 fetch 实战 - 图书管理案例 渲染功能 添加功能 删除数据 完整代码 fetch 基本认知 思考&#xff1a; 以前开发…

NumpyPandas:Pandas库(25%-50%)

目录 前言 一、列操作 1.修改变量列 2.筛选变量列 3.删除变量列 4.添加变量列 二、数据类型的转换 1.查看数据类型 2.将 ok的int类型转换成float类型 3.将ar的float类型转换成int类型 三、建立索引 1.建立DataFrame时建立索引 2.在读入数据时建立索引 3.指定某列或…

virtualbox ubuntu扩充磁盘大小

首先在虚拟存储管理里面修改磁盘大小 然后安装gparted sudo gparted 打开管理工具 选中要调整的区域右键选择调整区域大小 拖动上述位置就可以实现扩容。完成后点击应用 然后重启虚拟机即可。

基于深度学习技术及强大的专家团队,针对多个工业垂类场景进行算法优化的智慧城管开源了。

智慧城管视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。 基于深度学习技…

微服务的入门

带着问题进行学习&#xff1a; 1. 对服务进行拆分后&#xff0c;物理上是隔离的&#xff0c;数据上也是隔离的&#xff0c;如何进行不同服务之间进行访问呢&#xff1f; 2.前端是怎么样向后端发送请求的&#xff1f; 通过http请求&#xff0c;通过url&#xff0c;请求的…

wireshark--流量分析利器

&#x1f3bc;个人主页&#xff1a;金灰 &#x1f60e;作者简介:一名简单的大一学生;易编橙终身成长社群的嘉宾.✨ 专注网络空间安全服务,期待与您的交流分享~ 感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持&#xff01;❤️ &#x1f34a;易编橙终身成长社群&#…

传输层(port)UDP/TCP——解决怎么发,发多少,出错了怎么办

**传输层&#xff1a;**负责数据能够从发送端传输接收端. 传输层所封装的报头里一定有&#xff1a;源端口号和目的端口号的。 **端口号&#xff1a;**可以标识一台主机中的唯一一个进程&#xff08;运用程序&#xff09;&#xff0c;这样当数据传输到传输层的时候就可以通过端…

LangChain开发框架并学会对大型预训练模型进行微调(fine-tuning)

要掌握LangChain开发框架并学会对大型预训练模型进行微调&#xff08;fine-tuning&#xff09;&#xff0c;你需要理解整个过程从数据准备到最终部署的各个环节。下面是这一流程的一个概览&#xff0c;并提供了一些关键步骤和技术点&#xff1a; 1. LangChain开发框架简介 La…

Maven实战(一)- Maven安装与配置

Maven实战&#xff08;一&#xff09;- Maven安装与配置 文章目录 Maven实战&#xff08;一&#xff09;- Maven安装与配置1.下载安装包2.配置环境变量。3.安装目录分析4.设置HTTP代理5.镜像 前言&#xff1a; ​ 最近博主看完了《Maven实战》&#xff08;许晓斌著&#xff09;…

回调函数地狱及其解决方法——Promise链式调用以及async函数和await

一、什么是回调函数地狱&#xff1f; > 在回调函数一直向下嵌套回调函数&#xff0c;形成回调函数地狱 二、回调函数地狱问题&#xff1f; > 可读性差 > 异常捕获困难 > 耦合性严重 <!DOCTYPE html> <html lang"en"><head>&…

大数据时代,区块链是如何助力数据开放共享的?

在大数据时代&#xff0c;区块链技术以其独特的优势&#xff0c;为数据开放共享提供了强有力的支持。以下是区块链助力数据开放共享的几个主要方面&#xff1a; 1. 增强数据安全性与隐私保护 加密安全&#xff1a;区块链技术采用先进的加密算法&#xff0c;如国密非对称加密技…

【高中数学/指数函数/单调性】写出函数f(x)=4^x-2^x+2的单调区间 (陈永明老师您错了!)

【问题】 写出函数f(x)4^x-2^x2的单调区间 【问题来源】 《陈永明讲评数学题-高中习题归类研讨》第20页 例2&#xff0c;该书由上海科技教育出版社出版&#xff0c;是2022年1月第一版。 【陈永明老师的解答】 【用Canvas绘制的实际图线】 我有一个习惯&#xff0c;就是在理…

【优秀python算法设计】基于Python网络爬虫的今日头条新闻数据分析与热度预测模型构建的设计与实现

1 绪论 1.1 背景与意义 随着互联网的快速发展和移动互联技术的普及&#xff0c;作为新兴的资讯平台&#xff0c;今日头条成为了用户获取新闻资讯、时事热点和个性化推荐的重要渠道。大量用户在今日头条上浏览、阅读并产生热度&#xff0c;使得今日头条成为了观察舆论热点和分…

pdf格式过大怎么样变小 pdf文件过大如何缩小上传 超实用的简单方法

面对体积庞大的 PDF 文件&#xff0c;我们常常需要寻找有效的方法来缩减其大小。这不仅能够优化存储空间&#xff0c;还能提升文件的传输和打开速度。PDF文件以其稳定性和跨平台兼容性成为工作和学习中的重要文件格式。然而&#xff0c;当我们需要通过邮件发送或上传大文件时&a…

时间序列对于LLM来说并没有什么不同

基础模型推动了计算语言学和计算机视觉领域的最新进展&#xff0c;并在人工智能领域取得了巨大成功。成功的基础模型的关键思想包括&#xff1a; 海量数据&#xff1a;庞大而多样的训练数据涵盖了广泛的分布&#xff0c;使模型能够近似任何潜在的测试分布。 可转移性&#xff…

Ubuntu网络连接图标消失了,没网!!!

文章目录 前言Step1&#xff1a;停止网络管理服务Step2&#xff1a;删除网络管理状态文件Step3&#xff1a;打开网络管理 前言 本次记录的事&#xff0c;有一天心血来潮想烧录一下开发板&#xff0c;却发现自己的Ubuntu系统的网络连接图标消失了&#xff0c;也没网了&#xff…