赞
踩
本文档介绍 Linux 平台 PostgreSQL 的两种安装方式,rmp 安装和源码安装。
rpm 安装包是提前编译好的,所以安装过程较快,但其路径也是固定的,不够灵活。
RHEL/CentOS 7-x86_64
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
安装包描述:
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
setenforce 0
cat /etc/selinux/config | grep SELINUX=disabled
getenforce
--关闭防火墙
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
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
--检查时区
timedatectl
--修改时区为上海
timedatectl set-timezone Asia/Shanghai
--修改时区为香港
timedatectl set-timezone Asia/Hong_Kong
groupdel postgres
userdel postgres
groupadd postgres
useradd -g postgres postgres
passwd postgres
mkdir /data/pg13/{dbbak,archive} -p
chown postgres:postgres /data -R
rpm -ivh postgresql13-*
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
initdb -A scram-sha-256 -W
ll /data/pg13/data
pg_ctl start
pg_ctl status
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';
vi $PGDATA/pg_hba.conf
host all all 0.0.0.0/0 scram-sha-256
pg_ctl restart
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
方式二:服务
vi /usr/lib/systemd/system/postgresql-13.service
Environment=PGDATA=/data/pg13/data/
systemctl enable postgresql-13.service
systemctl is-enabled postgresql-13.service
安装完成后,可使用 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
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的版本。
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
RHEL/CentOS 7-x86_64
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
安装包描述:
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
setenforce 0
cat /etc/selinux/config | grep SELINUX=disabled
getenforce
--关闭防火墙
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
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
--检查时区
timedatectl
--修改时区为上海
timedatectl set-timezone Asia/Shanghai
--修改时区为香港
timedatectl set-timezone Asia/Hong_Kong
groupdel postgres
userdel postgres
groupadd postgres
useradd -g postgres postgres
passwd postgres
mkdir /app/pg13 -p
mkdir /data/pg13/{dbbak,archive} -p
chown postgres:postgres /app/pg13 -R
chown postgres:postgres /data -R
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
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编译
上传源码安装包,解压编译安装
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
–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 支持。
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
initdb -A scram-sha-256 -W
ll /data/pg13/data
pg_ctl start
pg_ctl status
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';
vi $PGDATA/pg_hba.conf
host all all 0.0.0.0/0 scram-sha-256
pg_ctl restart
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
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/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。