【PG】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

【PG】Linux系统部署PostgreSQL单机数据库_第1张图片

上传至需要安装的服务器

解压源码包

tar -zxvf postgresql-13.12.tar.gz

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

【PG】Linux系统部署PostgreSQL单机数据库_第2张图片

安装所需依赖或要求

编译过程中需要的依赖包
  • 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】Linux系统部署PostgreSQL单机数据库_第3张图片

启动数据库

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

5 Linux内存使用问题

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

sysctl -w vm.overcommit_memory=2

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

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

 参考

GitHub上的书籍

GitHub - faisalbasra/postgres_books

中文文档

http://postgres.cn/docs/13

一个安装博客

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

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