Debian 13 + PostgreSQL 17 生产环境安装配置及数据库迁移恢复指南

作者:admin 日期:2026年08月01日 地点:洛杉矶,加州,美国
PostgreSQL 是目前企业应用中非常流行的开源关系型数据库,具备稳定、高性能、扩展性强等特点。
本文记录 Debian 13 系统环境下 PostgreSQL 17 的安装、生产环境基础配置,以及旧服务器数据库迁移恢复流程。
数据迁移部分分别介绍:
  1. 全量备份恢复方式(适合数据库数量少、容量不大的场景)
  2. 单独备份角色权限 + 单独恢复数据库方式(适合生产环境、精细化迁移)

一、环境说明

本文环境:

操作系统:
Debian 13 (Trixie)

数据库:
PostgreSQL 17

安装方式:
apt

迁移方式:
pg_dump / pg_dumpall

适用场景:

  • ERP数据库
  • MES数据库
  • WMS/WCS数据库
  • 业务系统后台数据库
  • 中间库

二、Debian 13 系统初始化

1. 更新系统

apt update

apt upgrade -y

2. 设置服务器时区

数据库日志、任务调度、接口同步均依赖正确时间。

设置中国时区:

timedatectl set-timezone Asia/Shanghai

查看:

timedatectl

显示:

Time zone: Asia/Shanghai (CST, +0800)

3. 安装时间同步服务

安装:

apt install chrony -y

启动:

systemctl enable chrony

systemctl start chrony

查看同步状态:

chronyc sources

三、安装 PostgreSQL 17

1. 安装 PostgreSQL

Debian 13 默认提供 PostgreSQL 17:

apt install postgresql postgresql-contrib -y

查看版本:

psql --version

示例:

psql (PostgreSQL) 17.10

2. 查看数据库状态

Debian 使用 PostgreSQL Cluster 管理方式。

查看:

pg_lsclusters

正常:

Ver Cluster Port Status Owner
17  main    5432 online postgres

查看实际数据库服务:

systemctl status postgresql@17-main

正常:

Active: active (running)

注意:

执行:

systemctl status postgresql

可能显示:

Active: active (exited)

这是正常情况。

原因:

postgresql.service
        |
        |
        └── postgresql@17-main.service

真正运行的是:

postgresql@17-main

四、PostgreSQL 生产基础配置

配置目录:

/etc/postgresql/17/main/

主要配置文件:

postgresql.conf
pg_hba.conf

五、开启远程访问

1. 修改监听地址

编辑:

vim /etc/postgresql/17/main/postgresql.conf

找到:

#listen_addresses = 'localhost'

修改:

listen_addresses = '*'

2. 配置访问权限

编辑:

vim /etc/postgresql/17/main/pg_hba.conf

增加:

host    all    all    192.168.1.0/24    scram-sha-256

说明:

192.168.1.0/24

表示允许局域网访问。

生产环境不要直接开放:

0.0.0.0/0

避免数据库暴露公网。

3. 重启数据库

systemctl restart postgresql@17-main

检查端口:

ss -lntp | grep 5432

正常:

LISTEN 0 244 0.0.0.0:5432 postgres

六、设置 PostgreSQL 管理密码

进入数据库:

su - postgres

psql

设置密码:

ALTER USER postgres WITH PASSWORD '密码';

退出:

\q

七、数据库迁移方式一:全量备份恢复

适用场景

推荐:

  • 数据库数量少
  • 数据量不大
  • 一次性迁移

例如:

ERP       5GB
MES       3GB
WCS       2GB

总计10GB

使用:

pg_dumpall

1. 旧服务器全量备份

创建目录:

mkdir -p /backup/postgresql

执行:

pg_dumpall | gzip > /backup/postgresql/all_database.sql.gz

生成:

/backup/postgresql/

└── all_database.sql.gz

该文件包含:

✔ 所有数据库

✔ 用户角色

✔ 权限

✔ 表结构

✔ 数据

✔ 函数

✔ 序列

2. 传输备份文件

复制到 Debian13:

scp all_database.sql.gz root@新服务器IP:/backup/postgresql/

3. 全量恢复数据库

进入 postgres 用户:

su - postgres

执行:

gunzip -c /backup/postgresql/all_database.sql.gz | psql

等待恢复完成即可。

4. 恢复检查

查看数据库:

psql
\l

查看用户:

\du

查看表:

\c 数据库名

\dt

八、数据库迁移方式二:角色权限 + 单数据库恢复

适用场景

生产环境更推荐:

  • 多数据库
  • 需要单独迁移
  • 需要控制恢复过程

流程:

备份用户权限

        ↓

备份数据库

        ↓

恢复用户

        ↓

恢复数据库

1. 备份数据库角色

旧服务器:

pg_dumpall --roles-only > /backup/postgresql/roles.sql

生成:

roles.sql

内容包括:

  • 用户
  • 密码
  • 权限
  • 角色

2. 单独备份数据库

查看数据库:

psql
\l

例如:

erp
mes
wcs

备份:

pg_dump -Fc erp > /backup/postgresql/erp.dump

其他:

pg_dump -Fc mes > /backup/postgresql/mes.dump


pg_dump -Fc wcs > /backup/postgresql/wcs.dump

说明:

-Fc

表示 PostgreSQL custom 格式。

优势:

  • 支持并行恢复
  • 恢复速度快
  • 可以选择对象恢复

3. 恢复用户角色

复制:

scp roles.sql root@新服务器:/backup/postgresql/

恢复:

su - postgres

psql < /backup/postgresql/roles.sql

检查:

\du

4. 创建数据库

例如:

createdb erp

5. 恢复数据库

执行:

pg_restore \
-d erp \
/backup/postgresql/erp.dump

多个数据库:

pg_restore -d mes mes.dump

pg_restore -d wcs wcs.dump

九、大数据库恢复优化

如果数据库较大:

使用并行恢复:

pg_restore \
-j 8 \
-d erp \
erp.dump

参数:

-j 8

表示8线程恢复。

十、恢复后的数据库检查

查看数据库大小

SELECT
datname,
pg_size_pretty(pg_database_size(datname))
FROM pg_database;

查看数据表

\c 数据库名

\dt

查看最大表

SELECT
relname,
pg_size_pretty(pg_total_relation_size(relid))
FROM pg_catalog.pg_statio_user_tables
ORDER BY pg_total_relation_size(relid) DESC;

十一、PostgreSQL 生产参数优化

编辑:

vim /etc/postgresql/17/main/postgresql.conf

示例:

服务器:

CPU:8核
内存:32GB

调整:

shared_buffers = 8GB

effective_cache_size = 24GB

maintenance_work_mem = 1GB

work_mem = 64MB

max_connections = 200

checkpoint_completion_target = 0.9

重启:

systemctl restart postgresql@17-main

十二、数据库备份策略

生产环境建议:

每日备份

pg_dump -Fc 数据库名 > backup.dump

保留策略

例如:

每日备份

保留30天

重要数据异地备份


← 上一篇:Git 常用命令完整指南(包含修改远程服务器地址) 下一篇:无 →