安装方式
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
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博客