当前位置: 首页 > article >正文

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 列出数据库:三种方式的适用场景

方法

命令

输出特点

使用场景

元命令(简洁)

​\l​

仅显示数据库名称、所有者

快速查看列表

扩展元命令

​\l+​

包含Size(字节)、Tablespace、Description

需了解存储详情

SQL查询

​SELECT datname FROM pg_database;​

基于系统表查询,可过滤条件

脚本化批量处理

  • 系统表揭秘
    ​​​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 表的元命令查询

元命令

功能

示例输出

​\dt​

列出当前数据库public模式下的表

架构模式

​\d+​

列出表、视图、序列并显示详细属性(如字段类型、注释)

栏位

​\dt my_schema.*​

列出指定模式下的所有表

架构模式

二、数据备份与恢复

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 安全认证方法对比

认证方法

原理

安全性

配置要点

​trust​

无需认证直接连接

仅用于本地或受信任网络(如127.0.0.1/32)

​md5​

密码加密传输(MD5哈希)

需设置用户密码(​​ALTER USER WITH PASSWORD​​)

​scram-sha-256​

安全密码哈希(SHA-256算法)

PG 10+默认推荐,需客户端支持

​ident​

基于系统用户名认证

适用于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 备份策略建议 三、模式&#xff08;Schema&#xff09; 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日&#xff0c;苏黎世 - Fluence&#xff0c;企业级去中心化计算平台&#xff0c;荣幸地揭开其2026愿景的面纱&#xff0c;并宣布将于6月1日起启动四大新举措。 Fluence 成功建立、推出并商业化了其去中心化物理基础设施计算网络&#xff08;DePIN&#xff09;&…...

如何撰写一篇优质 Python 相关的技术文档 进阶指南

&#x1f49d;&#x1f49d;&#x1f49d;在 Python 项目开发与协作过程中&#xff0c;技术文档如同与团队沟通的桥梁&#xff0c;能极大提高工作效率。但想要打造一份真正实用且高质量的 Python 技术文档类教程&#xff0c;并非易事&#xff0c;需要在各个环节深入思考与精心打…...

选择if day5

5.scanf&#xff08;“空白符”&#xff09; 空白符作用表示匹配任意多个空白符 进入了内存缓冲区&#xff08;本质就是一块内存空间&#xff09; 6.scanf读取问题&#xff1a; a.遇到非法字符读取结束 2. %*d * 可以跳过一个字符 eg&#xff1a;%d%*d%d 读取第一和第三个字符…...

MiniMax V-Triune让强化学习(RL)既擅长推理也精通视觉感知

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

Hash 的工程优势: port range 匹配

昨天和朋友聊到 “如何匹配一个 port range”&#xff0c;觉得挺有意思&#xff0c;简单写篇散文。 回想起十多年前&#xff0c;我移植并优化了 nf-HiPAC&#xff0c;当时还看不上 ipset hash&#xff0c;后来大约七八年前&#xff0c;我又舔 nftables&#xff0c;因为用它可直…...

同为.net/C#的跨平台运行时的mono和.net Core有什么区别?

Mono 和 .NET Core&#xff08;现已统一为 .NET&#xff09;都是 .NET 生态的跨平台实现&#xff0c;但它们在设计目标、技术特性和应用场景上有显著区别。以下是详细对比&#xff1a; ​​1. 历史背景​​ ​​项目​​​​诞生时间​​​​开发者​​​​当前状态​​​​Mo…...

前端安全直传MinIO方案

目的&#xff1a;前端直接上传文件到Minio&#xff0c;不通过服务器中转文件。密钥不能在前端明文传输。 ## 一、架构设计 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. 爬楼梯 题目&#xff1a; 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 题解&#xff1a; 不难发现&#xff0c;每一次都是从i-1或者i-2爬上来的&#xff0c;我们加起来求和即可 class So…...

Opencv实用操作5 图像腐蚀膨胀

相关函数 腐蚀函数 img1_erosion cv2.erode(img1,kernel,iterations1) &#xff08;图片&#xff0c;卷积核&#xff0c;次数&#xff09; 膨胀函数 img_dilate cv2.dilate(img2,kernel1,iterations1) &#xff08;图片&#xff0c;卷积核&#xff0c;次数&#xff09;…...

【赵渝强老师】OceanBase的部署架构

OceanBase数据库支持无共享&#xff08;Shared-Nothing&#xff0c;SN&#xff09;模式和共享存储&#xff08;Shared-Storage&#xff0c;SS&#xff09;模式两种部署架构。 一、 无共享&#xff08;Shared-Nothing&#xff0c;SN&#xff09;模式 在SN模式下&#xff0c;各…...

(18)混合云架构部署

文章目录 &#x1f680; 混合云架构部署&#xff1a;Java应用的云原生之旅&#x1f329;️ 混合云架构简介⚡ Java应用云原生部署五大核心技术1️⃣ 容器化与编排技术2️⃣ 服务网格与API网关3️⃣ CI/CD自动化流水线4️⃣ 多云管理平台5️⃣ 云原生Java框架与运行时 &#x1f…...

