• Linux安装单机PostgreSQL15.4


    1. 联网rpm安装

    1.1.关闭服务

    ## 关闭防火墙
    systemctl stop firewalld.service
    systemctl disable firewalld.service
    ## 关闭 selinux
    cat /etc/selinux/config
    SELINUX=disabled
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    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

    1.3.安装PostgreSQL

    yum install -y postgresql15-server
    
    • 1

    1.4.初始化数据库

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

    1.5.启动数据库

    systemctl enable postgresql-15
    systemctl start postgresql-15
    
    • 1
    • 2

    1.6.查看PostgreSQL是否安装

    ## 检查 PostgreSQL 是否已安装
    rpm -qa | grep postgres
    
    ## 查看 PostgreSQL 安装位置
    rpm -qal | grep postgres
    
    • 1
    • 2
    • 3
    • 4
    • 5

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2.2.初始化数据库

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

    2.3.启动数据库

    systemctl enable postgresql-15.service
    systemctl start postgresql-15.service
    systemctl status postgresql-15.service
    
    • 1
    • 2
    • 3

    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  --退出
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3.2.配置(configure)

    ## 先安装依赖包,在进行配置操作,不然后面检查会报错
    yum install readline-devel zlib-devel -y
    
    ## 开始配置
    cd /tmp/pg_soft/postgresql-15.4
    ./configure --prefix=/pgsql15.4
    
    ## 解释
    --prefix:指定安装路径,将所有文件放置到该路径下
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3.3.编译(make)

    ## make命令版本需要在gmake v3.8以上
    make --version
    
    ## 开始编译
    cd /tmp/pg_soft/postgresql-15.4
    make
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.4.安装(make install)

    cd /tmp/pg_soft/postgresql-15.4
    make install
    
    • 1
    • 2

    3.5.创建数据目录和用户

    ## 用户
    groupadd -g 1500 postgres
    useradd -g 1500 -u 1501 postgres
    
    ## 数据目录
    mkdir -p /pgsql15.4/data
    chown postgres:postgres -R /pgsql15.4
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3.6.配置环境变量

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

    3.7.初始化数据库

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

    su - postgres
    cd /pgsql15.4/bin
    initdb
    
    • 1
    • 2
    • 3

    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。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    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地址的机器访问数据库。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    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 默认的数据库端口,如果一台机器安装了多个实例,就可以设置不同的端口。
    
    以上两个参数,需要重启数据库才能生效
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    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';
    
    • 1
    • 2
    • 3
    • 4
    • 5

    5.其他功能配置

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

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

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

    注:对于此时编译出来的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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 相关阅读:
    C语言集合运算
    灰鸽子木马特征值免杀
    【深入解读Redis系列】Redis系列(五):切片集群详解
    GO语言从入门到实战-Go语言课程介绍
    【pandas小技巧】--缺失值的列
    使用代理IP常见问题及解答
    测试开发面经
    java学习--day23(线程池)
    并查集详解(原理+代码实现+应用)
    logstash同步mysql数据到elasticsearch
  • 原文地址:https://blog.csdn.net/loveLAxin/article/details/133674719