2.2 PostgreSQL / Redis / MongoDB 运维

一句话判断

这三种库在 1Panel 里的管理界面和 MySQL 高度相似(实例 → 库 → 备份 → 配置),会一个就会仨。但各自有一个“ MySQL 里没有”的关键点:PostgreSQL 的权限语义不同、Redis 的持久化是必修课、MongoDB 的远程实例要先测连接。

PostgreSQL:最像 MySQL,但有三处不同

PostgreSQL 的管理入口和 MySQL 几乎一模一样:实例管理、远程服务器、创建数据库、连接信息、从服务器同步、备份恢复、权限设置、配置、端口、日志。

不同点一:Web 管理工具是 PGAdmin4,不是 phpMyAdmin。要图形化管理点这个按钮跳转。

不同点二:备份用 pg_dump,默认路径 /opt/1panel/backup/database/postgresql。恢复时同样要求上传的压缩包内存在 test.sql 文件。

不同点三:权限设置的含义完全不同。 这个最容易搞混:

MySQL 的【权限】 PostgreSQL 的【权限】
改的是 数据库的访问 IP 范围 当前数据库绑定用户是否为超级用户

在 PostgreSQL 里,“权限”按钮改的是用户身份(超级用户 / 普通用户),不是 IP 白名单。这一点和 MySQL 完全不是一回事,照着 MySQL 的习惯去点,会点出一个超级用户来——生产环境给业务库账号开超级用户,是安全大忌。

配置文件路径:/opt/1panel/apps/postgresql/[数据库名称]/data/postgresql.cnf

同样的警告:错误的配置将导致 PostgreSQL 服务不可用。注意官方文档里 PostgreSQL 的设置页只有“配置修改、端口、日志查看”三个标签——没有“当前状态”和“性能调整”,调优手段比 MySQL 少,得更依赖日志和外部工具。

修改密码的入口改的是绑定用户密码(非默认管理员密码),和 MySQL 的规则一致。

Redis:持久化才是核心课题

Redis 在 1Panel 里的管理更精简:修改密码、Redis Commander(Web 管理)、配置、当前状态、性能调整、端口、持久化。

没有备份/恢复按钮——Redis 的“备份”就是持久化,思路和关系型数据库完全不同。

先把 AOF 和 RDB 搞清楚

官方文档讲得很透,我帮你提炼成一张决策表:

RDB AOF
原理 某个时间点的数据集快照,fork 子进程写文件 把每条写入命令追加到日志
数据安全 有丢失风险,两次快照之间的数据会丢 更可靠,最多丢最后一次同步后的数据
性能影响 更小(子进程干活,父进程无磁盘 IO) 更大(写入要落盘)
文件体积 小 更大(同数据集)
恢复速度 快 慢
大数据集的坑 fork 子进程很耗时,可能造成服务停顿 文件过大时触发重写

一句话决策:

  • 能接受丢几十秒数据、追求性能 → RDB;
  • 一点数据都不能丢(如订单、会话) → AOF;
  • 成年人不做选择 → 两个都开(RDB 用于灾难恢复,AOF 用于少丢失)。

AOF 的三个同步频率

appendfsync 含义 适用
always 每次写入都同步 最安全,最慢
everysec 每秒 推荐,性能和安全的平衡
no 不同步(交给操作系统) 最快,丢数据风险最大

官方对 RDB 的一句提醒值得记住:RDB 是“满足任意一个条件时触发持久化”——触发是条件驱动的,条件没满足就不落盘。所以纯 RDB 方案下,宕机丢数据是正常的、可预期的。

Redis 性能调整的三个参数

官方明确支持表单调整:超时时间、最大连接数、最大内存数。

最大内存数是 Redis 调优的第一参数:Redis 是纯内存数据库,内存满了会按淘汰策略删数据。默认的淘汰策略如果是不淘汰,内存满了 Redis 会拒绝写入。

调优思路:

场景 建议
纯缓存 最大内存设小点,淘汰策略设 LRU
存会话/重要数据 内存给够,别让它随便淘汰
和 MySQL 抢同一台机器 算清楚,Redis 占多少、MySQL 的 buffer pool 占多少

当前状态页面可以看内存分配、查询命中率——这是判断 Redis 健康度的两个核心指标。命中率持续走低,说明缓存策略或业务访问模式有问题。

Redis Commander

官方提供了 Redis Commander 作为 Web 管理工具。用途:看 key、查数据结构、手动删 key。

