PostgreSQL日常运维
目录
一、PostgreSQL基础操作
1.1 登录数据库
1.2 数据库管理
1.3 数据表操作
二、数据备份与恢复
2.1 备份工具pg_dump
2.2 恢复工具pg_restore与psql
2.3 备份策略建议
三、模式(Schema)
3.1 模式的核心作用
3.2 模式操作全流程
四、远程连接配置
4.1 pg_hba.conf配置
4.2 安全认证方法对比
4.3 防火墙配置
五、密码重置
安全重置流程:避免权限滥用
六、实践
6.1 日常维护 checklist
6.2 性能优化初阶:几个简单有效的调整
6.3 学习资源推荐
七、总结
一、PostgreSQL基础操作
1.1 登录数据库
- 用户权限逻辑:
PostgreSQL默认创建系统用户postgres
,该用户拥有数据库超级权限。登录时需先切换至postgres
系统用户,再通过psql
客户端连接数据库。
# 切换到postgres用户(需root权限)
[root@bogon ~]# su - postgres
# 启动psql终端(默认连接到postgres数据库)
[postgres@bogon ~]$ /usr/local/pgsql/bin/psql
# 成功登录后显示版本信息及提示符:postgres=#
- 关键说明:
-
psql
是PG的交互式终端,支持SQL语句与元命令(以\
开头)混合使用。 - 若提示“command not found”,需检查PG安装路径是否添加到系统环境变量。
1.2 数据库管理
1.2.1 列出数据库:三种方式的适用场景
方法 | 命令 | 输出特点 | 使用场景 |
元命令(简洁) | | 仅显示数据库名称、所有者 | 快速查看列表 |
扩展元命令 | | 包含Size(字节)、Tablespace、Description | 需了解存储详情 |
SQL查询 | | 基于系统表查询,可过滤条件 | 脚本化批量处理 |
- 系统表揭秘:
pg_database
存储于pg_catalog
模式,属于系统目录表,无需指定模式即可查询(因pg_catalog
默认在搜索路径首位)。
1.2.2 创建与删除数据库
-- 创建数据库(默认编码为UTF8,模板为template1)
CREATE DATABASE mydb WITH ENCODING 'UTF8' TEMPLATE template1;
-- 删除数据库(需确保无用户连接)
DROP DATABASE IF EXISTS mydb; -- 添加IF EXISTS避免报错
1.2.3 切换与查看数据库大小
\c mydb; -- 切换数据库,提示符变为mydb=#
-- 以友好格式显示数据库大小(自动转换为KB/MB/GB)
SELECT pg_size_pretty(pg_database_size('mydb'));
-- 输出示例:7417 kB
1.3 数据表操作
1.3.1 表的CRUD操作
- 创建表
PG除支持标准SQL类型(如INT
、VARCHAR
、TIMESTAMP
),还提供几何类型(如POINT
、POLYGON
)、数组类型(如INT[]
)及用户自定义类型。
CREATE TABLE employees (id SERIAL PRIMARY KEY, -- SERIAL自动生成唯一标识符name TEXT NOT NULL, -- TEXT类型存储长文本(无长度限制)salary NUMERIC(10, 2), -- 精确数值类型(总长度10,小数位2)hire_date DATE DEFAULT CURRENT_DATE -- 默认值为当前日期
);
- 复制表
-- 仅复制表结构(不含数据)
CREATE TABLE employees_backup AS TABLE employees WITH NO DATA;
-- 复制结构+数据
CREATE TABLE employees_backup AS TABLE employees;
1.3.2 表的元命令查询
元命令 | 功能 | 示例输出 |
| 列出当前数据库public模式下的表 | 架构模式 |
| 列出表、视图、序列并显示详细属性(如字段类型、注释) | 栏位 |
| 列出指定模式下的所有表 | 架构模式 |
二、数据备份与恢复
2.1 备份工具pg_dump
2.1.1 全库备份
# 备份整个mydb数据库到文件(需指定用户名,-W提示输入密码)
pg_dump -U postgres -h localhost -W mydb > full_backup.sql
# 压缩备份文件(节省存储空间)
pg_dump -U postgres mydb | gzip > full_backup.sql.gz
2.1.2 增量备份
# 备份自上次全量备份以来的所有变化(需结合WAL日志)
pg_dump -U postgres --schema-only mydb > schema_backup.sql # 备份模式结构
pg_dump -U postgres --data-only mydb > data_backup.sql # 备份数据
2.1.3 跨版本备份
# 备份为纯SQL脚本(兼容低版本PG)
pg_dump -U postgres --schema-and-data --format=p mydb > legacy_backup.sql
2.2 恢复工具pg_restore与psql
2.2.1 文本格式恢复:最通用的恢复方式
# 步骤1:创建目标数据库(基于template0避免继承无关数据)
createdb -T template0 -O postgres new_mydb
# 步骤2:执行恢复(遇到错误立即终止)
psql -U postgres -d new_mydb -f full_backup.sql --set ON_ERROR_STOP=on
2.2.2 自定义格式恢复:更高效率的二进制方案
# 备份时使用自定义格式(-F c)
pg_dump -U postgres -F c mydb > mydb.dump
# 恢复时指定格式并选择性恢复(如仅恢复hr模式)
pg_restore -U postgres -d new_mydb -n hr mydb.dump
2.3 备份策略建议
场景 | 备份类型 | 频率 | 存储位置 |
生产环境 | 全量备份+增量备份 | 全量每周,增量每日 | 异地磁盘+云存储 |
开发测试 | 全量备份 | 按需 | 本地存储 |
关键业务 | 连续归档(结合pg_basebackup) | 实时 | 独立备份服务器 |
三、模式(Schema)
3.1 模式的核心作用
- 避免命名冲突:同一数据库中不同模式可存在同名表(如
hr.employees
与finance.employees
)。 - 权限隔离:通过模式权限控制(如
GRANT USAGE ON SCHEMA hr TO app_user
),实现数据分层访问。 - 架构清晰化:按业务模块划分模式(如
public
存放公共表,admin
存放管理表)。
3.2 模式操作全流程
3.2.1 创建与删除模式
-- 创建模式并指定所有者
CREATE SCHEMA hr AUTHORIZATION app_admin;
-- 删除模式及其中所有对象(CASCADE级联删除)
DROP SCHEMA IF EXISTS hr CASCADE;
3.2.2 跨模式查询
-- 显式指定模式(推荐方式,避免歧义)
SELECT * FROM hr.employees WHERE salary > 10000;
-- 通过搜索路径隐式查询(需先设置search_path)
SET search_path TO hr, public; -- 优先搜索hr模式
SELECT * FROM employees; -- 等价于SELECT * FROM hr.employees;
3.2.3 模式与权限结合:细粒度访问控制
-- 授予用户使用模式的权限
GRANT USAGE ON SCHEMA hr TO app_user;
-- 授予用户查询hr模式下所有表的权限
GRANT SELECT ON ALL TABLES IN SCHEMA hr TO app_user;
四、远程连接配置
4.1 pg_hba.conf配置
# 规则格式:<连接类型> <数据库> <用户> <地址/掩码> <认证方法>
# 示例1:允许IP段192.168.1.0/24内的所有用户通过md5密码认证连接mydb数据库
host mydb all 192.168.1.0/24 md5
# 示例2:允许任意IP的postgres用户通过scram-sha-256认证连接所有数据库(生产推荐)
host all postgres 0.0.0.0/0 scram-sha-256
4.2 安全认证方法对比
认证方法 | 原理 | 安全性 | 配置要点 |
| 无需认证直接连接 | 低 | 仅用于本地或受信任网络(如127.0.0.1/32) |
| 密码加密传输(MD5哈希) | 中 | 需设置用户密码( |
| 安全密码哈希(SHA-256算法) | 高 | PG 10+默认推荐,需客户端支持 |
| 基于系统用户名认证 | 中 | 适用于Linux本地用户与数据库用户同名场景 |
4.3 防火墙配置
# Linux系统(以firewalld为例)开放PG默认端口5432
firewall-cmd --add-port=5432/tcp --permanent
firewall-cmd --reload
五、密码重置
安全重置流程:避免权限滥用
备份配置文件(关键!防止操作失误):
cp /var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/data/pg_hba.conf.bak
临时信任本地连接:
修改pg_hba.conf
,将本地连接规则改为trust
:
# 原规则(可能为scram-sha-256或md5)
host all all 127.0.0.1/32 scram-sha-256
# 修改后(临时允许本地无密码登录)
host all all 127.0.0.1/32 trust
重启服务并登录:
systemctl restart postgresql
psql -U postgres # 无需密码直接进入
修改密码(强密码原则:8位以上,含大小写、数字、符号):
ALTER USER postgres WITH PASSWORD 'P@ssw0rd!';
恢复配置并验证:
# 还原pg_hba.conf
mv /var/lib/pgsql/data/pg_hba.conf.bak /var/lib/pgsql/data/pg_hba.conf
systemctl restart postgresql
# 验证连接(需输入新密码)
psql -U postgres -d postgres -W
六、实践
6.1 日常维护 checklist
- 每周执行全量备份,每日检查备份日志
- 每月审计用户权限(通过
\du
查看用户角色,\z
查看表权限) - 定期清理无用数据库与表(使用
DROP DATABASE
/DROP TABLE
,结合VACUUM ANALYZE
回收空间)
6.2 性能优化初阶:几个简单有效的调整
- 设置搜索路径:将常用模式置于首位(如
SET search_path TO hr, public;
减少跨模式查询开销) - 避免全表扫描:为高频查询字段添加索引(
CREATE INDEX idx_employees_name ON employees(name);
) - 合理使用视图:通过
CREATE VIEW
封装复杂查询,提升SQL复用性
6.3 学习资源推荐
- 官方文档:PostgreSQL Documentation(权威但需一定基础)
- 社区工具:
pgAdmin
(图形化管理工具,适合新手)、pg_stat_statements
(查询分析扩展) - 实战项目:尝试用PG搭建博客系统或数据分析平台,实践库表设计与备份策略
七、总结
通过本文,你已掌握PostgreSQL从基础操作到安全配置的核心技能。无论是数据库的增删改查、模式的逻辑隔离,还是远程连接的安全控制与密码重置的应急处理,均需结合实际场景反复练习。记住:数据库运维的核心是严谨性与预防性——提前制定备份策略、定期审计权限、关注版本更新(PG每年发布一个大版本,含重要安全修复),才能让你的数据库系统在复杂环境中稳健运行。
相关文章:
PostgreSQL日常运维
目录 一、PostgreSQL基础操作 1.1 登录数据库 1.2 数据库管理 1.3 数据表操作 二、数据备份与恢复 2.1 备份工具pg_dump 2.2 恢复工具pg_restore与psql 2.3 备份策略建议 三、模式(Schema) 3.1 模式的核心作用 3.2 模式操作全流程 四、远程连…...

<< C程序设计语言第2版 >> 练习 1-23 删除C语言程序中所有的注释语句
1. 前言 本篇文章介绍的是实现删除C语言源文件中所有注释的功能.希望可以给C语言初学者一点参考.代码测试并不充分, 所以肯定还有bug, 有兴趣的同学可以改进. 原题目是: 练习1-23 编写一个删除C语言程序中所有的注释语句. 要正确处理带引号的字符串与字符常量. 在C语言中, 注释…...

Fluence (FLT) 2026愿景:RWA代币化加速布局AI算力市场
2025年5月29日,苏黎世 - Fluence,企业级去中心化计算平台,荣幸地揭开其2026愿景的面纱,并宣布将于6月1日起启动四大新举措。 Fluence 成功建立、推出并商业化了其去中心化物理基础设施计算网络(DePIN)&…...

如何撰写一篇优质 Python 相关的技术文档 进阶指南
💝💝💝在 Python 项目开发与协作过程中,技术文档如同与团队沟通的桥梁,能极大提高工作效率。但想要打造一份真正实用且高质量的 Python 技术文档类教程,并非易事,需要在各个环节深入思考与精心打…...
选择if day5
5.scanf(“空白符”) 空白符作用表示匹配任意多个空白符 进入了内存缓冲区(本质就是一块内存空间) 6.scanf读取问题: a.遇到非法字符读取结束 2. %*d * 可以跳过一个字符 eg:%d%*d%d 读取第一和第三个字符…...

MiniMax V-Triune让强化学习(RL)既擅长推理也精通视觉感知
MiniMax 近日在github上分享了技术研究成果——V-Triune,这次MiniMax V-Triune的发布既是AI视觉技术也是应用工程上的一次“突围”,让强化学习(RL)既擅长推理也精通视觉感知,其实缓解了传统视觉RL“鱼和熊掌不可兼得”…...

Hash 的工程优势: port range 匹配
昨天和朋友聊到 “如何匹配一个 port range”,觉得挺有意思,简单写篇散文。 回想起十多年前,我移植并优化了 nf-HiPAC,当时还看不上 ipset hash,后来大约七八年前,我又舔 nftables,因为用它可直…...
同为.net/C#的跨平台运行时的mono和.net Core有什么区别?
Mono 和 .NET Core(现已统一为 .NET)都是 .NET 生态的跨平台实现,但它们在设计目标、技术特性和应用场景上有显著区别。以下是详细对比: 1. 历史背景 项目诞生时间开发者当前状态Mo…...
前端安全直传MinIO方案
目的:前端直接上传文件到Minio,不通过服务器中转文件。密钥不能在前端明文传输。 ## 一、架构设计 mermaid sequenceDiagram 前端->>后端: 1.请求上传凭证 后端->>MinIO: 2.生成预签名URL 后端-->>前端: 3.返回预签名URL 前端->…...

HackMyVM-Dejavu
信息搜集 主机发现 ┌──(root㉿kali)-[~] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:39:60:4c, IPv4: 192.168.43.126 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.43.1 c6:45:66:05:91:88 …...
LeetCode Hot100(动态规划)
70. 爬楼梯 题目: 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 题解: 不难发现,每一次都是从i-1或者i-2爬上来的,我们加起来求和即可 class So…...

Opencv实用操作5 图像腐蚀膨胀
相关函数 腐蚀函数 img1_erosion cv2.erode(img1,kernel,iterations1) (图片,卷积核,次数) 膨胀函数 img_dilate cv2.dilate(img2,kernel1,iterations1) (图片,卷积核,次数)…...

【赵渝强老师】OceanBase的部署架构
OceanBase数据库支持无共享(Shared-Nothing,SN)模式和共享存储(Shared-Storage,SS)模式两种部署架构。 一、 无共享(Shared-Nothing,SN)模式 在SN模式下,各…...
(18)混合云架构部署
文章目录 🚀 混合云架构部署:Java应用的云原生之旅🌩️ 混合云架构简介⚡ Java应用云原生部署五大核心技术1️⃣ 容器化与编排技术2️⃣ 服务网格与API网关3️⃣ CI/CD自动化流水线4️⃣ 多云管理平台5️⃣ 云原生Java框架与运行时 …...
c/c++的opencv霍夫变换
OpenCV中的霍夫变换 (C/C) Hough Transform 霍夫变换 (Hough Transform) 是一种在图像分析中用于检测几何形状(如直线、圆形等)的特征提取技术。它通过一种投票机制在参数空间中寻找特定形状的实例。OpenCV 库为 C 开发者提供了强大且易用的霍夫变换函数…...
AAOS系列之(七) --- AudioRecord录音逻辑分析(一)
一文讲透AAOS架构,点到为止不藏私 📌 这篇帖子给大家分析下 AudioRecord的初始化 1. 场景介绍: 在 AAOS 的 Framework 开发中,录音模块几乎是每个项目都会涉及的重要组成部分。无论是语音控制、车内对讲(同行者模式)…...
MySQL大表结构变更利器:pt-online-schema-change原理与实战指南
MySQL大表结构变更利器:pt-online-schema-change原理与实战指南 MySQL数据库运维中,最令人头疼的问题之一莫过于对大表进行结构变更(DDL操作)。传统的ALTER TABLE操作会锁表,导致业务长时间不可用,这在724小时运行的互联网业务中是不可接受的。本文将深入剖析Percona To…...

LangChain【3】之进阶内容
文章目录 说明一 LangChain Chat Model1.1 少量示例提示(Few-Shot Prompting)1.2 Few-Shot示例代码1.3 示例选择器(Eample selectors)1.4 ExampleSelector 类型1.5 ExampleSelector案例代码1.6 LangServe工具1.7 LangServe安装1.8 langchain项目结构1.9 …...

大规模JSON反序列化性能优化实战:Jackson vs FastJSON深度对比与定制化改造
背景:500KB JSON处理的性能挑战 在当今互联网复杂业务场景中,处理500KB以上的JSON数据已成为常态。 常规反序列化方案在CPU占用(超30%)和内存峰值(超原始数据3-5倍)方面表现堪忧。 本文通过Jackson与Fas…...
【OpenSearch】高性能 OpenSearch 数据导入
高性能 OpenSearch 数据导入 1.导入依赖库2.配置参数3.OpenSearch 客户端初始化4.创建索引函数5.数据生成器6.批量处理函数7.主导入函数7.1 函数定义和索引创建7.2 优化索引设置(导入前)7.3 初始化变量和打印开始信息7.4 线程池设置7.5 主数据生成和导入…...
HTML5有那些更新
语义化标签 header 头部nav 导航栏footer 底部aside 内容的侧边栏 媒体标签 audio 音频播放video 视频播放 dom查询 document.querySelector,document.querySelectorAll他们选择的对象可以是标签,也可以是类(需要加点),也可以是ID(需要加#) web存储 localStorage和sessi…...

AWS EC2 实例告警的创建与删除
在AWS云环境中,监控EC2实例的运行状态至关重要。通过CloudWatch告警,用户可以实时感知实例的CPU、网络、磁盘等关键指标异常。本文将详细介绍如何通过AWS控制台创建EC2实例告警,以及如何安全删除不再需要的告警规则,并附操作截图与…...

STM32 搭配 嵌入式SD卡在智能皮电手环中的应用全景评测
在智能皮电手环及数据存储技术不断迭代的当下,主控 MCU STM32H750 与存储 SD NAND MKDV4GIL-AST 的强强联合,正引领行业进入全新发展阶段。二者凭借低功耗、高速读写与卓越稳定性的深度融合,以及高容量低成本的突出优势,成为大规模…...

黑马点评项目01——短信登录以及登录校验的细节
1.短信登录 1.1 Session方式实现 前端点击发送验证码,后端生成验证码后,向session中存放键值对,键是"code",值是验证码;然后,后端生成sessionID以Cookie的方式发给前端,前端拿到后&a…...

【笔记】Windows 系统安装 Scoop 包管理工具
#工作记录 一、问题背景 在进行开源项目 Suna 部署过程中,执行设置向导时遭遇报错:❌ Supabase CLI is not installed. 根据资料检索,需通过 Windows 包管理工具Scoop安装 Supabase CLI。 初始尝试以管理员身份运行 PowerShell 安装 Scoop…...
LVS + Keepalived高可用群集
目录 一:keepalived双击热备基础知识 1.keepalived概述及安装 1.1keepalived的热备方式 1.2keepalived的安装与服务控制 (1)安装keepalived (2)控制keepalived服务 2.使用keepalived实现双击热备. 2.1主服务器的…...

MySQL之约束和表的增删查改
MySQL之约束和表的增删查改 一.数据库约束1.1数据库约束的概念1.2NOT NULL 非空约束1.3DEFAULT 默认约束1.4唯一约束1.5主键约束和自增约束1.6自增约束1.7外键约束1.8CHECK约束 二.表的增删查改2.1Create创建2.2Retrieve读取2.3Update更新2.4Delete删除和Truncate截断 一.数据库…...
Greenplum:PB级数据分析的分布式引擎,揭开MPP架构的终极武器
一、Greenplum是谁?—— 定位与诞生背景 核心定位:基于PostgreSQL的开源分布式分析型数据库(OLAP),专为海量数据分析设计,支撑PB级数据仓库、商业智能(BI)和实时决策系统。 诞生背…...

Oracle数据库性能优化的最佳实践
原创:厦门微思网络 以下是 Oracle 数据库性能优化的最佳实践,涵盖设计、SQL 优化、索引管理、系统配置等关键维度,帮助提升数据库响应速度和稳定性: 一、SQL 语句优化 1. 避免全表扫描(Full Table Scan)…...
云原生时代 Kafka 深度实践:02快速上手与环境搭建
2.1 本地开发环境搭建 单机模式安装 下载与解压:前往Apache Kafka 官网,下载最新稳定版本的 Kafka 二进制包(如kafka_2.13-3.6.0.tgz,其中2.13为 Scala 版本)。解压到本地目录,例如/opt/kafka:…...