在雨云上我既跑 MySQL(之前写过一篇安装、备份与调优实录),也跑 PostgreSQL,后台常被问同一个问题:到底选哪个?这问题没有标准答案,得看你的业务长什么样。这篇不堆参数,直接说我在雨云上两个都装机跑过之后,是怎么做选型的,以及 PostgreSQL 这条线怎么装、怎么备、怎么调。
先说选型:什么场景选 PostgreSQL
如果你符合下面任意一条,我更倾向 PostgreSQL:
- 存的是半结构化数据:比如配置、标签、元数据经常变字段,PostgreSQL 的 JSONB 类型能直接当文档库用,又能建索引,比在 MySQL 里塞长文本舒服太多;
- 查询复杂、要联表分析:多表 JOIN、窗口函数、CTE(公用表表达式)这类,PostgreSQL 的优化器和语法都更顺手;
- 要 GIS 或时序:配合 PostGIS、TimescaleDB 这类扩展,地理信息和时序数据几乎是开箱即用,MySQL 做起来费劲;
- 事务边界要求严:PostgreSQL 默认事务和约束更”较真”,对金额、库存这类不能出错的数据更稳。
wp 这类默认用 MySQL 的程序不在讨论范围内——WordPress 人家就认 MySQL,别硬改。
什么场景还是 MySQL 更省心
- 生态和资料多:宝塔、1Panel 面板一键建站基本都围绕 MySQL,踩坑一搜一大把,新手最友好;
- 业务以简单读写为主:普通博客、商城、CMS,MySQL 完全够,没必要为用 Postgres 而用;
- 要和大量现成程序对接:很多开源项目只认 MySQL 驱动,强行换库等于重写连接层。
所以一句话:标准建站走 MySQL,文档/分析/GIS/强事务需求走 PostgreSQL。雨云的香港、美国节点免备案,两个都能直接跑;国内节点该备案照备。
PostgreSQL 在雨云上怎么装
登录机器后直接用发行版包管理器装最稳,版本随系统走(较新发行版一般在 14~16 之间),不用去官网下二进制,省心也少依赖坑。
装完第一件事不是急着建库,而是把访问控制定好:
pg_hba.conf决定谁能连、从哪连。默认只允许本地peer/md5,远程要用的话得加一条放行规则,并且限定来源 IP,别写0.0.0.0/0全放;postgresql.conf里listen_addresses默认是localhost,要对外提供服务就改成具体网卡地址或'*',配合 pg_hba 一起收口;- 新建一个专属业务用户和库,别拿
postgres超级用户直接跑应用。
这一步做对,后面少一半安全事故。
备份怎么做才不慌
和 MySQL 一样,备份是底线。PostgreSQL 自己的工具就够用:
- 逻辑备份:
pg_dump导出单个库,pg_dumpall导出全实例,配合 cron 定时跑,简单可靠; - 物理备份:数据量大了用
pg_basebackup做基础备份,再靠 WAL 归档做时间点恢复; - 落到异地:dump 出来的文件我习惯再推一份到对象存储(雨云对象存储那篇讲过搭配用法),或者用 BorgBackup 做去重加密,和 MySQL 的备份思路一致。
一个容易忽略的点:备份完要定期恢复演练,光备不验等于没备。我一般每月挑一份 dump 在临时机器上恢复一次,确认能起来。
几个调优项,按需动
PostgreSQL 默认配置偏保守(按小内存机器调的),雨云上如果你机器有 2G 以上内存,可以动这几项:
shared_buffers:通常设成物理内存的 1/4 左右,给缓存用;work_mem:每个排序/哈希操作的内存,调大能少落盘,但别乘上并发数算爆;effective_cache_size:告诉优化器系统有多少缓存可用,设大点让它能选索引;- 连接数:PostgreSQL 每个连接占内存,高并发别无脑加
max_connections,前面架一层 pgbouncer 连接池更稳。
雨云的云盘是 SSD,对 PostgreSQL 的随机读写很友好,不用额外折腾磁盘。宝塔、1Panel 面板上也能挂 PostgreSQL 管理插件,可视化和命令行结合用最顺。
合规边界
和跑 MySQL 一样,数据库里别存用户明文密码、身份证、银行卡这类敏感明文,按《个人信息保护法》做脱敏和加密存储;《数据安全法》要求做好访问控制和备份;用途限定在正常业务,不把数据库能力用于突破国家网络管控。香港、美国节点免备案,但合规底线一样守。
我踩过的坑
- pg_hba 没放行来源 IP:应用连不上,排查半天才发现是客户端 IP 不在允许列表;
- listen_addresses 还是 localhost:改了 pg_hba 却忘了改监听,外部死活连不进;
- 用 postgres 超级用户跑应用:权限过大,一旦程序有漏洞就是全库风险,后来拆了专属低权用户;
- locale 不一致导致排序乱:建库时没指定,中文排序和预期不同,重建库指定
C或zh_CN.UTF-8才正常; - 连接数打满:高并发没加连接池,
max_connections被占满后新连接全拒,架 pgbouncer 后解决。
选型小结
别被”哪个更强”带节奏。我的经验是:标准 Web 建站、想省心、要对接现成程序,MySQL 优先;要 JSONB、复杂分析、GIS、强事务,PostgreSQL 更对路。两个在雨云香港、美国节点上都能免备案直接跑,价格也都不贵、还便宜,性价比都不差。如果你还在挑机器,用优惠码 admin01 五折开一台先都试一遍最直观。






