避坑!手把手教你7种安装PG16的手艺

makefile 复制代码
作者:IT邦德
中国DBA联盟(ACDU)成员,10余年DBA工作经验
擅长主流数据Oracle、MySQL、PG、openGauss运维
备份恢复,安装迁移,性能优化、故障应急处理等

可提供技术业务:
1.DB故障处理/疑难杂症远程支援
2.Mysql/PG/Oracle/openGauss
数据库部署及数仓搭建
•••
微信:jem_db
QQ交流群:587159446
公众号:IT邦德
•••

@TOC PostgreSQL16的部署方式可以基于Linux,也可以在Window上部署,作为目前最火的关系型数据库,安装部署是第一步,本文详细介绍了PostgreSQL16的7种部署方式,并附带了避坑指南,希望带领大家开启PG的学习之路

1.安装概览

arduino 复制代码
官方文档指南
https://www.postgresql.org/docs/

2.源码安装

2.1 安装方法

bash 复制代码
1.源码包下载
官网下载安装包
https://www.postgresql.org/ftp/source/
安装包为:postgresql-16.2.tar.gz
2.创建用户
创建用户及组postgres,并对用户设置密码
3.创建目录
/pgccc/{pgdata,archive,scripts,backup,pgsql-16,soft}
chown -R postgres:postgres /pgccc
chmod -R 775 /pgccc
4.预编译
./configure --prefix=/pgccc/pgsql-16 --without-readline
5.编译及安装
make -j 4 && make install
6.初始化DB
 /pgccc/pgsql-16/bin/initdb -D /pgccc/pgdata -E UTF8 \
--locale=en_US.utf8 -U postgres
7.数据库启动
pg_ctl start

2.2 避坑

ini 复制代码
1.预编译的时候,如果缺少依赖,
如下图所示记得按照提示下载相关依赖即可
yum install libicu-devel -y
yum install zlib-devel -y
2.在Liunx安装的时候,PG16一般建议基于Liunx8,兼容性较高
3.本地yum源配置的时候,Linux8的配置方式如下:
vi rhel8-local.repo
[localREPO]
name=localhost8
baseurl=file:///mnt/cdrom/BaseOS
enable=1
gpgcheck=0

[localREPO_APP]
name=localhost8_app
baseurl=file:///mnt/cdrom/AppStream
enable=1
gpgcheck=0

3.RPM离线安装

3.1 安装

bash 复制代码
https://ftp.postgresql.org/pub/repos/yum/16/redhat/rhel-8.1-x86_64/
1.RPM包下载安装
数据库lib库
rpm -ivh postgresql16-libs-16.2-1PGDG.rhel8.x86_64.rpm
客户端安装包下载安装
rpm -ivh postgresql16-16.2-1PGDG.rhel8.x86_64.rpm
数据库主程序下载安装
rpm -ivh postgresql16-server-16.2-1PGDG.rhel8.x86_64.rpm

2.环境变量配置
su - postgres

cat >> ~/.bash_profile <<"EOF"
export LANG=en_US.UTF-8
export PS1="[\u@\h \W]\$ "
export PGPORT=5432
export PGDATA=/pgccc/pgdata
export PGHOME=/usr/pgsql-16
export PATH=$PGHOME/bin:$PATH:.
export PGUSER=postgres
export PGDATABASE=postgres
EOF

3.数据库初始化
mkdir -p /pgccc/{pgdata,archive,scripts,backup,pgsql-16,soft}
chown -R postgres:postgres /pgccc
chmod -R 775 /pgccc

su - postgres
/usr/pgsql-16/bin/initdb -U postgres -E utf8 -D /pgccc/pgdata

3.2 避坑

ini 复制代码
1.自启动管理
可以通过Linux8的systemctl的管理方式进行管理,
还可以设置开机自启动
vi /etc/systemd/system/postgresql.service

[Unit]
Description=postgresql.service  
After=network.target

[Service]
Type=forking
User=postgres      
Group=postgres
WorkingDirectory=/var/lib/pgsql
ExecStart=/usr/pgsql-16/bin/pg_ctl start -D /pgccc/pgdata
ExecReload=/usr/pgsql-16/bin/pg_ctl restart -D /pgccc/pgdata
ExecStop=/usr/pgsql-16/bin/pg_ctl stop -D /pgccc/pgdata
PrivateTmp=true

[Install]
WantedBy=multi-user.target

