• Linux系统部署PostgreSQL 单机数据库


    目录

    安装方式

    1 安装包方式 (Packages and Installers)

    2 源码安装 (Source code)

    下载源码包

    上传至需要安装的服务器

    解压源码包

    安装所需依赖或要求

    编译过程中需要的依赖包

    使用yum 安装上面的包

    可选的依赖包

    空间要求

    安装

    构建(build)

    设置环境变量

    共享库

    平台支持

    CPU

    操作系统

    创建普通用户

    创建目录修改权限

    初始化

    启动数据库

    停止数据库

    SIGTERM

    SIGINT

    SIGQUIT (不建议)

    连接数据库

    服务器参数设置 或 调优

    1 共享内存和信号量

    2 Linux大页面

    3 资源限制

    4 systemd RemoveIPC

    5 Linux内存使用问题

     参考

    GitHub上的书籍

    中文文档

    一个安装博客


    安装方式

    1 安装包方式 (Packages and Installers)

    支持的操作系统包括

    • liunx
    • Macos
    • Windows
    • BSD
    • Solaris
    2 源码安装 (Source code)

    下载源码包

    通过下载地址PostgreSQL: File Browser

    可以看到有各个版本的源码目录 选择13.12的版本,源码包提供另种打包压缩方式 分别为tar.bz2和 tar.gz。这里下载postgresql-13.12.tar.gz

    上传至需要安装的服务器

    解压源码包

    tar -zxvf postgresql-13.12.tar.gz

    之后出现源码目录 postgresql-13.12,包含的文件如下 

    安装所需依赖或要求

    编译过程中需要的依赖包
    • GNU make版本3.80或以上 通过make --version命令查看版本
    • 需要有一个编译器, 推荐GCC
    • 默认时将自动使用GNU Readline库,它允许psql(PostgreSQL的命令行 SQL 解释器)记住你输入的每一个命令并且允许你使用箭头键来找回和编辑之前的命令
    • 需要tar来解包源代码
    • zlib压缩库,来支持 pg_dump和pg_restore中对压缩归档。
    使用yum 安装上面的包

    yum install -y cmake make gcc zlib gcc-c++ perl readline readline-devel zlib

    可选的依赖包
    • Perl
    • Python
    • Tcl
    • 支持加密的客户端连接,则需要OpenSSL,最低的版本要求是1.0.1。
    • Kerberos、OpenLDAP和/或PAM服务的认证
    空间要求
    • 大概需要近 350 MB 用于存放编译过程中的源码树和大约 40 MB 用于安装目录

    安装

    ./configure

    该脚本将运行一些测试来决定一些系统相关的变量, 并检测你的操作系统的特殊设置,并且最后将在编译树中创建一些文件以记录它找到了什么。

    构建(build)

    默认时所有文件都将安装到/usr/local/pgsql

    make

    make install

    /usr/local/pgsql目录下的文件夹

    设置环境变量

    ~/.bash_profile 在这个文件中设置只影响本用户

    /etc/profile 在这个文件中设置只影响所有用户

    export PATH=/usr/local/pgsql/bin:$PATH export MANPATH=/usr/local/pgsql/share/man:$MANPATH export LD_LIBRARY_PATH=/usr/local/pgsql/lib export PGPORT=5432 export LANG=en_US.UTF8 export PS1="[`whoami`@`hostname`:"'$PWD]$' export PGDATA=/home/storage/pgsql/data export PGHOME=/usr/local/pgsql

    共享库

    以便让运行时链接器更快地找到共享库

    /sbin/ldconfig /usr/local/pgsql/lib /sbin/ldconfig -m /usr/local/pgsql/lib

    平台支持

    CPU

    CPU 架构上工作:x86、 x86_64、IA64、PowerPC、PowerPC 64、S/390、S/390x、Sparc、Sparc 64、ARM、MIPS、MIPSEL和PA-RISC

    操作系统

     Linux(所有最近的发布)、Windows(XP及以上)、 FreeBSD、OpenBSD、NetBSD、macOS、AIX、HP/UX 和 Solaris。其他类 Unix 系统可能也可以工作,但是目前没有被测试。

    创建普通用户

    通常使用postgres这个用户名

    groupadd postgres

    useradd postgres -g postgres

    创建目录修改权限

    mkdir -p /home/storage/pgsql/data

    chown -R postgres:postgres /home/storage/pgsql/data

    chown -R postgres:postgres /usr/local/pgsql

    初始化

    方式一

    initdb -D /home/storage/pgsql/data

    方式二

    pg_ctl -D /home/storage/pgsql/data initdb

    启动数据库

    pg_ctl -D /home/storage/pgsql/data -l logfile start

    停止数据库

    直接管理服务器时,可以通过向 postgres 进程发送不同的信号来控制关闭的类型:

    SIGTERM

    这是智能关闭模式。在接收SIGTERM后, 服务器将不允许新连接,但是会让现有的会话正常结束它们的工作。仅当所有的会话终止后它才关闭。 如果服务器处在线备份模式,它将等待直到在线备份模式不再被激活。当在线备份模式被激活时, 仍然允许新的连接,但是只能是超级用户的连接(这一例外允许超级用户连接来终止在线备份模式)。 如果服务器在恢复时请求智能关闭,恢复和流复制只有在所有正常会话都终止后才停止。

    SIGINT

    这是快速关闭模式。服务器不再允许新的连接,并向所有现有服务器进程发送SIGTERM,让它们中断当前事务并立刻退出。然后服务器等待所有服务器进程退出并最终关闭。 如果服务处于在线备份模式,备份模式将被终止并致使备份无用。

    SIGQUIT (不建议)

    这是立即关闭模式。服务器将给所有子进程发送 SIGQUIT并且等待它们终止。如果有任何进程没有在 5 秒内终止,它们将被发送 SIGKILL。主服务器进程将在所有子进程退出之后立刻退出,而无需做普通的数据库关闭处理。这将导致在下一次启动时(通过重放 WAL 日志)恢复。只在紧急 时才推荐这种方式。

    kill -INT `head -1 /home/storage/pgsql/data/postmaster.pid`

    连接数据库

    psql

    服务器参数设置 或 调优

    1 共享内存和信号量

    默认的共享内存设置通常已经足够好了,除非您将shared_memory_type设置为sysv,即使这样, 也只适用于低默认值的旧内核版本。System V信号量不在此平台上使用。

    共享内存大小设置可以通过sysctl界面更改。例如,允许 16 GB:

    $ sysctl -w kernel.shmmax=17179869184 $ sysctl -w kernel.shmall=4194304

    2 Linux大页面
    3 资源限制

    Unix类操作系统强制了许多种资源限制,这些限制可能干扰你的PostgreSQL服务器的操作。尤其重要的是对每个用户的进程数目的限制、每个进程打开文件数目的限制以及每个进程可用的内存的限制。这些限制中每个都有一个“硬”限制和一个“软”限制。实际使用的是软限制,但用户可以自己修改成最大为硬限制的数目。而硬限制只能由root用户修改

    4 systemd RemoveIPC

    如果正在使用systemd,则必须注意IPC资源(包括共享内存) 不会被操作系统过早删除

    方式一 创建用户时使用以下方式,创建postgres为系统用户

    useradd -r

    adduser --system

    useradd --help

    -r, --system create a system account

    方式二 如果用户创建不正确 或者 无法修改的情况下

    修改文件 /etc/systemd/logind.conf

    添加配置

    RemoveIPC=no

    https://www.cnblogs.com/binliubiao/p/15524509.html

    5 Linux内存使用问题

    设置为可以使用物理内存 和 交换空间(swap),可以避免在内存用尽时PG进程发生OOM

    sysctl -w vm.overcommit_memory=2

    某些情况中,降低内存相关的配置参数可能有所帮助,特别是shared_bufferswork_memhash_mem_multiplier。在其他情况中,允许太多连接到数据库服务器本身也可能导致该问题。

    在很多情况下,最好减小max_connections并且转而利用外部连接池软件。

     参考

    GitHub上的书籍

    GitHub - faisalbasra/postgres_books

    中文文档

    http://postgres.cn/docs/13

    一个安装博客

    Linux上生产环境源码方式安装配置postgresql12_mob604757057176的技术博客_51CTO博客

  • 相关阅读:
    GZ033 大数据应用开发赛题第04套
    C#【必备技能篇】Release下的pdb文件有什么用,是否可以删除?
    Java学习 --- hashCode、toString、finalize方法
    Linux 配置 Nginx 服务完整详细版
    设计模式(16)迭代器模式
    易车:互联网造车定位称王还是镜花水月
    Figma技术学习总结
    JVM运行时数据区域之PCRegister和虚拟机栈
    SpringBoot-配置优先级
    大数据背景下的信息资源管理
  • 原文地址:https://blog.csdn.net/weixin_48154829/article/details/133647185