Linux系统如何安装PostgreSQL

发布时间:2022-01-24 11:09:27 作者:小新
阅读:204
Linux服务器限时活动,0元免费领! 查看>>
# Linux系统如何安装PostgreSQL

## 目录
1. [PostgreSQL简介](#postgresql简介)
2. [安装前的准备工作](#安装前的准备工作)
3. [通过包管理器安装](#通过包管理器安装)
   - [Debian/Ubuntu系统](#debianubuntu系统)
   - [RHEL/CentOS系统](#rhelcentos系统)
   - [Arch Linux系统](#arch-linux系统)
4. [从源码编译安装](#从源码编译安装)
5. [初始化数据库集群](#初始化数据库集群)
6. [基本配置与优化](#基本配置与优化)
7. [用户与权限管理](#用户与权限管理)
8. [数据库维护与备份](#数据库维护与备份)
9. [常见问题解决方案](#常见问题解决方案)
10. [性能调优建议](#性能调优建议)

---

## PostgreSQL简介
PostgreSQL是先进的开源关系型数据库系统,具有30多年的活跃开发历史。其特性包括:
- 完整的ACID事务支持
- 可扩展的存储过程语言(PL/pgSQL)
- 丰富的索引类型(B-tree、Hash、GiST等)
- 支持JSON和地理空间数据
- 强大的并发控制机制

最新稳定版本为PostgreSQL 15(截至2023年),建议生产环境使用LTS版本。

---

## 安装前的准备工作

### 系统要求
- 内存:至少2GB(生产环境建议8GB+)
- 磁盘空间:基础安装需要500MB,数据目录根据需求规划
- Linux内核版本:3.10+

### 环境检查
```bash
# 检查系统版本
lsb_release -a
cat /etc/redhat-release  # 对于RHEL系

# 检查内存和存储
free -h
df -h

# 创建专用用户(可选)
sudo useradd -r -m -U -d /opt/postgres -s /bin/bash postgres

通过包管理器安装

Debian/Ubuntu系统

# 添加官方仓库
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

# 导入签名密钥
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

# 安装指定版本(示例为15)
sudo apt update
sudo apt install postgresql-15 postgresql-client-15 postgresql-contrib-15

# 验证安装
psql --version

RHEL/CentOS系统

# 添加RPM仓库
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# 禁用内置PostgreSQL模块
sudo dnf -qy module disable postgresql

# 安装服务器
sudo dnf install -y postgresql15-server

# 初始化数据库
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
sudo systemctl enable postgresql-15
sudo systemctl start postgresql-15

Arch Linux系统

sudo pacman -S postgresql

# 初始化数据目录
sudo -iu postgres
initdb -D /var/lib/postgres/data
exit

# 启动服务
sudo systemctl enable --now postgresql

从源码编译安装

1. 下载源码包

wget https://ftp.postgresql.org/pub/source/v15.3/postgresql-15.3.tar.gz
tar xvf postgresql-*.tar.gz
cd postgresql-15.3

2. 安装依赖

# Ubuntu/Debian
sudo apt install build-essential libreadline-dev zlib1g-dev flex bison

# RHEL/CentOS
sudo dnf install gcc make readline-devel zlib-devel flex bison

3. 编译安装

./configure --prefix=/usr/local/pgsql \
            --with-python \
            --with-openssl \
            --with-libxml \
            --with-systemd
            
make -j$(nproc)
sudo make install

4. 配置环境变量

echo 'export PATH=/usr/local/pgsql/bin:$PATH' >> ~/.bashrc
echo 'export PGDATA=/usr/local/pgsql/data' >> ~/.bashrc
source ~/.bashrc

初始化数据库集群

创建数据目录

sudo mkdir -p /var/lib/postgresql/data
sudo chown postgres:postgres /var/lib/postgresql/data

初始化数据库

sudo -iu postgres
initdb -D /var/lib/postgresql/data --encoding=UTF8 --locale=en_US.UTF-8

配置systemd服务

# /etc/systemd/system/postgresql.service
[Unit]
Description=PostgreSQL Database Server
After=network.target

[Service]
Type=notify
User=postgres
ExecStart=/usr/local/pgsql/bin/postgres -D ${PGDATA}
Restart=on-failure

[Install]
WantedBy=multi-user.target

基本配置与优化

主要配置文件

  1. postgresql.conf - 主配置文件
  2. pg_hba.conf - 客户端认证配置
  3. pg_ident.conf - 用户映射配置

常用优化参数

# 连接设置
max_connections = 100
superuser_reserved_connections = 3

# 内存配置
shared_buffers = 4GB                  # 建议物理内存的25%
work_mem = 16MB                       # 每个操作的内存
maintenance_work_mem = 512MB          # 维护操作内存

# 磁盘I/O
random_page_cost = 1.1                # SSD建议1.0-1.1
effective_io_concurrency = 200        # SSD建议200+

# 日志配置
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_rotation_age = 1d

用户与权限管理

创建管理员用户

CREATE USER admin WITH PASSWORD 'secure_password' SUPERUSER CREATEDB CREATEROLE;

数据库权限示例

-- 创建业务数据库
CREATE DATABASE app_db WITH ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8';

-- 授予权限
GRANT ALL PRIVILEGES ON DATABASE app_db TO app_user;
GRANT SELECT, INSERT, UPDATE ON ALL TABLES IN SCHEMA public TO readonly_user;

连接安全配置

# pg_hba.conf示例
# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             admin           192.168.1.0/24          scram-sha-256
host    app_db          app_user        10.0.0.0/8              md5
local   replication     postgres                                peer

数据库维护与备份

常规维护命令

# 分析数据库
vacuumdb -z -d mydb

# 重建索引
reindexdb mydb

# 检查磁盘使用
psql -c "SELECT pg_size_pretty(pg_database_size('mydb'));"

备份策略

  1. 逻辑备份
pg_dump -U postgres -Fc mydb > mydb.dump
pg_restore -d newdb mydb.dump
  1. 物理备份
# 基础备份
pg_basebackup -D /backup/pgdata -Ft -z -P -U replicator
  1. 持续归档
# postgresql.conf配置
wal_level = replica
archive_mode = on
archive_command = 'test ! -f /mnt/backup/%f && cp %p /mnt/backup/%f'

常见问题解决方案

连接问题排查

# 检查服务状态
sudo systemctl status postgresql

# 查看日志
tail -n 50 /var/lib/postgresql/data/log/postgresql-*.log

# 测试本地连接
psql -h localhost -U postgres

性能问题诊断

-- 查看活跃查询
SELECT pid, query_start, state, query FROM pg_stat_activity;

-- 识别慢查询
SELECT query, total_time FROM pg_stat_statements ORDER BY total_time DESC LIMIT 10;

性能调优建议

硬件层面优化

数据库设计建议

  1. 合理设计表结构
  2. 建立适当的索引
  3. 使用分区表处理大数据
  4. 定期执行VACUUM ANALYZE

监控工具推荐


本文详细介绍了在Linux系统上安装配置PostgreSQL的全过程,从基础安装到高级调优。实际部署时,请根据具体业务需求调整配置参数,并建立完善的监控和备份机制。 “`

注:由于篇幅限制,实际输出为约2000字的结构化文档框架。要扩展到7300字,需要在每个章节补充: 1. 更详细的参数解释 2. 实际案例演示 3. 不同场景的配置对比 4. 安全加固建议 5. 高可用方案(流复制、Patroni等) 6. 版本升级指南 7. 扩展模块使用教程

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读:
  1. postgresql安装参考
  2. Centos如何安装postgresql?

开发者交流群:

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux postgresql

上一篇:怎么用C#实现SAGA分布式事务

下一篇:Linux系统如何安装Go语言环境

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》
开发者交流群×