当前位置:   article > 正文

Postgresql 13 安装_postgresql13

postgresql13

一、概述

本文档介绍 Linux 平台 PostgreSQL 的两种安装方式,rmp 安装和源码安装。

二、rpm 安装

rpm 安装包是提前编译好的,所以安装过程较快,但其路径也是固定的,不够灵活。

2.1 操作系统环境

RHEL/CentOS 7-x86_64
  • 1

2.2 安装包

PG13.6 rpm 安装包下载地址

1.postgresql13-13.6-1PGDG.rhel7.x86_64.rpm
2.postgresql13-contrib-13.6-1PGDG.rhel7.x86_64.rpm
3.postgresql13-libs-13.6-1PGDG.rhel7.x86_64.rpm
4.postgresql13-server-13.6-1PGDG.rhel7.x86_64.rpm
  • 1
  • 2
  • 3
  • 4

安装包描述

  • 1.PostgreSQL 客户端程序包。如果你想在本地或远程 PostgreSQL 服务器上操作 PostgreSQL 数据库,你需要这个包。如果要安装 postgresql13-server 包,也需要安装此包。
  • 2.PostgreSQL 扩展包。包含了 PostgreSQL 发行版中包含的各种扩展模块。
  • 3.共享 lib 库包。客户端程序或接口连入数据库,或使用其他 PostgreSQL lib库,需要安装此包。
  • 4.PostgreSQL 服务端安装包。包包含创建和运行 PostgreSQL 服务器所需的程序,这将允许您创建和维护 PostgreSQL 数据库。

2.3 安装步骤

1)关闭SELinux

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
setenforce 0
cat /etc/selinux/config | grep SELINUX=disabled
getenforce
  • 1
  • 2
  • 3
  • 4

2)防火墙配置

--关闭防火墙
systemctl status firewalld.service
systemctl stop firewalld.service
systemctl disable firewalld.service

--添加数据库端口号(防火墙不可关闭时)
firewall-cmd --add-port=5432/tcp
firewall-cmd --permanent --add-port=5432/tcp
firewall-cmd --reload
firewall-cmd --list-ports  | grep 5432
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3)参数限制配置

vi /etc/security/limits.conf

#for pg13
postgres soft  core unlimited
postgres hard  nproc unlimited
postgres soft  nproc unlimited
postgres hard  memlock unlimited
postgres hard  nofile 1024000
postgres soft  memlock unlimited
postgres soft  nofile 1024000
postgres hard  stack  65536
postgres soft  stack  65536
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

4)时区检查配置

--检查时区
timedatectl    
--修改时区为上海
timedatectl set-timezone Asia/Shanghai
--修改时区为香港
timedatectl set-timezone Asia/Hong_Kong
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

5)创建系统用户

groupdel postgres
userdel postgres
groupadd postgres
useradd -g postgres postgres
passwd postgres
  • 1
  • 2
  • 3
  • 4
  • 5

6)创建数据目录

mkdir /data/pg13/{dbbak,archive} -p
chown postgres:postgres /data -R
  • 1
  • 2

7)安装软件

rpm -ivh postgresql13-*
  • 1

8)添加环境变量

su - postgres

vi /home/postgres/.bash_profile

export PGHOME=/usr/pgsql-13
export PGDATA=/data/pg13/data
export PATH=$PGHOME/bin:$PATH:$HOME/bin
export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
export PATH=/usr/pgsql-13/bin:$PATH

source /home/postgres/.bash_profile
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

9)初始化数据库

initdb -A scram-sha-256 -W
ll /data/pg13/data
  • 1
  • 2

10)启动数据库

pg_ctl start
pg_ctl status
  • 1
  • 2

11)安装完成后的参数配置

psql 连入数据库配置

