+-
CentOS 8 源码编译安装PostgreSQL(13.1)
注意:以下所有命令无特殊说明均在root下执行
一、安装前准备
1、操作系统需安装开发工具相关程序,如GCC,Make等,本例采用组安装包的方式进行安装: "Development Tools" 或 "开发工具"
dnf -y groupinstall "Development Tools"
2、在默认情况下一般要使用数据库中的压缩功能,而这一功能的实现需要第三方的zlib压缩开发包支持,所以需要安装 zlib-devel 包;为了方便地在psql中使用上下方向键把历史命令找出来,按照PostgreSQL官方手册的说明,需要安装readline-devel包。
dnf -y install zlib-devel readline-devel perl-devel perl-ExtUtils-Embed python3-devel
二、下载源码
wget https://ftp.postgresql.org/pub/source/v13.1/postgresql-13.1.tar.bz2
三、编译及安装
1、解压源码
tar -jxvf postgresql-13.1.tar.bz2
2、进入源码目录
cd postgresql-13.1
3、创建PostgreSQL安装目录
mkdir -p /vdisk/app/postgresql/pgsql/v13.1
4、运行configure
./configure --prefix=/vdisk/app/postgresql/pgsql/v13.1 --with-perl --with-python
参数说明:
(1)--prefix 指定数据库程序安装位置。
(2)--with-perl 加上该选项才能使用Perl语法的PL/Perl过程语言来编写自定义函数。
(3)--with-python 加上该选项才能使用Python语法的PL/Python过程语言来编写自定义函数。
5、编译
make
6、安装
make install
7、安装常用工具
cd contrib
make
make install
7、为方便后续数据库管理程序版本升级,建立默认数据库管理程序链接,以后有新的版本发布,通过源码编译安装后,修改这个软链接的实际指向即可完成升级,其他配置不需要做修改。
ln -sf /vdisk/app/postgresql/pgsql/v13.1 /vdisk/app/postgresql/pgsql/default
四、添加用户(postgres)
# 1 添加用户
useradd postgres
# 2 设置密码
passwd postgres
# 3 创建相关目录
mkdir -p /vdisk/app/postgresql/pgdata
# 4 更改目录宿主
chown -R postgres:postgres /vdisk/app/postgresql/pgdata
五、配置环境变量
# 1 切换至 postgres 用户
su - postgres
# 2 配置 .bashrc 在末尾添加如下内容
export PGBASE=/vdisk/app/postgresql
export PGHOME=$PGBASE/pgsql/default
export PGDATA=$PGBASE/pgdata
export PATH=$PGHOME/bin:$PATH
export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
export MANPATH=$PGHOME/share/man:$MANPATH
# 3 让配置生效
source ~/.bashrc
六、初始化数据库实例
# 切换至 postgres 用户
initdb
七、数据库实例的启动及停止
# 切换至 postgres 用户
# 1 启动数据库
pg_ctl start
# 2 停止数据库
pg_ctl stop [-m SHUTDOWN-MODE]
# -m 用于指定数据库的停止方法,有以下3种模式:
# smart : 等所有连接中止后,关闭数据库。如果客户端连接不终止,则无法关闭数据库。
# fast : 快速关闭数据库,断开客户端的连接,记已有的事务回滚,然后正常关闭数据库。
# immediate : 立即关闭数据库,相当于数据库进程立即停止,直接退出,下次启动数据库需要进行恢复。
八、测试
# 切换至 postgres 用户
# 1 使用 psql 命令行工具连接数据库
psql
# 输出如下:
psql (13.1)
Type "help" for help.
postgres=#
# 2 查看数据库信息,命令行输入 \l 回车
postgres=# \l
# 输出如下:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
template0 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(3 rows)
postgres=#