PostgreSQL 日常维护核心内容总结

本文围绕 PostgreSQL(简称 pgsql)日常运维核心需求,从基础使用、备份与恢复、远程连接配置、密码重置四大核心板块,详细讲解了 PostgreSQL 的实操命令与关键配置,覆盖库表管理、模式(Schema)操作、数据操作等基础能力,以及备份恢复、远程访问、账户安全等运维必备技能,同时明确了 PostgreSQL 的特有特性(如模式隔离、系统表 / 视图),为 PostgreSQL 的日常管理与基础运维提供了完整的实操方案。

一、基础使用:核心操作与元命令

PostgreSQL 的基础操作需通过postgres 超级用户 执行,交互式终端 psql 中以\开头的元命令是快速管理的核心(类似 MySQL 的 SHOW 语句),同时支持标准 SQL 命令,核心操作涵盖数据库、数据表、模式、数据四大维度,且内置系统表 / 视图用于查询元信息。

(一)核心元命令速查

PostgreSQL 的元命令是日常操作的核心,常用元命令如下:

表格

元命令 功能 补充
\l 列出所有数据库 \l+ 扩展输出(含大小、表空间、描述)
\c 库名 切换数据库 等价于 \connect 库名
\dn 列出所有模式 -
\db 列出所有表空间 -
\dt 列出当前库的所有表 \dt 模式.* 查指定模式表;\dt . 查所有表(含系统表)
\d 表名 查看表结构 \d+ 扩展输出表详细信息
\du 列出所有用户 -
? 查看元命令帮助 -
\q 退出 psql 终端 -

(二)数据库操作

支持元命令 + SQL 命令双方式操作,可实现库的增删查、切换、大小查看,核心依赖pg_database 系统表(存储所有数据库元信息,类似 MySQL 的 information_schema):

  1. 查库:\l / \l+ / SELECT datname FROM pg_database;
  2. 建库:CREATE DATABASE 库名;
  3. 删库:DROP DATABASE 库名;
  4. 切换库:\c 库名;
  5. 查库大小:pg_database_size (' 库名 ')(字节);pg_size_pretty (pg_database_size (' 库名 '))(人性化单位,如 kB/MB)。

(三)数据表操作

支持标准 SQL 类型,还可自定义数据类型,核心操作含增删查、结构查看、表复制,可通过pg_tables 视图查询表元信息:

  1. 查表:\dt / \d / SELECT * FROM pg_tables WHERE schemaname='public';
  2. 建表:CREATE TABLE 表名 (字段 类型,...);(如 CREATE TABLE test (id int,name char (10));)
  3. 复制表:CREATE TABLE 新表 AS TABLE 原表;(复制表结构 + 数据)
  4. 删表:DROP TABLE 表名;
  5. 查结构:\d 表名;

(四)模式(Schema)操作

模式是 PostgreSQL 的特有核心特性 ,为数据库内的逻辑容器(类似文件系统文件夹),用于组织数据库对象、避免命名冲突、实现权限隔离,与 MySQL 无此概念有显著区别,核心操作如下:

  1. 核心特性:同一数据库中不同模式可存在同名表,跨模式查询需显式指定模式名(如 schema1.users)或通过 search_path 设置默认模式;
  2. 建模式:CREATE SCHEMA 模式名;
  3. 删模式:DROP SCHEMA 模式名;(空模式);DROP SCHEMA 模式名 CASCADE;(强制删除模式 + 所有对象)
  4. 查模式:\dn / SELECT schema_name FROM information_schema.schemata;
  5. 默认模式:所有数据库默认含public 模式,未指定模式时对象默认创建在 public 中;
  6. 搜索路径(search_path):控制模式解析优先级,类似 PATH 环境变量,SHOW search_path; 查看,SET search_path TO 模式 1, 模式 2; 修改;
  7. 建表到指定模式:CREATE TABLE 模式名。表名 (字段 类型,...);
  8. 查当前模式:SELECT current_schema ();

(五)数据操作

