Linux安装单机PostgreSQL15.4

1. 联网rpm安装

1.1.关闭服务

## 关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
## 关闭 selinux
cat /etc/selinux/config
SELINUX=disabled

1.2.安装yum源

yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

1.3.安装PostgreSQL

yum install -y postgresql15-server

1.4.初始化数据库

/usr/pgsql-15/bin/postgresql-15-setup initdb

1.5.启动数据库

systemctl enable postgresql-15
systemctl start postgresql-15

1.6.查看PostgreSQL是否安装

## 检查 PostgreSQL 是否已安装
rpm -qa | grep postgres

## 查看 PostgreSQL 安装位置
rpm -qal | grep postgres

2. 离线rpm安装

2.1.下载rpm安装包

## 下载地址
https://yum.postgresql.org/15/redhat/rhel-7-x86_64/repoview/

## 例如下载postgreSQL 15.4
libzstd-1.5.5-1.el7.x86_64.rpm
postgresql15-libs-15.4-1PGDG.rhel7.x86_64.rpm
postgresql15-15.4-1PGDG.rhel7.x86_64.rpm
postgresql15-server-15.4-1PGDG.rhel7.x86_64.rpm

2.2.初始化数据库

/usr/pgsql-15/bin/postgresql-15-setup initdb

2.3.启动数据库

systemctl enable postgresql-15.service
systemctl start postgresql-15.service
systemctl status postgresql-15.service

2.4.rpm安装注意事项

## 默认情况下,数据目录位置:/var/lib/pgsql//data

## 默认创建 postgres 的 Linux 登录用户,用于连接数据库
[root@pg01 ~]# su - postgres
-bash-4.2$ psql
psql (15.4)
Type "help" for help.

postgres=# \q  --退出

3. 源码编译安装

源码编译总体分为三个过程:配置(configure)、编译(make)、安装(make install)。

3.1.下载源码包

## 下载地址
https://www.postgresql.org/ftp/source/v15.4/

## 例如下载PostgreSQL 15.4
postgresql-15.4.tar.gz

## 解压源码包
tar -zxvf postgresql-15.4.tar.gz

3.2.配置(configure)

## 先安装依赖包,在进行配置操作,不然后面检查会报错
yum install readline-devel zlib-devel -y

## 开始配置
cd /tmp/pg_soft/postgresql-15.4
./configure --prefix=/pgsql15.4

## 解释
--prefix:指定安装路径,将所有文件放置到该路径下

3.3.编译(make)

## make命令版本需要在gmake v3.8以上
make --version

## 开始编译
cd /tmp/pg_soft/postgresql-15.4
make

3.4.安装(make install)

cd /tmp/pg_soft/postgresql-15.4
make install

3.5.创建数据目录和用户

## 用户
groupadd -g 1500 postgres
useradd -g 1500 -u 1501 postgres

## 数据目录
mkdir -p /pgsql15.4/data
chown postgres:postgres -R /pgsql15.4

3.6.配置环境变量

vi /etc/profile
## 可执行文件位置
export PATH=/pgsql15.4/bin:$PATH
## 共享库位置
export LD_LIBRARY_PATH=/pgsql15.4/lib
## 数据目录
export PGDATA=/pgsql15.4/data

3.7.初始化数据库

注:必须使用非特权用户进行初始化。

su - postgres
cd /pgsql15.4/bin
initdb

3.8.启动/停止数据库

## 启动
pg_ctl -D /pgsql15.4/data start

## 关闭
pg_ctl -D /pgsql15.4/data stop -m fast

## 三种关闭模式
smart:等所有连接中止后,关闭数据库。如果客户端连接不终止,则无法关闭数据库。
fast:快速关闭数据库,断开客户端的连接,让已有的事务回滚,然后正常关闭数据库。相当于Oracle的imediate。
mmediate:立即关闭数据库,相当于数据库进程立即停止,直接退出,下次启动数据库需要进行恢复。相当于Oracle的abort。

3.9.安装contrib目录下的工具

## 以 basic_archive 归档模块为例
[root@postgresql postgresql-15.4]# ./configure
[root@postgresql postgresql-15.4]# cd contrib/basic_archive/
[root@postgresql basic_archive]# make
[root@postgresql basic_archive]# make install