alter system set listen_addresses = '*';
alter system set max_connections = 2000;
alter system set superuser_reserved_connections = 10;
alter system set shared_buffers = '16GB';         #推荐物理内存1/4
alter system set effective_cache_size = '32GB';   #推荐物理内存的1/2
alter system set maintenance_work_mem = '2GB';
alter system set autovacuum_work_mem = '1GB';
alter system set effective_io_concurrency = 0;
alter system set checkpoint_completion_target = 0.8;
alter system set checkpoint_timeout = '30min';
alter system set log_destination = 'csvlog';
alter system set logging_collector = on;
alter system set log_directory = 'logs';
alter system set log_filename = 'postgresql-%a.log'; 
alter system set log_rotation_age = '1d';
alter system set log_rotation_size = 0;
alter system set log_truncate_on_rotation = on;
alter system set log_statement = 'ddl';
alter system set log_connections = on;
alter system set log_disconnections = on;
alter system set log_min_duration_statement = '5s';
alter system set log_checkpoints = on;
alter system set log_error_verbosity = verbose;        
alter system set log_line_prefix = '%m [%p] %q %u %d %a %r %e '; 
alter system set min_wal_size ='8GB';         #推荐 max_wal_size 的 1/4
alter system set max_wal_size ='32GB';        #推荐 shared_buffers 的 2 倍
alter system set archive_mode = on;
alter system set archive_command = 'cp %p /data/pg13/archive/%f;find /data/pg13/archive/ -type f -mtime +7 -exec rm -f {} \;';
alter system set archive_timeout = '30min';
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

12)修改 pg_hba.conf

vi $PGDATA/pg_hba.conf

host    all             all             0.0.0.0/0               scram-sha-256

pg_ctl restart
  • 1
  • 2
  • 3
  • 4
  • 5

13)设置开机自启动

root用户下配置
方式一:脚本

vi /etc/rc.d/rc.local

su - postgres -c '/usr/pgsql-13/bin/pg_ctl start -D /data/pg13/data/'

chmod +x /etc/rc.d/rc.local
  • 1
  • 2
  • 3
  • 4
  • 5

方式二:服务

vi /usr/lib/systemd/system/postgresql-13.service

Environment=PGDATA=/data/pg13/data/


systemctl enable postgresql-13.service
systemctl is-enabled postgresql-13.service
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

14)安装配置说明

安装完成后,可使用 pg_config 命令查看默认路径,默认的编译参数等信息。

[postgres@localhost ~]$ pg_config
BINDIR = /usr/pgsql-13/bin
DOCDIR = /usr/pgsql-13/doc
HTMLDIR = /usr/pgsql-13/doc/html
INCLUDEDIR = /usr/pgsql-13/include
PKGINCLUDEDIR = /usr/pgsql-13/include
INCLUDEDIR-SERVER = /usr/pgsql-13/include/server
LIBDIR = /usr/pgsql-13/lib
PKGLIBDIR = /usr/pgsql-13/lib
LOCALEDIR = /usr/pgsql-13/share/locale
MANDIR = /usr/pgsql-13/share/man
SHAREDIR = /usr/pgsql-13/share
SYSCONFDIR = /etc/sysconfig/pgsql
PGXS = /usr/pgsql-13/lib/pgxs/src/makefiles/pgxs.mk
CONFIGURE =  '--enable-rpath' '--prefix=/usr/pgsql-13' '--includedir=/usr/pgsql-13/include' '--mandir=/usr/pgsql-13/share/man' '--datadir=/usr/pgsql-13/share' '--libdir=/usr/pgsql-13/lib' '--with-icu' '--with-llvm' '--with-perl' '--with-python' '--with-tcl' '--with-tclconfig=/usr/lib64' '--with-openssl' '--with-pam' '--with-gssapi' '--with-includes=/usr/include' '--with-libraries=/usr/lib64' '--enable-nls' '--enable-dtrace' '--with-uuid=e2fs' '--with-libxml' '--with-libxslt' '--with-ldap' '--with-selinux' '--with-systemd' '--with-system-tzdata=/usr/share/zoneinfo' '--sysconfdir=/etc/sysconfig/pgsql' '--docdir=/usr/pgsql-13/doc' '--htmldir=/usr/pgsql-13/doc/html' 'CFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic' 'LLVM_CONFIG=/usr/lib64/llvm5.0/bin/llvm-config' 'CLANG=/opt/rh/llvm-toolset-7/root/usr/bin/clang' 'PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig' 'PYTHON=/usr/bin/python3'
CC = gcc -std=gnu99
CPPFLAGS = -D_GNU_SOURCE -I/usr/include/libxml2 -I/usr/include
CFLAGS = -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic
CFLAGS_SL = -fPIC
LDFLAGS = -L/usr/lib64/llvm5.0/lib -L/usr/lib64 -Wl,--as-needed -Wl,-rpath,'/usr/pgsql-13/lib',--enable-new-dtags
LDFLAGS_EX =
LDFLAGS_SL =
LIBS = -lpgcommon -lpgport -lpthread -lselinux -lxslt -lxml2 -lpam -lssl -lcrypto -lgssapi_krb5 -lz -lreadline -lrt -ldl -lm
VERSION = PostgreSQL 13.6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

