1.下载源码包
yum -y install wget bzip2
wget https://ftp.postgresql.org/pub/source/v14.5/postgresql-14.5.tar.bz2
tar xvf postgresql-14.5.tar.bz2 -C /data/
2.安装依赖
yum -y install zlib-devel readline-devel libxml2-devel libxslt-devel openssl-devel perl-devel perl-ExtUtils-Embed python-devel gcc-c++
依赖说明:
zlib-devel :备份时使用的压缩功能
readline-devel :在 psql 中使用上下方向键把历史命令找出来
libxml2-devel :使用 xml 数据类型
libxslt-devel:使用 libxslt
openssl-devel:支持使用 SSL 连接加密
perl-devel:使用 Perl 语言来开发
python-devel :使用 Python 语言来开发
3.创建安装目录
mkdir -p /data/pgsql14.5
4.编译postgresql源码
cd /data/postgresql-14.5
./configure --prefix=/data/pgsql14.5 --with-perl --with-python --with-libxml --with-libxslt --with-openssl --with-blocksize=32 --with-wal-blocksize=32
make && make install
参数说明:
–prefix :指定安装目录
–with-perl: 使用 Perl 语言来编写自定义函数,使用该项要先安装 perl 开发包(perl-devel)
–with-python:使用 Python 语言来编写自定义函数,使用该选项要先安装python-dev 开发包(python-devel)
–with-libxml :使用 xml 数据类型,使用该选项要先安装 python-dev 开发包(libxml2-devel)
–with-libxslt :使用 libxslt 构建,启用 xml2 模块从而可以从 xml 到 xsl 的转换。PostgreSQL 在数据仓库使用场景中, 较大的数据块以提高 I/O 性能。
–with-blocksize:指定数据块为 32KB,默认是 8KB
–with-wal-blocksize:指定 WAL 日志块为 32KB,默认为 8KB
–with-wal-segsize: 指定 WAL 日志文件为 64MB,默认是 16MB
5.创建软连接
注:方便升级使用
cd /usr/local
ln -s /data/pgsql14.5 /usr/local/pgsql
6、初始化
6.1 添加用户和组
groupadd -g 1001 postgres
useradd -g 1001 -u 1001 -m postgres
passwd postgres
6.2 添加环境变量
su - postgres
mkdir -p /data/pgsql14.5/pgdata/
vi ~/.bashrc
export PATH=/usr/local/pgsql/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/pgsql/lib
export PGDATA=/data/pgsql14.5/pgdata/
export pgdatabase=postgres
export pguser=postgres
export pgport=5432
source ~/.bashrc
pgdata:数据目录
pghost:数据库主机或 socket 目录(默认:“本地接口”)
pgport:数据库服务器的端口(默认:“5432”)
pgdatabase: 指定要连接的数据库 (默认:“postgres")
pguser:指定数据库用户名(默认:“postgres")
6.3 初始化pg
initdb -D datadir -E encoding --locale LOCALE -W [-k]
[postgres@pg14 ~]$ initdb -D /data/pgsql14.5/pgdata -E UTF8 --locale "C" -W
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.
The database cluster will be initialized with locale "C".
The default text search configuration will be set to "english".
Data page checksums are disabled.
Enter new superuser password:
Enter it again:
fixing permissions on existing directory /data/pgsql14.5/pgdata ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... Asia/Shanghai
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok
initdb: warning: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.
Success. You can now start the database server using:
pg_ctl -D /data/pgsql14.5/pgdata -l logfile start
-D 指定数据目录,必选项
-E 设置数据库的默认编码,实际是设置 template1 的编码
–locale 设置区域,即设置默认语言环境, locale 就是某一个地域内的人们的语言习惯和
文化传统和生活习惯。
-W 在 initdb 过程中,为超级用户设置一个密码
-k 使用数据页产生效验和
6.4 启动PG
mkdir /data/pgsql14.5/logfiles
pg_ctl -D /data/pgsql14.5/pgdata -l /data/pgsql14.5/logfiles/postgresql.log start
6.5 开启checksum功能
pg_ctl -D /data/pgsql14.5/pgdata -l /data/pgsql14.5/logfiles/postgresql.log stop
pg_checksums -e -P
pg_checksums
pg_ctl -D /data/pgsql14.5/pgdata -l /data/pgsql14.5/logfiles/postgresql.log start
6.6 编译插件
cd /data/postgresql-14.5/contrib
make
make install
7.启停pg数据库
管理工具:pg_ctl
1)启动pg数据库
pg_ctl start -D 数据目录
postgres -D 数据目录 or postmaster -D 数据目录
pg_ctl restart 重启数据库
2)停止pg数据库
pg_ctl stop -D 数据目录 [-m smart|fast(默认)|immediate]
smart:等所有连接中止后, 关闭数据库。 如果客户端连接不终止, 则无法关闭数
据库。
fast:快速关闭数据库, 断开客户端的连接, 让已有的事务回滚, 然后正常关闭数
据库。
immediate:立即关闭数据库, 相当于数据库进程立即停止, 直接退出, 下次启动
数据库需要进行恢复。
实际上在关闭数据库的时候是直接向数据库的主进程发送 signal 信号,有以下 3 种类型:
SIGTERM: 发送此信号为 Smart Shutdown 关机模式。
SIGINT: 发送此信号为 Fast Shutdown 关机模式。
SIGQUIT: 发送此信号为 Immediate Shutdown 关机模式。
pg_ctl kill TERM|INT|QUIT pid
kill -sigterm pid
3)查看pg数据库状态
pg_ctl status -D datadir
psql -h -p -d –U
pg_isready
8.设置开机启动
su - root
cd /data/postgresql-14.5/contrib/start-scripts #源码包解压目录
cp linux /etc/init.d/postgres
chmod +x /etc/init.d/postgres
vi /etc/init.d/postgres
PGDATA="/data/pgsql14.5/pgdata"
service postgres start|stop|restart
chkconfig --list
chkconfig postgres on/off