PostgreSQL 13 源码安装(#1.1)-202103
环境:
OS:RedHat 8.3
DB:PostgreSQL 13
1.安装前准备
1.1 DB软件包准备
# 官方地址下载源码,防止源码串改风险
PostgreSQL 源码下载地址:https://ftp.postgresql.org/pub/source/v13.1/postgresql-13.1.tar.bz2
RedHat 8.3 ISO 下载地址:rhel-8.3-x86_64-dvd.iso
源码安装官方地址: https://www.postgresql.org/docs/13/installation.html
1.2 系统软件包准备
1.2.1 编译安装所需软件包
bison flex readline-devel zlib-devel gcc make
1.2.2 批量使用yum安装所需软件包
yum install -y bison flex readline-devel zlib-devel gcc make
1.2.3 批量检查是否已经安装所需软件包
for i in \
bison flex readline-devel zlib-devel gcc make
do
rpm -q $i &>/dev/null || F="$F $i"
done ;echo $F;unset F
# 返回结果为空,证明所需软件包已经安装完毕
1.2.4 RedHat 8.3 yum本地源配置
# 如不会配置redhat 8 yum源,可以参考 1.2.4 。redhat 8 与 redhat 7 配置略有不同
参考:https://zhuanlan.zhihu.com/p/181575209 或搜索:红帽RedHat Linux 8本地Yum源配置方法 - 知乎
1.3 系统环境准备
1.3.1 创建软件安装组和用户
groupadd --gid 501 postgres
useradd --uid 502 --gid postgres --groups postgres pg13
passwd pg13
1.3.2 创建软件安装目录和赋权
SFOT目录
mkdir -p /db/pg13/soft
chown -R pg13:postgres /db/pg13/soft
chmod -R 700 /db/pg13/soft
DB目录
mkdir -p /db/pg13/data
chown -R pg13:postgres /db/pg13/data
chmod -R 700 /db/pg13/data
1.3.3 创建软件安装用户环境变量
su - pg13
export PS1="$USER@`/bin/hostname -s`-> "
export PGHOME=/db/pg13/soft
export PGDATA=/db/pg13/data
export PATH=$PATH:$HOME/.local/bin:$HOME/bin:$PGHOME/bin:$PGDATA/bin:
export DATE=`date +"%Y%m%d%H%M"`
export LANG=en_US.utf8
# libpq.so.5
export LD_LIBRARY_PATH=/db/pg13/soft/lib
alias rm='rm -i'
alias ll='ls -lh'
unalias vi
1.4 系统资源环境准备
1.4.1 内核参数限制(省略)
# 内核参数比较复杂,现阶段仅限于学习,暂时不涉及。有想学习的同学建议查看德哥的blog《DBA不可不知到操作系统内核参数》
1.4.2 配置OS资源限制
# vi /etc/security/limits.conf
# nofile超过1048576的话,一定要先将sysctl的fs.nr_open设置为更大的值,并生效后才能继续设置nofile.
pg13 soft nofile 1024000
pg13 hard nofile 1024000
pg13 soft nproc unlimited
pg13 hard nproc unlimited
pg13 soft core unlimited
pg13 hard core unlimited
pg13 soft memlock unlimited
pg13 hard memlock unlimited
#备注:关注一下/etc/security/limits.d目录中的文件内容,会覆盖limits.conf的配置
1.4.3 配置OS禁用防火墙与禁用selinux
# a)禁用防火墙
systemctl stop firewalld
# 检查防火墙状态
systemctl status firewalld
# Active: inactive (dead)表示防火墙已关闭
# 关闭开机启动防火墙服务
systemctl disable firewalld.service
# 检查防火墙开机服务
systemctl is-enabled firewalld.service
# disabled 表示开机启动已关闭
# b)禁用selinux
# vi /etc/sysconfig/selinux
SELINUX=disabled
SELINUXTYPE=targeted
1.4.4 关闭不必要的OS服务
# 关闭 NetworkManager
systemctl mask NetworkManager.service
systemctl stop NetworkManager.service
systemctl disable NetworkManager.service
1.4.5 关闭transparent_hugepage、numa
# a)关闭transparent_hugepage
grub2-editenv - set "$(grub2-editenv - list | grep kernelopts) transparent_hugepage=never"
# 检查transparent_hugepage是否关闭
grub2-editenv - list | grep kernelopts
# transparent_hugepage=never说明已经关闭
reboot 后生效
# 检查是否已关闭transparent_hugepage
cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
# always madvise [never] 说明transparent_hugepage已经关闭
# b)关闭numa
vi /etc/sysctl.conf
kernel.numa_balancing = 0
sysctl -p 生效
1.4.6 IPC(共享内存和信号量)控制
echo RemoveIPC=no >> /etc/systemd/logind.conf
# 当用户创建不正确或无法更改时,建议RemoveIPC=no(系统用户不受影响)
# 如设置on,可能因为信号量被随机删除,引起服务器崩溃。
2.执行安装
2.1 PostgreSQL源码软件解压
su - pg13
tar -xvf postgresql-13.1.tar.gz
2.2 编译安装执行
运行configure程序配置编译选项(默认选项)
su - pg13
cd /db/pg13/soft/postgresql-13.1
./configure --prefix=/db/pg13/soft
2.3 编译与安装过程
su - pg13
# gmake编译
gmake
# All of PostgreSQL successfully made. Ready to install.表示编译成功
# 使用gmake install进行安装
gmake install
# PostgreSQL installation complete.表示安装成功
3.初始化数据库
initdb -D $PGDATA -W
4.配置数据库
使用默认配置开启数据库,后续在进行配置优化
5.启动数据库并验证
5.1 启停数据库
pg_ctl -D $PGDATA -l logfile start
pg_ctl -D $PGDATA status
pg_ctl -D $PGDATA stop -m fast
5.2 登陆验证
psql -U pg13 -d postgres -h 127.0.0.1 -p 5432
# -U 系统用户
# -d 数据库名
# -h ip地址
pg13@pgdb01-> psql -U pg13 -d postgres -h 127.0.0.1 -p 5432
psql (13.1)
Type "help" for help.
postgres=# \x
Expanded display is on.
postgres=# \l
List of databases
-[ RECORD 1 ]-----+--------------
Name | postgres
Owner | pg13
Encoding | UTF8
Collate | en_US.utf8
Ctype | en_US.utf8
Access privileges |
-[ RECORD 2 ]-----+--------------
Name | template0
Owner | pg13
Encoding | UTF8
Collate | en_US.utf8
Ctype | en_US.utf8
Access privileges | =c/pg13 +
| pg13=CTc/pg13
-[ RECORD 3 ]-----+--------------
Name | template1
Owner | pg13
Encoding | UTF8
Collate | en_US.utf8
Ctype | en_US.utf8
Access privileges | =c/pg13 +
| pg13=CTc/pg13
# 至此postgresql源码安装已经完成。
# 希望对大家学习有所帮忙
附录:
错误1
configure: error: in `/db/pg13/soft/postgresql-13':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
# 报错原因:缺少gcc包
# 解决:安装gcc包
错误2
pg13@pgdb01-> psql
psql: error while loading shared libraries: libpq.so.5: cannot open shared object file: No such file or directory
# 报错原因:psql未发现libpq.so.5文件
# 解决:故在用户环境变量中增加声明
pg13@pgdb01-> find /db -name libpq.so.5
/db/pg13/soft/postgresql-13.1/src/interfaces/libpq/libpq.so.5
/db/pg13/soft/lib/libpq.so.5
export LD_LIBRARY_PATH=/db/pg13/soft/lib