BINDIR:可执行文件位置。
DOCDIR:文档文件位置。
HTMLDIR:HTML 文档文件位置。
INCLUDEDIR:客户端接口的 C 头文件的位置。
PKGINCLUDEDIR:其它 C 头文件的位置。
INCLUDEDIR-SERVER:服务器编程的 C 头文件的位置。
LIBDIR:对象代码库的位置。
PKGLIBDIR:动态可载入模块的位置,或者服务器可能搜索它们的位置(其它架构独立数据文件可能也被安装在这个目录)。
LOCALEDIR:区域支持文件的位置(如果在PostgreSQL被编译时没有配置区域支持,这将是一个空字符串)。
MANDIR:手册页的位置。
SHAREDIR:架构独立支持文件的位置。
SYSCONFDIR:系统范围配置文件的位置。
PGXS:扩展 makefile 的位置。
CONFIGURE:当PostgreSQL被配置编译时给予configure脚本的选项。这可以被用来重新得到相同的配置,或者找出是哪个选项编译了一个二进制包(不过注意二进制包通常包含厂商相关的自定补丁)。
CC:用来编译PostgreSQL的CC变量值。这显示被使用的 C 编译器。
CPPFLAGS:用来编译PostgreSQL的CPPFLAGS变量值。这显示在预处理时需要的 C 编译器开关(典型的是-I开关)。
CFLAGS:用来编译PostgreSQL的CFLAGS变量值。这显示被使用的 C 编译器开关。
CFLAGS_SL:用来编译PostgreSQL的CFLAGS_SL变量值。这显示被用来编译共享库的额外 C 编译器开关。
LDFLAGS:用来编译PostgreSQL的LDFLAGS变量值。这显示链接器开关。
LDFLAGS_EX:用来编译PostgreSQL的LDFLAGS_EX变量值。这只显示被用来编译可执行程序的链接器开关。
LDFLAGS_SL:用来编译PostgreSQL的LDFLAGS_SL变量值。这只显示被用来编译共享库的链接器开关。
LIBS:用来编译PostgreSQL的LIBS变量值。这通常包含用于链接到PostgreSQL中的外部库的-l开关。
VERSION:PostgreSQL的版本。

15)卸载

root用户下配置

--停库
systemctl stop postgresql-13.service
ps -ef|grep post

--备份原数据(确认不要可删掉)
mv /data/ /data20220616

--卸载
rpm -e --nodeps `rpm -qa | grep postgresql`
userdel -r postgres
rpm -qa |grep -ie "postgre|pg"
find / -name post
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

三、源码安装

3.1 操作系统环境

RHEL/CentOS 7-x86_64
  • 1

3.2 安装包

PG13.6 源码安装包下载地址

