避坑!手把手教你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
相关推荐
光影少年15 天前
react打包优化和配置优化都有哪些?
前端·react.js·掘金·金石计划
光影少年17 天前
Promise.all实现其中有一个接口失败其他结果正常返回,如何实现?
前端·promise·掘金·金石计划
光影少年18 天前
react16中的hooks的底层实现原理
前端·react.js·掘金·金石计划
光影少年1 个月前
vite打包优化有哪些
前端·vite·掘金·金石计划
光影少年1 个月前
webpack打包优化
webpack·掘金·金石计划·前端工程化
光影少年1 个月前
Typescript工具类型
前端·typescript·掘金·金石计划
光影少年1 个月前
Promise状态和方法都有哪些,以及实现原理
javascript·promise·掘金·金石计划
光影少年1 个月前
next.js和nuxt与普通csr区别
nuxt.js·掘金·金石计划·next.js
光影少年1 个月前
js异步解决方案以及实现原理
前端·javascript·掘金·金石计划
光影少年1 个月前
前端上传切片优化以及实现
前端·javascript·掘金·金石计划