systemctl daemon-reload
systemctl start postgresql.service
systemctl enable postgresql.service
2.在Liunx安装的时候,PG16一般建议基于Liunx8,兼容性较高

4.YUM在线安装

4.1 安装

bash 复制代码
1 安装YUM依赖
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo

yum install -y cmake make gcc zlib gcc-c++ perl readline readline-devel
yum install -y zlib-devel perl python36 tcl openssl ncurses-devel openldap pam
yum install -y zlib libicu

2.配置PG YUM源
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

3.确认版本
dnf update
yum repolist all | grep pgdg
yum repolist enabled | grep pgdg

4.安装PG
yum install -y postgresql16 postgresql16-server

5.环境变量
--root下操作
echo "export PATH=/usr/pgsql-16/bin:$PATH" >> /etc/profile

6.初始化PG
/usr/pgsql-16/bin/postgresql-16-setup initdb

7.启动PG
systemctl restart postgresql-16   --重启
systemctl status postgresql-16  --查看状态

4.2 避坑

sql 复制代码
1.网络获取PG YUM源的时候,
会很慢记得如下命令更新即可

dnf update

2.安装的时候会缺少依赖,如下图所示
离线安装依赖包libzstd,百度下载即可
rpm -ivh libzstd-1.4.4-1.el8.x86_64.rpm
3.在Liunx安装的时候,PG16一般建议基于Liunx8,兼容性较高

5.docker安装

5.1 安装

ini 复制代码
1 拉取源
https://hub.docker.com/postgres
[root@centos7 ~]# docker pull postgres:16.2

2.容器创建
创建容器的时候,如果没有镜像直接下载
##pg16版本
docker run --name jempg14 -h jempg16 -d \
-p 54329:5432 -e POSTGRES_PASSWORD=jem \
-e TZ=Asia/Shanghai postgres:16.2

3.启动容器
docker restart jempg16

5.2 避坑

sql 复制代码
1.首先需要安装docker容器才可以
2.配置文件可以在宿主机配置好,然后拷贝到容器
#白名单配置
cat << EOF > /tmp/pg_hba.conf
# TYPE  DATABASE    USER    ADDRESS       METHOD
local     all       all                    trust
host      all       all   127.0.0.1/32     trust
host      all       all    0.0.0.0/0        md5
host   replication  all    0.0.0.0/0        md5
local  replication  all                    trust
EOF
--拷贝至容器
docker cp /tmp/pg_hba.conf \
jempg16:/var/lib/postgresql/data/pg_hba.conf

6.Windows安装

6.1 Windows迷你安装

arduino 复制代码
迷你包下载
https://www.enterprisedb.com/downloads/postgres-postgresql-downloads  

6.2 二进制安装

objectivec 复制代码
二进制包下载
https://www.enterprisedb.com/download-postgresql-binaries
注册服务
CMD注册PostgreSQL系统服务命令:
pg_ctl register -N PostgreSQL -D C:\postgresql-14.9-1-windows-x64-binaries\pgsql\data
相关推荐
做前端的娜娜子17 天前
Docker 常用命令全梳理:从镜像拉取到容器编排
docker·容器·掘金·金石计划
做前端的娜娜子19 天前
async/await 错误处理:try...catch vs .catch() 完全指南
前端·面试·掘金·金石计划
做前端的娜娜子22 天前
文本切片与召回(Chunk、Overlap 到混合检索)学习笔记
langchain·openai·掘金·金石计划
做前端的娜娜子22 天前
#浏览器存储方案:localStorage、sessionStorage 与 Cookie
前端·面试·掘金·金石计划
光影少年22 天前
react navite性能优化 & 常见坑
前端·react native·掘金·金石计划
做前端的娜娜子1 个月前
文档加载工程:多格式数据接入与 Document 标准化
langchain·ai编程·掘金·金石计划
做前端的娜娜子1 个月前
Embedding 向量模型:从语义表示到相似度计算
langchain·openai·掘金·金石计划
做前端的娜娜子1 个月前
第二个 AI 调用——invoke 阻塞式与 stream 流式生成
人工智能·llm·掘金·金石计划
做前端的娜娜子1 个月前
第一个AI调用——TypeScript 工程初始化与配置管理(实战跟练)
langchain·openai·掘金·金石计划
做前端的娜娜子1 个月前
什么是浅拷贝(Shallow Copy)和深拷贝(Deep Copy)?如何手动实现一个深拷贝函数
javascript·面试·掘金·金石计划