postgresql-13.6.tar.bz2
postgresql-13.6.tar.bz2.md5
postgresql-13.6.tar.bz2.sha256
postgresql-13.6.tar.gz
postgresql-13.6.tar.gz.md5
postgresql-13.6.tar.gz.sha256
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

安装包描述

  • 上述为两种打包方式的源码安装包及其校验码,本次选择 postgresql-13.6.tar.gz 安装包。

3.3 安装步骤

1)关闭SELinux

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
setenforce 0
cat /etc/selinux/config | grep SELINUX=disabled
getenforce
  • 1
  • 2
  • 3
  • 4

2)防火墙配置

--关闭防火墙
systemctl status firewalld.service
systemctl stop firewalld.service
systemctl disable firewalld.service

--添加数据库端口号(防火墙不可关闭时)
firewall-cmd --add-port=5432/tcp
firewall-cmd --permanent --add-port=5432/tcp
firewall-cmd --reload
firewall-cmd --list-ports  | grep 5432
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3)参数限制配置

vi /etc/security/limits.conf

#for pg13
postgres soft  core unlimited
postgres hard  nproc unlimited
postgres soft  nproc unlimited
postgres hard  memlock unlimited
postgres hard  nofile 1024000
postgres soft  memlock unlimited
postgres soft  nofile 1024000
postgres hard  stack  65536
postgres soft  stack  65536
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

4)时区检查配置

--检查时区
timedatectl    
--修改时区为上海
timedatectl set-timezone Asia/Shanghai
--修改时区为香港
timedatectl set-timezone Asia/Hong_Kong
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

5)创建系统用户

groupdel postgres
userdel postgres
groupadd postgres
useradd -g postgres postgres
passwd postgres
  • 1
  • 2
  • 3
  • 4
  • 5

6)创建数据目录

mkdir /app/pg13 -p
mkdir /data/pg13/{dbbak,archive} -p
chown postgres:postgres /app/pg13 -R
chown postgres:postgres /data -R
  • 1
  • 2
  • 3
  • 4

7)安装依赖包

yum install -y make gcc gcc-c++ readline-devel zlib-devel gzip bzip2 perl-ExtUtils-Embed libperl-dev python-devel tcl-devel libxml2-devel libxslt-devel pam-devel  openldap-devel libuuid-devel uuid uuid-devel openssl openssl-devel systemd-devel
  • 1

make gcc gcc-c++:编译安装需要
gzip bzip2:解压需要
readline-devel:支持箭头键来找回和编辑之前的命令
zlib-devel:支持pg_dump和pg_restore中使用zlib压缩归档
perl-ExtUtils-Embed libperl-dev:支持PL/Perl服务器端编程语言
python-devel:支持PL/Python服务器端编程语言
tcl-devel:支持PL/Tcl过程语言
libxml2-devel:支持处理 XML
libxslt-devel:支持使用XSLT将XML转换成其他格式的程序
pam-devel openldap-devel:支持使用Kerberos、OpenLDAP和/或PAM服务的认证
libuuid-devel uuid uuid-devel:支持生成UUID
openssl openssl-devel:支持加密的客户端连接
llvm llvm-devel:llvm库,支持基于LLVM的JIT编译

8)编译安装

上传源码安装包,解压编译安装

tar -xzvf postgresql-13.6.tar.gz
cd postgresql-13.6

./configure --prefix=/app/pg13 --with-perl --with-python --with-tcl --with-openssl --with-pam --with-gssapi --enable-nls --with-uuid=e2fs --with-libxml --with-libxslt --with-ldap --with-systemd

make&&make install

若需要编译安装包中集成的扩展插件,可使用下列命令
make world&&make install-world
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

