ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Ubuntu上PostgreSQL安装配置与排错实战指南

Ubuntu上PostgreSQL安装配置与排错实战指南 在 Ubuntu 上装 PostgreSQL 这件事我前前后后经历过好几个版本从 9.5 一直用到现在的 16踩过的坑不少但也正因为踩得多现在闭着眼都能把整套流程走完。网上其实已经有大量教程但很多都只写了“执行三条命令就装好了”真正到了生产环境或者自己要写项目的时候各种配置问题就全冒出来了远程连不上、认证失败、内存吃满、备份不会写……这篇实录就是把我在 Ubuntu 上完整安装和配置 PostgreSQL 的整个过程包括每一步为什么这么做、哪些地方容易掉坑全部整理出来。不管你是在 VMware 虚拟机里玩还是在 WSL 里写代码或者直接装在云服务器上这套流程都是通用的。这篇内容适合这些读者刚接触 Linux 和数据库的初学者可以在完整流程里建立正确的概念已经把 PostgreSQL 跑起来但对配置参数一头雾水的开发者可以对照排查还有准备把数据库部署到生产环境的运维新手这里面的安全加固和备份方案可以直接抄作业。1. 装之前先想清楚版本选择和系统准备1.1 版本选择别盲目装最新版很多人上来就是sudo apt install postgresql装完才发现版本不是自己想要的。Ubuntu 每个 LTS 版本自带的 PostgreSQL 版本不一样比如 Ubuntu 22.04 默认带的是 14Ubuntu 24.04 默认带的是 16。如果你没有特殊需求直接用系统源里的版本是没问题的因为它是经过 Ubuntu 官方测试的稳定性有保障。但这里有一个关键点如果你打算后面用一些比较新的扩展比如向量检索相关的 pgvector或者想用某个只有新版本才支持的特性那系统源里的版本可能就不够用了。这时候推荐用 PostgreSQL 官方提供的 APT 源可以指定安装任意版本。我当时在一台 Ubuntu 22.04 上折腾 pgvector系统源里只有 PostgreSQL 14而 pgvector 对版本要求比较灵活能装上但如果用官方源装 PostgreSQL 16性能和特性上会更好一些。所以我的建议是学习练手直接用系统源生产环境或者有特定扩展需求就用官方源。官方源的安装方式很简单sudo apt install -y postgresql-common sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh -y sudo apt update sudo apt install postgresql-16官方源的好处是版本可控、升级路径清晰但坏处是它不跟 Ubuntu 的发布节奏走大版本升级时需要手动处理。而系统源的好处是跟系统深度集成卸载升级都走统一机制。两个选一个别混着装不然容易出依赖冲突。1.2 先把系统环境收拾干净安装 PostgreSQL 之前我强烈建议先把系统更新一遍sudo apt update sudo apt upgrade -y sudo apt install -y wget curl gnupg2 lsb-release这步不是走过场。apt update更新的是软件源索引apt upgrade更新的是已安装的软件包。如果系统里有一些旧版本的库文件不更新的话PostgreSQL 安装过程中可能因为依赖版本不满足而报错尤其是libssl和libpq这类的底层库。另外检查一下系统版本和架构lsb_release -a uname -m绝大多数情况下你的系统是 x86_64 架构但如果是在树莓派或者某些 ARM 服务器上装就要注意下载的包架构是否匹配。早期我在 ARM 设备上装 PostgreSQL就因为没有注意架构白白折腾了半天。如果你是在 WSL 里装还有一点要特别提醒WSL 默认不是用 systemd 管理服务的WSL 2 较新版本已经支持 systemd但需要手动开启。这会导致systemctl命令无法正常管理 PostgreSQL 服务。我在 WSL 上踩过这个坑后来要么手动开启 systemd要么直接用pg_ctlcluster命令管理服务。这个后面单独写一节详细说。2. 安装 PostgreSQL命令简单细节不少2.1 一键安装与基础验证如果是用系统源安装就一条命令sudo apt install -y postgresql postgresql-contrib注意postgresql-contrib这个包很多教程都会忽略但它包含了很多实用的扩展模块比如pg_stat_statements性能监控、postgres_fdw跨库查询、uuid-osspUUID 生成等。不装的话以后要用这些功能还得回来补装多花时间。安装完成后PostgreSQL 会自动初始化一个数据库集群并且把服务启动起来。验证一下systemctl status postgresql pg_lsclusterspg_lsclusters这个命令是 Ubuntu 特有的它会显示当前系统上有哪些 PostgreSQL 集群实例、运行在哪个端口、数据目录在哪。我第一次看到这个输出时还挺惊讶的原来 Ubuntu 通过pg_ctlcluster机制管理数据库集群这比纯手动初始化要友好得多。默认情况下安装完成后数据库是运行在localhost:5432的你可以试着连接一下sudo -u postgres psql -c SELECT version();这条命令的含义是以操作系统的postgres用户身份执行psql查询 PostgreSQL 版本。能输出版本信息就说明安装成功了。2.2 安装后必须了解的目录结构PostgreSQL 安装完之后文件是散落在不同目录的搞清楚每个目录的作用后面遇到问题才能快速定位。我整理了一个速查表目录或文件作用说明/etc/postgresql/版本号/main/主配置文件目录里面是postgresql.conf和pg_hba.conf/var/lib/postgresql/版本号/main/数据目录存储数据库文件备份时要关注这里/var/log/postgresql/日志目录出问题时看这里排错第一入口/usr/lib/postgresql/版本号/bin/可执行文件目录psql、pg_dump 等工具都在这里~postgres/.pgpass密码文件用于脚本自动化连接有个细节要注意/etc/postgresql/下的配置文件和/var/lib/postgresql/下的数据文件是分开的。这意味着即使你误删了配置文件数据文件还在是可以恢复的反过来也一样。我见过有同事在生产环境误操作以为把数据目录删了就完了还好配置文件里还有备份信息最后数据找回来了。理解目录结构关键时刻能救命。另一个常见困惑是为什么 Ubuntu 上 PostgreSQL 的配置不是传统的/etc/postgresql.conf而是在/etc/postgresql/版本号/main/下面这是 Debian/Ubuntu 系的特色它为了支持多版本多实例共存把配置按版本号分目录存放。后面你要是手动装了两个版本就能体会到这种设计的好处了。3. 核心配置详解从能跑到好用3.1 修改监听地址和端口刚装完的 PostgreSQL默认只监听localhost也就是只能本机访问。如果你需要远程连接比如从 Windows 上用 Navicat 连虚拟机里的数据库或者从另一台服务器连过来就要改配置。编辑主配置文件sudo vim /etc/postgresql/版本号/main/postgresql.conf找到这三行#listen_addresses localhost #port 5432 #max_connections 100把注释去掉改成listen_addresses * port 5432 max_connections 200listen_addresses *表示监听所有网络接口这样不管是内网 IP 还是公网 IP 都能连上来。如果只想让特定网段访问可以写具体的 IP 地址比如192.168.1.10。max_connections是最大连接数。这里我特别想多说一句很多新手一看默认是 100以为越大越好直接调到 1000。结果数据库内存被吃满系统直接 OOM。PostgreSQL 每个连接大约占用 2MB 到 10MB 内存取决于配置1000 个连接就意味着至少 2GB 内存没了这还不算缓存和查询执行的开销。一般个人开发机 100 到 200 够用了生产环境要根据并发量和机器内存综合测算。修改完配置后重启服务sudo systemctl restart postgresql3.2 pg_hba.conf 认证配置最常见的拦路虎pg_hba.conf是 PostgreSQL 的客户端认证配置文件全称是 PostgreSQL Host-Based Authentication。这个文件控制着谁能连数据库、从哪里连、用什么方式验证身份。80% 的远程连接问题都出在这个文件上。文件位置sudo vim /etc/postgresql/版本号/main/pg_hba.conf文件默认内容里有一段# TYPE DATABASE USER ADDRESS METHOD local all postgres peer local all all peer host all all 127.0.0.1/32 scram-sha-256 host all all ::1/128 scram-sha-256我解释一下这些字段的含义你看一遍就能懂字段含义示例TYPE连接类型local是本地 Unix 套接字连接host是 TCP/IP 连接local / hostDATABASE允许访问的数据库all表示所有库allUSER允许连接的用户all表示所有用户allADDRESS客户端 IP 地址范围127.0.0.1/32METHOD认证方式peer / scram-sha-256 / md5 / trust要开放远程连接在文件末尾添加一行host all all 0.0.0.0/0 scram-sha-256这行的意思是允许所有 IP 通过 TCP/IP 连接所有数据库认证方式为scram-sha-256。0.0.0.0/0表示所有 IPv4 地址这在生产环境是很危险的做法意味着任何人都能尝试连接你的数据库 5432 端口。如果服务器有公网 IP强烈建议限制为具体的 IP 段比如host all all 192.168.1.0/24 scram-sha-256再说说认证方式的区别这地方很多人搞混trust完全信任不需要密码就能连接。仅供本地开发调试使用任何暴露到网络的实例都不应该用这个。peer通过操作系统用户名来认证要求操作系统用户名和数据库用户名一致。主要用于本机postgres超级用户连接。md5密码以 MD5 加密方式传输。安全性一般有被暴力破解的风险。scram-sha-256比 MD5 更安全的密码认证方式是 PostgreSQL 10 以后推荐使用的。这里我有一个习惯性的建议本地开发用 peer 管超级用户网络连接一律用 scram-sha-256绝对不要用 trust。修改完pg_hba.conf后不需要重启服务只需要重载配置sudo systemctl reload postgresql3.3 设置数据库用户密码默认安装后postgres用户是没有密码的因为它走的是peer认证。但是一旦你开放了远程连接就必须给postgres用户设置一个强密码否则任何人都能以超级用户身份连进来。切换身份进入 PostgreSQL 命令行sudo -u postgres psql然后执行ALTER USER postgres WITH PASSWORD 你的强密码; CREATE USER myapp WITH PASSWORD 我的应用密码; CREATE DATABASE mydb OWNER myapp;这三条命令做了三件事给超级用户设置密码、创建一个应用专用用户、创建一个属于该用户的数据库。我特别建议不要用postgres超级用户去跑业务应用。正确的做法是给每个应用创建独立的用户和数据库只授予必要的权限。这样即使某个应用被攻破了也拿不到数据库的完整控制权。权限最小化原则在数据库层面同样适用。3.4 WSL 环境的特殊处理如果你跟我一样日常主要是在 Windows 上用 WSL 写代码那 PostgreSQL 装在 WSL 里会遇到一些额外的坑。WSL 2 默认情况下是不走 systemd 的所以systemctl start postgresql可能会报错。解决办法有两个第一个办法是开启 WSL 的 systemd 支持。在/etc/wsl.conf里添加[boot] systemdtrue然后在 Windows 的 PowerShell 里执行wsl --shutdown重启 WSL再进来就能用systemctl了。第二个办法是不依赖 systemd直接用pg_ctlclustersudo pg_ctlcluster 版本号 main start sudo pg_ctlcluster 版本号 main stop这个命令是 Ubuntu PostgreSQL 的专用管理工具即使没有 systemd 也能用。还有一个 WSL 特有的麻烦如果 Windows 的 5432 端口被其他程序占了比如 Windows 本地也装了 PostgreSQLWSL 里的 PostgreSQL 可能起不来。查看端口占用sudo ss -tlnp | grep 5432遇到这种情况要么停掉 Windows 上的服务要么把 Linux 里的 PostgreSQL 端口改掉。我一般是把 Windows 上不用的服务停掉毕竟 Linux 里的才是主力。4. 常用命令行实操建库建表备份恢复4.1 psql 日常操作速查psql 是 PostgreSQL 自带的命令行客户端功能非常强大。很多人装了数据库却用 GUI 工具psql 命令不太熟但有些场景下 psql 是最高效的选择比如服务器上没有图形界面的时候。进入交互式命令行sudo -u postgres psql或者连接远程数据库psql -h 192.168.1.100 -p 5432 -U myapp -d mydb连接成功后常用的元命令以反斜杠开头我整理了一份\l -- 列出所有数据库 \c mydb -- 切换到 mydb 数据库 \dt -- 列出当前数据库的所有表 \d users -- 查看 users 表的结构 \du -- 列出所有用户和权限 \conninfo -- 查看当前连接信息 \h -- 查看 SQL 命令帮助 \q -- 退出 psqlSQL 层面最常用的操作-- 创建表 CREATE TABLE users ( id BIGSERIAL PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, email VARCHAR(100) NOT NULL, created_at TIMESTAMPTZ DEFAULT NOW() ); -- 插入数据 INSERT INTO users (username, email) VALUES (zhangsan, zhangsanexample.com); -- 查询数据 SELECT * FROM users WHERE username zhangsan; -- 创建索引 CREATE INDEX idx_users_email ON users (email);有一个细节新手容易忽略PostgreSQL 的字符串类型要用单引号不要用双引号。双引号是用来表示标识符表名、字段名的。这个和 MySQL 的习惯不一样刚从 MySQL 转过来的朋友特别容易搞混。4.2 备份与恢复不备份等于白干我见过太多人数据库跑了大半年从来没备份过直到某天磁盘坏了或者手滑删了表才追悔莫及。PostgreSQL 的备份其实很简单关键是养成习惯。逻辑备份用pg_dump# 备份单个数据库 pg_dump -h localhost -U myapp -d mydb -F c -f mydb.backup # 备份所有数据库 pg_dumpall -h localhost -U postgres all_databases.sql-F c表示自定义格式这种格式支持选择性恢复压缩率也更好。如果你要备份的是超大数据库几百 GB 以上逻辑备份会很慢到时候要考虑物理备份工具比如pg_basebackup或者专用的备份工具这是另一个话题了。恢复数据# 从自定义格式备份文件恢复 pg_restore -h localhost -U myapp -d mydb mydb.backup # 从纯 SQL 格式恢复 psql -h localhost -U myapp -d mydb all_databases.sql我还习惯写一个简单的定时备份脚本放到 crontab 里每天跑#!/bin/bash BACKUP_DIR/home/backup/postgres DATE$(date %Y%m%d_%H%M%S) mkdir -p $BACKUP_DIR pg_dump -h localhost -U myapp -d mydb -F c -f $BACKUP_DIR/mydb_$DATE.backup find $BACKUP_DIR -type f -mtime 7 -name *.backup -delete把脚本保存为backup.sh添加执行权限chmod x backup.sh crontab -e然后添加一行表示每天凌晨 2 点执行0 2 * * * /home/backup/backup.sh /home/backup/backup.log 21脚本里最后一行是清理 7 天前的备份防止磁盘被备份文件塞满。这个细节很重要不然备份跑上一年磁盘直接爆掉。5. 可视化管理工具选型有 GUI 也能飞5.1 远程连接前必须做的防火墙配置很多人改完postgresql.conf和pg_hba.conf后发现远程还是连不上这时候十有八九是防火墙没放行 5432 端口。Ubuntu 上如果用 UFW 管理防火墙sudo ufw allow 5432/tcp sudo ufw status如果用的是云服务器阿里云、腾讯云、AWS 等还要去云控制台的安全组里放行 5432 端口。这一步特别容易遗漏因为本机防火墙和云安全组是两层防护哪个没配好都连不上。我在自己服务器上就犯过这个错UFW 放行了 5432但云安全组没加规则结果从外面连数据库一直超时。查了半天才发现是安全组的问题。所以这里多强调一遍两层防火墙都要检查。5.2 常用 GUI 管理工具横向对比命令行虽好但日常开发中很多时候用 GUI 工具效率更高特别是写复杂查询调试的时候。我试过不少工具简单说一下感受工具跨平台开源免费优缺点pgAdmin 4是是PostgreSQL 官方出品功能最全但界面偏重启动有点慢DBeaver是社区版免费支持几乎所有数据库通用性极强适合多数据库混用的场景Navicat是否界面漂亮操作流畅Windows 用户最爱但收费DataGrip是否JetBrains 出品智能提示最强大适合深度开发用户我的建议是初学者用 pgAdmin因为它是官方的遇到问题容易查到解决方案日常写代码的开发者用 DataGrip如果你本来就用 IntelliJ 系列的话单纯只是看看数据、跑跑 SQLDBeaver 社区版就够用了。以 DBeaver 为例连接 PostgreSQL 的步骤很简单新建连接 → 选择 PostgreSQL → 填写主机名、端口、数据库名、用户名、密码 → 测试连接。第一次连接时 DBeaver 会提示下载 PostgreSQL 驱动联网下载即可。6. 常见问题排错实录我踩过的坑都在这6.1 服务启动失败数据目录权限和组织架构问题PostgreSQL 启动失败首先要看日志日志位置在/var/log/postgresql/。常见的错误有这几种一是数据目录权限不对。PostgreSQL 要求数据目录的所有者必须是postgres用户。如果你用 root 手动执行过某些命令可能把数据目录的属主改了导致启动失败。修复方式sudo chown -R postgres:postgres /var/lib/postgresql/版本号/main二是磁盘空间不足。数据库启动时可能需要写临时文件或者 WAL 日志磁盘满了会启动失败。查看磁盘空间df -h三是端口被占用。用ss -tlnp | grep 5432查看 5432 端口是否已被其他进程占用。如果占用要么杀掉占用进程要么改 PostgreSQL 的端口。6.2 远程连接被拒绝这个问题的排查路径基本上是先看监听地址配置 → 再看 pg_hba.conf → 再看防火墙 → 最后看云安全组。一个最常用的测试方法在远程机器上执行telnet 服务器IP 5432如果telnet不通说明网络层被挡住了如果通了但没有输出说明 TCP 连接建立成功问题出在认证配置上。还有一个小细节改完pg_hba.conf后一定要记得reload而不是restart。reload只重新加载配置文件不会中断现有连接restart会断开所有正在执行的查询。生产环境里尽量用reload。6.3 内存占用过高连接数和共享缓冲区调优很多人在自己的开发机上发现PostgreSQL 一启动就吃掉了大量内存。这通常是shared_buffers和max_connections设置得过大造成的。shared_buffers是 PostgreSQL 的共享缓冲区相当于数据库的缓存池。默认值是 128MB但它实际上是按比例使用的如果你的机器内存只有 4GB把shared_buffers调到 2GB 就很危险因为 PostgreSQL 还有其他进程的内存开销加起来可能就爆了。官方建议shared_buffers设为系统内存的 25%。比如 16GB 内存的机器设为 4GB。但这是针对专用服务器的建议如果同一台机器上还跑着应用服务要适当调低。还有一个常被忽略的参数是work_mem它控制排序和哈希操作能使用的内存量。默认 4MB看起来很小但要注意这个值是按每次排序操作计算的。如果同时有 50 个连接在跑大排序每个连接用 200MB内存瞬间就没了。6.4 扩展模块安装失败想用pg_stat_statements或者postgres_fdw结果执行CREATE EXTENSION时报错找不到相关文件。这是因为系统源安装的 PostgreSQL扩展模块在独立的包里。解决方案sudo apt install -y postgresql-contrib postgresql-server-dev-版本号装完后再执行CREATE EXTENSION IF NOT EXISTS pg_stat_statements;另外注意CREATE EXTENSION需要有超级用户权限普通用户执行会报错。可以在postgres用户下执行或者给用户加上SUPERUSER权限不推荐。6.5 WSL 或者虚拟机环境特有的问题在 WSL 里调试 PostgreSQL还有一个我反复遇到的坑WSL 的文件系统和 Windows 是共享的如果数据文件放在/mnt/c/或者/mnt/d/这种挂载目录里性能会非常差并且文件锁行为也和原生 Linux 不同。我有一次为了省事把 PostgreSQL 的数据目录指到了 Windows 盘的目录下结果查询慢到我怀疑人生。后面老老实实把数据目录放在 Linux 原生文件系统里比如/var/lib/postgresql/性能才恢复正常。如果你是在 VMware 虚拟机里装 Ubuntu 再跑 PostgreSQL建议给虚拟机分配至少 2GB 内存和 20GB 磁盘空间。磁盘空间尤其要留足因为 PostgreSQL 的 WAL 日志会持续增长加上日常备份20GB 很快就不够用了。我一般分 40GB省心。还有一个跟输入法和编辑器有关的经验在 WSL 里用命令行操作 PostgreSQL终端字体的选择很重要。我用的是从 macOS 那边移植过来的等宽字体显示效果接近我在 Mac 上的体验中文注释也不会乱码写 SQL 的时候舒适度提升了一个档次。这里顺便提一句如果你在 WSL 里用 vim 写 SQL 脚本记得把文件编码设为 UTF-8否则中文注释会变成乱码set fileencodingsutf-8,gbk set termencodingutf-86.6 环境变量配置错误导致 psql 找不到命令有时候你明明安装了 PostgreSQL但执行psql却说找不到命令。这是因为 psql 的可执行文件路径没有加到PATH环境变量里。系统源安装的 PostgreSQLpsql 一般在/usr/bin/psql这个路径默认就在 PATH 里。但如果你用官方源安装了特定版本或者手动编译安装psql 可能被安装到了/usr/lib/postgresql/版本号/bin/这个目录不一定在 PATH 里。解决办法是把路径加到~/.bashrc或~/.zshrc里export PATH/usr/lib/postgresql/版本号/bin:$PATH source ~/.bashrc这个问题的坑在于如果你同时装了多个版本的 PostgreSQLPATH 里排在前面的版本决定你执行psql时连的是哪个版本。我之前就遇到过PATH 里 14 排在 16 前面结果执行psql连的是 14 的实例查了半天没发现问题。用which psql看看你实际用的是哪个版本能省去不少排查时间。7. 本地开发与远程协作的最佳实践7.1 用 systemd 管理服务但要知道它在哪Ubuntu 上 PostgreSQL 安装后会自动注册 systemd 服务服务名是postgresql。管理命令sudo systemctl start postgresql sudo systemctl stop postgresql sudo systemctl restart postgresql sudo systemctl reload postgresql sudo systemctl enable postgresql # 设置开机自启我一般是安装后立刻执行systemctl enable防止机器重启后数据库没起来。这个操作在 Ubuntu 上是默认开启的但如果你用的是云镜像或者其他发行版可能要手动开启一下。还有一点systemctl reload和restart的区别很多新手分不清。reload只重新读取配置文件不影响正在运行的连接restart会完全停掉再启动所有连接都会断。在修改postgresql.conf或者pg_hba.conf后优先用reload。只有在你改了端口号这种必须在启动时确定的参数才需要restart。7.2 如何安全地把数据库暴露给团队使用如果你是在团队开发环境里其他人也要连这台数据库我不建议直接把postgres超级用户的密码发给所有人。正确的姿势是创建一个只读用户、一个读写用户分别授予不同的权限。-- 创建只读用户 CREATE USER readonly_user WITH PASSWORD readonly_password; GRANT CONNECT ON DATABASE mydb TO readonly_user; GRANT USAGE ON SCHEMA public TO readonly_user; GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_user; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO readonly_user; -- 创建读写用户 CREATE USER readwrite_user WITH PASSWORD readwrite_password; GRANT CONNECT ON DATABASE mydb TO readwrite_user; GRANT USAGE ON SCHEMA public TO readwrite_user; GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO readwrite_user; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO readwrite_user;这里面ALTER DEFAULT PRIVILEGES很多人会漏掉它的作用是让将来新建的表自动继承权限不然你后面新建一张表只读用户查不了又得手动授权很烦。7.3 遇到不会的问题先看日志再看配置最后分享一个排查问题的总思路不管遇到什么诡异的问题我都遵循这个顺序第一步看日志。/var/log/postgresql/postgresql-版本号-main.log记录了所有错误信息包括连接失败、认证失败、语法错误等。日志是最直接的线索。第二步确认配置。查postgresql.conf和pg_hba.conf是不是被改坏了最近有没有动过。第三步查系统资源。磁盘空间、内存、CPU哪个爆了都会出问题。第四步测试最小场景。比如在本地执行sudo -u postgres psql能否连接本机能连就说明数据库本身没问题问题在网络和认证层。这个思路我用了很多年适用于 PostgreSQL 也适用于 MySQL基本上能解决 90% 的数据库问题。我在实际使用中最深的体会是PostgreSQL 的配置项非常多但真正需要动的就那么几个监听地址、认证方式、最大连接数、共享缓冲区、WAL 归档。其他保持默认值跑起来完全没有压力。不要一上来就照着网上的“优化指南”改一堆参数改坏了反而找不到原因。先把基础用熟练再逐步深入调优这才是最稳妥的路子。最后再分享一个小技巧每次改完配置后可以用postgres -C 参数名来快速查看某个配置的实际生效值不用进 psql 查视图排查问题时省不少事。
返回列表