c/c++的opencv霍夫变换

OpenCV中的霍夫变换 (C/C) Hough Transform 霍夫变换 (Hough Transform) 是一种在图像分析中用于检测几何形状&#xff08;如直线、圆形等&#xff09;的特征提取技术。它通过一种投票机制在参数空间中寻找特定形状的实例。OpenCV 库为 C 开发者提供了强大且易用的霍夫变换函数…...

AAOS系列之(七) --- AudioRecord录音逻辑分析(一)

一文讲透AAOS架构&#xff0c;点到为止不藏私 &#x1f4cc; 这篇帖子给大家分析下 AudioRecord的初始化 1. 场景介绍: 在 AAOS 的 Framework 开发中&#xff0c;录音模块几乎是每个项目都会涉及的重要组成部分。无论是语音控制、车内对讲&#xff08;同行者模式&#xff09;…...

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 示例选择器&#xff08;Eample selectors&#xff09;1.4 ExampleSelector 类型1.5 ExampleSelector案例代码1.6 LangServe工具1.7 LangServe安装1.8 langchain项目结构1.9 …...

大规模JSON反序列化性能优化实战:Jackson vs FastJSON深度对比与定制化改造

背景&#xff1a;500KB JSON处理的性能挑战 在当今互联网复杂业务场景中&#xff0c;处理500KB以上的JSON数据已成为常态。 常规反序列化方案在CPU占用&#xff08;超30%&#xff09;和内存峰值&#xff08;超原始数据3-5倍&#xff09;方面表现堪忧。 本文通过Jackson与Fas…...

【OpenSearch】高性能 OpenSearch 数据导入

高性能 OpenSearch 数据导入 1.导入依赖库2.配置参数3.OpenSearch 客户端初始化4.创建索引函数5.数据生成器6.批量处理函数7.主导入函数7.1 函数定义和索引创建7.2 优化索引设置&#xff08;导入前&#xff09;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云环境中&#xff0c;监控EC2实例的运行状态至关重要。通过CloudWatch告警&#xff0c;用户可以实时感知实例的CPU、网络、磁盘等关键指标异常。本文将详细介绍如何通过AWS控制台创建EC2实例告警&#xff0c;以及如何安全删除不再需要的告警规则&#xff0c;并附操作截图与…...

STM32 搭配 嵌入式SD卡在智能皮电手环中的应用全景评测

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

黑马点评项目01——短信登录以及登录校验的细节

1.短信登录 1.1 Session方式实现 前端点击发送验证码&#xff0c;后端生成验证码后&#xff0c;向session中存放键值对&#xff0c;键是"code"&#xff0c;值是验证码&#xff1b;然后&#xff0c;后端生成sessionID以Cookie的方式发给前端&#xff0c;前端拿到后&a…...

【笔记】Windows 系统安装 Scoop 包管理工具

#工作记录 一、问题背景 在进行开源项目 Suna 部署过程中&#xff0c;执行设置向导时遭遇报错&#xff1a;❌ Supabase CLI is not installed. 根据资料检索&#xff0c;需通过 Windows 包管理工具Scoop安装 Supabase CLI。 初始尝试以管理员身份运行 PowerShell 安装 Scoop…...

LVS + Keepalived高可用群集

目录 一&#xff1a;keepalived双击热备基础知识 1.keepalived概述及安装 1.1keepalived的热备方式 1.2keepalived的安装与服务控制 &#xff08;1&#xff09;安装keepalived &#xff08;2&#xff09;控制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是谁&#xff1f;—— 定位与诞生背景 核心定位&#xff1a;基于PostgreSQL的开源分布式分析型数据库&#xff08;OLAP&#xff09;&#xff0c;专为海量数据分析设计&#xff0c;支撑PB级数据仓库、商业智能&#xff08;BI&#xff09;和实时决策系统。 诞生背…...

Oracle数据库性能优化的最佳实践

原创&#xff1a;厦门微思网络 以下是 Oracle 数据库性能优化的最佳实践&#xff0c;涵盖设计、SQL 优化、索引管理、系统配置等关键维度&#xff0c;帮助提升数据库响应速度和稳定性&#xff1a; 一、SQL 语句优化 1. 避免全表扫描&#xff08;Full Table Scan&#xff09;…...

云原生时代 Kafka 深度实践:02快速上手与环境搭建

2.1 本地开发环境搭建 单机模式安装 下载与解压&#xff1a;前往Apache Kafka 官网&#xff0c;下载最新稳定版本的 Kafka 二进制包&#xff08;如kafka_2.13-3.6.0.tgz&#xff0c;其中2.13为 Scala 版本&#xff09;。解压到本地目录&#xff0c;例如/opt/kafka&#xff1a…...