–prefix
把所有文件装在目录 PREFIX 中而不是 /usr/local/pgsql 中,实际的文件会安装到数个子目录中。
–with-perl
制作 PL/Perl 服务器端编程语言。
–with-python
制作 PL/Python 服务器端编程语言。
–with-tcl
制作 PL/Tcl 服务器编程语言。
–with-openssl
编译 SSL(加密)连接支持。
–with-pam
使用 PAM(可插拔身份验证模块)支持构建。
–with-gssapi
构建支持 GSSAPI 身份验证。
–enable-nls
打开本地语言支持(NLS),也就是以非英文显示程序消息的能力。
–with-uuid
使用指定的 UUID 库编译 uuid-ossp 模块(提供生成 UUID 的函数)。
–with-libxml
使用 libxml2 构建,启用 SQL/XML 支持。
–with-libxslt
使用 libxslt 构建,使 xml2 模块能够执行 XML 的 XSL 转换。 --with-libxml 也必须指定。
–with-ldap
为认证和连接参数查找编译 LDAP 支持。

8)添加环境变量

su - postgres

vi /home/postgres/.bash_profile

export PGHOME=/app/pg13
export PGDATA=/data/pg13/data
export PATH=$PGHOME/bin:$PATH:$HOME/bin
export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
export PATH=/app/pg13/bin:$PATH

source /home/postgres/.bash_profile
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

9)初始化数据库

initdb -A scram-sha-256 -W
ll /data/pg13/data
  • 1
  • 2

10)启动数据库

pg_ctl start
pg_ctl status
  • 1
  • 2

11)安装完成后的参数配置

psql 连入数据库配置

alter system set listen_addresses = '*';
alter system set max_connections = 2000;
alter system set superuser_reserved_connections = 10;
alter system set shared_buffers = '16GB';         #推荐物理内存1/4
alter system set effective_cache_size = '32GB';   #推荐物理内存的1/2
alter system set maintenance_work_mem = '2GB';
alter system set autovacuum_work_mem = '1GB';
alter system set effective_io_concurrency = 0;
alter system set checkpoint_completion_target = 0.8;
alter system set checkpoint_timeout = '30min';
alter system set log_destination = 'csvlog';
alter system set logging_collector = on;
alter system set log_directory = 'logs';
alter system set log_filename = 'postgresql-%a.log'; 
alter system set log_rotation_age = '1d';
alter system set log_rotation_size = 0;
alter system set log_truncate_on_rotation = on;
alter system set log_statement = 'ddl';
alter system set log_connections = on;
alter system set log_disconnections = on;
alter system set log_min_duration_statement = '5s';
alter system set log_checkpoints = on;
alter system set log_error_verbosity = verbose;        
alter system set log_line_prefix = '%m [%p] %q %u %d %a %r %e '; 
alter system set min_wal_size ='8GB';         #推荐 max_wal_size 的 1/4
alter system set max_wal_size ='32GB';        #推荐 shared_buffers 的 2 倍
alter system set archive_mode = on;
alter system set archive_command = 'cp %p /data/pg13/archive/%f;find /data/pg13/archive/ -type f -mtime +7 -exec rm -f {} \;';
alter system set archive_timeout = '30min';
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

12)修改 pg_hba.conf

vi $PGDATA/pg_hba.conf

host    all             all             0.0.0.0/0               scram-sha-256

pg_ctl restart
  • 1
  • 2
  • 3
  • 4
  • 5

13)设置开机自启动

root 用户下配置

vi /etc/rc.d/rc.local

su - postgres -c '/app/pg13/bin/pg_ctl start -D /data/pg13/data/'

chmod +x /etc/rc.d/rc.local
  • 1
  • 2
  • 3
  • 4
  • 5

14)卸载

root 用户下配置

--停库
pg_ctl stop
ps -ef|grep post

--备份原数据(确认不要可删掉)
mv /data/pg13/data/ /data/pg13/data20220616

--清理用户及目录
userdel -r postgres
find / -name post*
rm -rf /app/
rm -rf /data/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/589721
推荐阅读
相关标签
  

闽ICP备14008679号