支持标准 SQL 的增删改查,语法简单且与 MySQL 基本一致:

  1. 新增:INSERT INTO 表名 VALUES (值 1, 值 2,...);
  2. 查询:SELECT * FROM 表名 WHERE 条件;
  3. 修改:UPDATE 表名 SET 字段 = 值 WHERE 条件;
  4. 删除:DELETE FROM 表名 WHERE 条件;

二、备份与恢复:三种方式 + 核心工具

PostgreSQL 需定期备份,核心有SQL 转储、文件系统级备份、连续归档 三种方式,其中SQL 转储 为日常主流方式,依赖pg_dump(备份)、psql/pg_restore(恢复)、pg_dumpall(整簇备份)三大工具,备份文件可跨版本、跨架构迁移,且备份过程不阻塞普通数据库操作。

(一)核心备份方式:SQL 转储

  1. 核心工具:pg_dump,为 PostgreSQL 客户端应用,可远程备份,需超级用户权限(或指定表 / 模式的读权限);
  2. 基本用法:pg_dump 库名 > 备份文件(输出为 SQL 文本文件);
  3. 远程备份:指定主机 / 端口 / 用户,pg_dump -h 主机 -p 端口 -U 用户 库名 > 备份文件
  4. 备份特性:备份为数据库快照,仅包含备份开始时刻的数,备份过程中更新的数据不被记录;不阻塞普通操作,仅阻塞需排他锁的操作(如 ALTER TABLE)。

(二)恢复操作

根据备份文件类型选择恢复工具,文本文件用psql,非文本文件用pg_restore,恢复前需手动创建空数据库(基于 template0):

  1. 基本恢复:psql 库名 < 备份文件(恢复前需执行createdb -T template0 库名创建空库);
  2. 严格恢复:psql --set ON_ERROR_STOP=on 库名 < 备份文件(遇错误立即退出);
  3. 事务级恢复:psql -1 库名 < 备份文件(整库恢复为单个事务,要么全成要么全回滚);
  4. 跨服务器直接迁移:pg_dump -h 源主机 库名 | psql -h 目标主机 库名(通过管道直接传输,无需中间文件);
  5. 恢复后优化:执行ANALYZE更新统计信息,供查询优化器使用。

(三)整簇备份:pg_dumpall

pg_dump仅备份单个数据库,pg_dumpall 用于备份整个数据库集簇(所有数据库 + 集簇级信息:角色、表空间),核心用法:

  1. 备份:pg_dumpall > 备份文件
  2. 恢复:psql -f 备份文件 postgres(恢复到 postgres 库,需超级用户权限);
  3. 单独备份集簇信息:pg_dumpall --globals-only(仅备份角色、表空间,配合 pg_dump 实现整簇完整备份)。

三、远程连接配置:两步核心配置 + 认证方式

PostgreSQL 默认仅允许本地(127.0.0.1)连接,远程连接需修改监听地址访问权限 两大配置文件,同时支持多种认证方式,开发 / 测试环境可用trust(免密),生产环境需用安全认证(如 scram-sha-256/md5)。

(一)核心配置文件路径

根据安装方式不同,配置文件路径不同,核心为postgresql.conf(监听配置)和pg_hba.conf(访问权限):

  1. dnf/yum 安装:/var/lib/pgsql/data/;
  2. 源码编译安装:/usr/local/pgsql/data/。

(二)两步配置实现远程连接

  1. 修改监听地址 :编辑postgresql.conf,将listen_addresses = 'localhost'改为listen_addresses = '*'(监听所有 IP),重启服务systemctl restart postgresql
  2. 配置访问权限 :编辑pg_hba.conf,在IPv4 local connections下添加规则,格式为host 数据库 用户名 客户端IP 认证方式,示例:host all all 0.0.0.0/0 trust(允许所有 IP、所有用户、所有库远程连接,免密认证);
  3. 重启服务:systemctl restart postgresql,验证端口:ss -tnl(查看 5432 端口是否监听 0.0.0.0)。

(三)认证方式说明

  1. trust:免密认证,直接连接,仅适用于开发 / 测试环境,生产环境禁止使用;
  2. scram-sha-256/md5 :密码认证,PostgreSQL 新版本推荐scram-sha-256,需先为用户设置密码:ALTER USER postgres WITH PASSWORD '密码';
  3. ident:本地认证,适用于本地连接(默认配置)。