实战价值:调试缓存问题时,能直接看到 key 的实际值和过期时间,比命令行 redis-cli 直观。但注意——Web 工具里删 key 是直接生效的,生产环境悠着点。

MongoDB:最精简,但远程实例有讲究

官方文档给 MongoDB 的篇幅最少,能力也确实精简。管理路径是 数据库 → MongoDB,管理应用商店装的实例和远程实例。

远程实例:先测连接再保存

创建远程 MongoDB 的参数:

参数 说明
名称 1Panel 里识别用的名字
版本 可选 6.x、7.x、8.x
地址、端口 默认端口 27017
初始数据库 用于认证的库,默认值 admin
用户名、密码 远程实例凭据
超时时间 连接超时

官方的硬性要求:

保存前必须先点击连接测试。

初始数据库这个参数很多人会填错:它不是你要连的业务库,而是认证用的库。MongoDB 的认证是库级隔离的,用户在哪个库创建的,就得用那个库认证。绝大多数远程 MongoDB 用 admin 认证,别随手填成业务库名。

解绑远程实例:只删除 1Panel 里的连接信息,不会删除远程数据——这个设计很安全,不用担心手滑。

MongoDB 的权限模型

创建数据库时的权限选项和 MySQL 完全不同:

权限 含义
dbOwner 数据库所有者(当前库的完整权限)
read 只读
readWrite 读写
userAdmin 用户管理

给业务应用的账号,一般用 readWrite 就够了,别给 dbOwner。userAdmin 更是几乎不应该给业务账号——它意味着能改库里的用户和权限。

删除的警告

官方特别提示:

删除数据库或在恢复前清空集合会直接影响业务数据。操作前应确认备份可用,并核对当前选择的 MongoDB 实例。

“核对当前选择的 MongoDB 实例”这句话是重点——MongoDB 支持多实例切换,删库前先看清楚实例选择器选的是哪个。删错实例里的库,这种事故真实发生过。

异常状态处理

数据库被外部删除后,页面会标记异常状态;可以使用【从服务器同步】更新 1Panel 中的记录。

这是“从服务器同步”的另一个用途:面板和实际不一致时,用它对齐。

Mongo Express 是它的 Web 管理工具,只用于本地实例(没装时页面会引导你去应用商店装)。

四种库的 Web 管理工具对照

数据库 Web 工具 注意
MySQL phpMyAdmin、Adminer 两个可选
PostgreSQL PGAdmin4 ——
Redis Redis Commander 删 key 直接生效
MongoDB Mongo Express 仅本地实例

共同特点:都是通过应用商店安装、以容器方式运行、从数据库页面跳转。它们是“应用”,不是面板内置功能——OpenResty 停了影响网站,这些工具的容器停了就进不去管理页面(但数据库本身不受影响)。

混合架构的实战建议

真实项目里常常是多种库混用,一个典型的组合:

角色 选什么 在 1Panel 里怎么管
主业务数据 MySQL 或 PostgreSQL 按本节方式调优 + 定时备份
缓存 / 会话 Redis 配好持久化 + 最大内存
日志 / 文档型数据 MongoDB 注意认证库和权限最小化

跨库查询别指望面板:1Panel 是分别管理,不提供跨库关联。要做数据联动,在应用层写。

资源分配的算账:四种库挤在一台机器上,把内存预算写清楚:

机器总内存 8G
  系统 + OpenResty + 应用:~2G
  MySQL buffer pool:~2G
  Redis 最大内存:~1.5G
  MongoDB:~1G
  剩余留给系统缓存和峰值

不这么算,迟早 OOM。 而且一旦 OOM,Linux 会杀进程,可能杀掉任何一个库,排查起来很痛苦。

本节要点

  • PostgreSQL 的【权限】改的是是否超级用户,和 MySQL 的 IP 白名单不是一回事;
  • Redis 持久化:能丢几十秒用 RDB,一点不能丢用 AOF,推荐 everysec;
  • Redis 调优第一参数是最大内存数;
  • MongoDB 远程实例保存前必须连接测试,初始数据库默认 admin;
  • MongoDB 删库前核对实例选择器;
  • 多库混用要提前算好内存预算。

延伸阅读:Redis 持久化与 MongoDB 远程连接的操作细节,见 《1Panel 官方文档:功能手册》 的数据库章节;新手入门可先看 《1Panel 常见问题与排错实战》。

下一节:管理都会了,接下来是本章的重头戏——备份与恢复演练,见 2.3 节。