RHEL10 现在还是BETA版本,根据红帽产品发布规律,未来在2025年5月份发布,PG17已经正式发布,而且已经到17.2版本,一直说安装来尝试一下,今天正好试一下,一直习惯了源码安装,本次也不例外。
具体步骤如下:
目录
2.6.配置环境变量
一、安装前准备
1.1 关闭防火墙
systemctl disable firewalld
1.2关闭seliux
rhel9以上版本关闭SELINUX和9以前版本有点区别。使用以下命令即可
# grubby --update-kernel ALL --args selinux=0
# reboot
说明:
selinux 必须关闭,否则,使用systemd启动,会报:
dbserver (pg_ctl)[2994]: pg17.service: Unable to locate executable 'bin/pg_ctl': Permission denied
1.3 关闭透明大页
# grubby --update-kernel ALL --args transparent_hugepage=never
重启生效
1.4安装必要的包
这里需要的包:
make
gcc
tar
readline
andreadline-devel
zlib
zlib-devel
ICU
libicu-devel
安装命令
yum -y install make gcc tar readline readline-devel zlib zlib-devel icu libicu-devel
1.5安装可选的包
Perl
Python
Tcl
Gettext
OpenSSL
MIT, OpenLDAP, and/or PAM
LZ4 ,用于TOTAST,WAL压缩
Zstandard 1.4.0,用于 wal压缩
Flex and Bison 用于git
安装命令
yum -y install perl python tcl gettext openssl mit openldap pam lz4 zstandard flex bison
1.6安装支持中文的包
yum install glibc-common langpacks-zh_CN glibc-langpack-zh glibc-locale-source
1.7建立目录
习惯了ORACLE的方式,按该习惯命名目录
# mkdir /u01/app/postgres/product/17.2/dbhome_1 -p
# mkdir /u01/app/postgres/pgdata -p
# mkdir /u01/setup/source -p
1.8创建用户
groupadd postgres
useradd -g postgres postgres
echo "postgres" | passwd --stdin postgres
RHEL10 安全性要求比较高,对用户密码有长度,复杂度要求,如果你想回到RHEL9以前模式,可以修改 /etc/pam.d/system-auth ,在 pam_pwquality.so 后面加上以前的要求即可,具体见下图。
1.9授权
chown -R postgres:postgres /u01/app/postgres
chmod -R 775 /u01/app/postgres
chown -R postgres:postgres /u01/setup/source
二、安装PG
2.1.下载安装文件到 /u01/setup/source
# cd /u01/setup/source
# wget https://ftp.postgresql.org/pub/source/v17.2/postgresql-17.2.tar.gz
2.2.解压
su – postgres
tar xvf postgresql-17.2.tar.gz
2.3.Configure
cd /u01/setup/source/postgresql-17.2
./configure --prefix=/u01/app/postgres/product/17.2/dbhome_1
2.4.编译
make world -j 16 (含所有功能及文档)
2.5.安装
make install-world -j 16
2.6.配置环境变量
cat >> ~/.bash_profile <<"EOF"
export PGPORT=2025 --马上到2025,提前迎接一下
export PGDATA=/u01/app/postgres/pgdata
export PGHOME=/u01/app/postgres/product/17.2/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
2.7.创建数据库集群
# su - postgres
$ source .bash_profile
$ initdb -D /u01/app/postgres/pgdata -E UTF8 --locale=zh_CN.UTF8 -U postgres
2.8.修改数据库参数
cat >> $PGDATA/postgresql.conf << "EOF"
listen_addresses = '*'
port=2025
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
2.9启停PG
su - postgres
pg_ctl start
pg_ctl status
pg_ctl stop
2.10验证
三、完善PG相关
3.1.配置PG自动启动服务
cat > /etc/systemd/system/pg17.service <<"EOF"
[Unit]
Description=PostgreSQL database server
Documentation=man:postgres(1)
After=network.target
[Service]
Type=forking
User=postgres
Group=postgres
Environment=PGPORT=2025
Environment=PGDATA=/u01/app/postgres/pgdata
OOMScoreAdjust=-1000
ExecStart=/u01/app/postgres/product/17.2/dbhome_1/bin/pg_ctl start -D ${PGDATA} -s -o "-p ${PGPORT}" -w -t 300
ExecStop=/u01/app/postgres/product/17.2/dbhome_1/bin/pg_ctl stop -D ${PGDATA} -s -m fast
ExecReload=/u01/app/postgres/product/17.2/dbhome_1/bin/pg_ctl reload -D ${PGDATA} -s
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=0
[Install]
WantedBy=multi-user.target
EOF
--配置生效
# systemctl daemon-reload
# systemctl enable pg17
# systemctl start pg17
# systemctl status pg17
3.2.设置内核参数
cat > /etc/sysctl.conf <<EOF
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
3.3.设置资源限制
cat >> /etc/security/limits.conf <<"EOF"
* hard nofile 131072
* soft nproc 131072
* hard nproc 131072
* soft core unlimited
* hard core unlimited
* soft memlock unlimited
* hard memlock unlimited
EOF
到此,数据库安装完成.
四、联系我们
---------------------------------------------------------------------
如果你对数据库技术感兴趣,我们还可以在微信群:水煮数据库 进行交流,主要交流日常运维中用到的数据库相关问题,包含但不限于:ORACLE,PG,MYSQL,SQLSERVER,OB,TIDB,达梦,TDSQL,OPENGAUSS,人大金仓,GBASE等等,
加我微信吧:zq24803366,备注:水煮数据库, 我拉你入群。
----------------------------------------------------------------------