(四)远程连接验证

客户端执行命令,根据认证方式选择是否输入密码:

  1. 免密(trust):psql -h 服务器IP -U postgres
  2. 密码认证(scram-sha-256/md5):psql -h 服务器IP -U postgres,按提示输入密码即可。

四、密码重置:五步实操,快速恢复账户

忘记 PostgreSQL 超级用户(postgres)密码时,可通过修改pg_hba.conf临时开启本地免密认证,重置密码后恢复原配置,核心为五步实操,全程需 root 权限操作:

  1. 备份配置文件 :备份 pg_hba.conf,防止配置丢失:cp /var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/data/pg_hba.conf.bak
  2. 修改认证方式 :编辑 pg_hba.conf,将本地 IPv4 连接的认证方式(scram-sha-256/md5)改为trust,示例:host all all 127.0.0.1/32 trust
  3. 重启服务 :使配置生效,systemctl restart postgresql
  4. 重置密码 :以 postgres 用户登录,执行ALTER USER postgres WITH PASSWORD '新密码';
  5. 恢复原配置 :将备份的配置文件覆盖原文件,cp /var/lib/pgsql/data/pg_hba.conf.bak /var/lib/pgsql/data/pg_hba.conf,重启服务即可,后续登录需输入新密码。

五、核心总结

  1. 操作核心 :PostgreSQL 日常操作依赖postgres 超级用户元命令,元命令是快速管理的关键,同时支持标准 SQL,系统表 / 视图(pg_database、pg_tables)是查询元信息的基础;
  2. 特有特性模式(Schema) 是 PostgreSQL 与 MySQL 的核心区别之一,作为数据库内的逻辑容器,可实现对象隔离、避免命名冲突,需通过 search_path 控制解析优先级;
  3. 备份恢复SQL 转储 是日常主流方式,pg_dump(单库)、pg_dumpall(整簇)为核心工具,备份文件可跨版本、跨架构迁移,恢复前需手动创建基于 template0 的空数据库;
  4. 远程连接 :核心为修改监听地址(postgresql.conf)访问权限(pg_hba.conf),认证方式需区分环境,开发 / 测试用 trust,生产用 scram-sha-256/md5;
  5. 账户安全:密码重置通过临时修改 pg_hba.conf 开启本地免密实现,操作后必须恢复原配置,保障数据库安全;
  6. 运维要点:PostgreSQL 的配置文件路径随安装方式变化,日常操作需注意区分;所有配置修改后均需重启服务生效,备份恢复后建议执行 ANALYZE 优化查询。

掌握以上内容可独立完成 PostgreSQL 的基础运维工作,包括库表管理、模式设计、备份恢复、远程访问、账户安全等,为后续性能调优、高可用部署等高级功能打下基础。

相关推荐
倔强的石头1062 小时前
数据库行标识符机制探究:OID、ROWID与自增主键的实现与应用
数据库·oracle·kingbase
quintin-lee2 小时前
Postgres 内核:从入门到“入土” (三) —— Page 结构:数据是如何在磁盘上“躺平”的
c语言·数据库·postgresql·数据库架构
不愿透露姓名的大鹏3 小时前
MySQL Binlog配置优化全攻略
运维·服务器·数据库·mysql·adb
柒.梧.3 小时前
MySQL核心考点:存储引擎区别+视图详解
数据库·mysql·面试
电商API&Tina3 小时前
跨境电商如何接入1688官方寻源通接口?附接入流程
java·数据库·python·sql·oracle·json·php
明月_清风3 小时前
🚀 Flyway 存量数据库迁移:50张表一键导出清洗实战(附完整脚本)
数据库·后端
孤影过客3 小时前
Linux下的PostgreSQL集群演进指南
linux·运维·postgresql
羊小蜜.3 小时前
Mysql 08: 数据表基本操作——从创建到约束
数据库·mysql·数据表
程序员小郭833 小时前
MySQL分库分表策略全解析(实战版)
数据库·mysql·架构