## 或手动将生成的.so文件复制到lib目录下
[root@postgresql basic_archive]# ll
total 48
-rw-r--r-- 1 1107 1107 10145 Aug  8 04:08 basic_archive.c
-rw-r--r-- 1 1107 1107   110 Aug  8 04:08 basic_archive.conf
-rw-r--r-- 1 root root 10528 Sep 26 13:32 basic_archive.o
-rwxr-xr-x 1 root root 14328 Sep 26 13:32 basic_archive.so
drwxrwxrwx 2 1107 1107    31 Aug  8 04:23 expected
-rw-r--r-- 1 1107 1107   639 Aug  8 04:08 Makefile
drwxrwxrwx 2 1107 1107    31 Aug  8 04:23 sql
[root@postgresql basic_archive]# cp basic_archive.so /pgsql15.4/lib/
[root@postgresql lib]# chown postgres:postgres basic_archive.so

4.安装后的配置

4.1.pg_hba.conf的配置

默认创建的数据库无法接受远程连接,因为默认情况下,pg_hba.conf中没有相应的配置项。

cd /pgsql15.4/data
vi pg_hba.conf
# IPv4 local connections:
host    all             all             0/0                     md5

pg_hba.conf文件是一个黑白名单的访问控制文件,可以控制允许哪些IP地址的机器访问数据库。

4.2.修改监听的IP和端口

cd /pgsql15.4/data
vi postgresql.conf
#listen_addresses = 'localhost'
listen_addresses = '*'
#port = 5432

## 解释
listen_addresses = 'localhost' 为本地监听,也就是127.0.0.1,会造成远程主机无法登录数据库。
port = 5432 默认的数据库端口,如果一台机器安装了多个实例,就可以设置不同的端口。

以上两个参数,需要重启数据库才能生效

4.3.数据库日志相关参数

## 打开日志收集(默认off)
logging_collector = on
## 日志目录
log_directory = 'log'
## 参数修改方式(alter system set或postgresql.conf)
alter system set logging_collector = on;
alter system set log_truncate_on_rotation = on;

vi postgresql.conf
logging_collector = on
log_directory = 'log'

## 日志切换和是否覆盖的三种方案
(1)每天生成一个新的日志文件
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_truncate_on_rotation = off
log_rotation_age = 1d
log_rotation_size = 0

(2)每当日志写满一定的大小(如10M),则切换一个日志
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_truncate_on_rotation = off
log_rotation_age = 0
log_rotation_size = 10M

(3)只保留最近7天的日志,进行循环覆盖
log_filename = 'postgresql-%a.log'
log_truncate_on_rotation = on
log_rotation_age = 1d
log_rotation_size = 0

4.4. 内存参数

PostgreSQL安装完成后,可以修改以下主要的内存参数:

shared_buffer:共享内存的大小,主要用于共享数据块。默认值为32M。如果有足够的内存,可以设置为物理内存大小的四分之一。

work_mem:单个SQL执行时,以及排序、Hash Join时使用的内存,SQL运行完后,该内存就会被释放,默认为4M,work_mem设置大一些,会使排序操作效率更高。

对于一个复杂查询,可能会并行运行好几个排序或哈希操作,每个操作都会被允许使用这个参数指定的内存量,然后才会开始写数据到临时文件。

4.5.数据库状态查询

## 服务的运行状态和启动路径
pg_ctl status

## 数据库运行状态
select state from pg_stat_activity where datname='postgres';

5.其他功能配置

5.1.如何使用较大的数据块(可选,一般默认即可)

如果要使用较大的数据块来提高I/O性能,只能在源码编译安装时,执行./configure脚本指定数据块的大小。

## 如指定32KB的数据块、WAL日志、64MB WAL日志文件大小
./configure --with-blocksize=32 --with-wal-blocksize=32 --with-wal-segsize=64

注:对于此时编译出来的PostgreSQL程序创建的PostgreSQL数据库,不能使用其他块大小的PostgreSQL程序启动。

5.2.Checksum功能(可选)

对于一些数据可靠性要求较高的场景,建议打开数据块的checksum校验功能。

通常用于校验数据在传输或存取过程中是否发生错误,以发现数据因磁盘、I/O损坏等原因造成的数据库异常。

开启checksum可能会对系统性能造成一定的影响。将为数据库中的所有对象计算校验和。

所有校验和失败都将在pg_stat_database视图中报告。

如果数据库较大,转换成checksum功能的数据库就需要比较长的一段时间,需要安排合理的停机时间。

## 检查是否打开checksum功能
此命令需要数据库处于关闭状态:
pg_checksums -c

此命令在数据库开启状态可执行,0关闭,1打开:
pg_controldata -D /pgsql15.4/data |grep checksum

## 打开checksum功能
初始化时:
initdb -k

创建数据库后,先关闭数据库,然后打开该功能:
pg_checksums -e -P

## 禁用checksum功能
pg_checksums -d

你可能感兴趣的:(linux,数据库,postgresql)