debian13+pgsql部署
debian13+pgsql部署

debian13+pgsql部署

下面是一套 Debian 13 + PostgreSQL 标准部署方案,特点是: • 程序安装在系统盘 • 数据和日志全部放到新挂载磁盘 • 避免日志撑爆系统盘 • 适合 SATA 盘环境

这也是很多企业服务器的常见部署方式。

一、最终目录结构(推荐)

假设你新挂载的盘是:

/data

最终结构建议:

/usr/lib/postgresql/ # PostgreSQL程序(系统盘) /etc/postgresql/ # PostgreSQL配置(系统盘)

/data/postgresql/ ├── data/ # 数据目录 ├── wal/ # WAL日志 └── log/ # PostgreSQL运行日志

这样好处: • 系统盘不会被数据库撑满 • 数据和日志全部在数据盘 • IO更清晰

二、确认新磁盘已经挂载

先确认:

lsblk

假设看到:

sda 200G / sdb 1T

创建文件系统:

mkfs.ext4 /dev/sdb

创建挂载点:

mkdir /data

挂载:

mount /dev/sdb /data

设置开机自动挂载:

nano /etc/fstab

添加:

/dev/sdb /data ext4 defaults 0 0

确认:

df -h

应该看到:

/dev/sdb 1T /data

三、安装 PostgreSQL

Debian 官方源安装:

apt update apt install postgresql

安装完成后系统会自动创建:

/var/lib/postgresql/16/main

并启动数据库。

先停止:

systemctl stop postgresql

四、创建新的数据库目录

创建目录结构:

mkdir -p /data/postgresql/data mkdir -p /data/postgresql/wal mkdir -p /data/postgresql/log

修改权限:

chown -R postgres:postgres /data/postgresql chmod 700 /data/postgresql/data

五、迁移数据库数据

复制原始数据:

rsync -av /var/lib/postgresql/ /data/postgresql/data/

注意: 原路径是:

/var/lib/postgresql/16/main

迁移后会变成:

/data/postgresql/data/16/main

六、修改 PostgreSQL 配置

编辑配置:

nano /etc/postgresql/16/main/postgresql.conf

修改以下参数:

1 修改数据目录

找到:

data_directory

改成:

data_directory = ‘/data/postgresql/data/16/main’

2 修改 WAL 日志目录

找到:

#wal_log_hints = off

在下面添加:

wal_directory = ‘/data/postgresql/wal’

(如果版本不支持,可以忽略)

3 修改日志目录

找到:

log_directory

改成:

log_directory = ‘/data/postgresql/log’

并开启日志:

logging_collector = on

设置日志文件名:

log_filename = ‘postgresql-%Y-%m-%d.log’

日志轮转:

log_rotation_age = 1d log_rotation_size = 100MB

七、启动数据库

systemctl start postgresql

查看状态:

systemctl status postgresql

八、确认数据目录

执行:

sudo -u postgres psql -c “show data_directory;”

应该返回:

/data/postgresql/data/16/main

九、确认日志目录

执行:

sudo -u postgres psql -c “show log_directory;”

应该是:

/data/postgresql/log

十、删除旧数据(确认运行正常后)

确认数据库运行正常后:

rm -rf /var/lib/postgresql/16/main

这样系统盘就不会存数据库了。

十一、SATA 磁盘优化参数(推荐)

编辑:

nano /etc/postgresql/16/main/postgresql.conf

建议增加:

shared_buffers = 4GB work_mem = 32MB maintenance_work_mem = 512MB

checkpoint_completion_target = 0.9 wal_buffers = 16MB

effective_cache_size = 12GB

如果服务器是:

内存 shared_buffers 16G 4G 32G 8G 64G 16G

SSD的话推荐:

提高并发 IO 能力 effective_io_concurrency = 200

优化随机读写成本 random_page_cost = 1.1

checkpoint优化 checkpoint_completion_target = 0.9

十二、防止日志无限增长(重要)

Debian 默认 logrotate 会管理 PostgreSQL 日志。

确认:

cat /etc/logrotate.d/postgresql

如果没有,可以创建:

nano /etc/logrotate.d/postgresql

内容:

/data/postgresql/log/*.log { daily rotate 7 compress delaycompress missingok notifempty copytruncate }

意思: • 每天轮转 • 保留7天 • 自动压缩

十三、最终效果

系统盘只剩:

/usr/lib/postgresql /etc/postgresql

数据盘:

/data/postgresql ├── data ├── wal └── log

系统盘 永远不会被数据库撑爆。

十四、一个非常重要的经验

数据库服务器一定要监控磁盘:

建议加一个定时检查:

df -h /data

或接入监控系统。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

53 − = 45