Odoo19 配置 PostgreSQL 数据库连接及故障排查

Odoo 的每项工作都依赖应用服务器与 PostgreSQL 之间可靠的连接。数据库连接配置错误会导致无法启动、超时、认证失败、性能差甚至更严重问题。Odoo 19 仍使用 PostgreSQL;连接参数主要写在 odoo.conf。

bash 复制代码
python3 odoo-bin -c /etc/odoo.conf

1. 核心参数

ini 复制代码
[options]
db_host = localhost
db_port = 5432
db_user = odoo
db_password = admin
db_name = False
参数 含义
db_host localhost 表示同机;否则为远程库 IP/主机名
db_port 默认 5432(也可自定义如 5433)
db_user Odoo 专用数据库用户(不要用 postgres 超级用户)
db_password 对应用户密码------生产请用强密码
db_name False 显示选库界面;或强制连某一个库名

远程主机

生产常把 PostgreSQL 放在另一台机器(扩展、安全、独立资源、备份)。若出现 Connection refused,检查 PG 是否运行、防火墙/5432,以及 postgresql.conf 中的 listen_addresses(必要时如 listen_addresses = '*')。

创建专用用户(示例):

bash 复制代码
sudo -u postgres createuser -s odoo
sudo -u postgres psql -c "ALTER USER odoo WITH PASSWORD 'admin';"

保护配置文件:

bash 复制代码
chmod 640 /etc/odoo.conf
chown odoo:odoo /etc/odoo.conf

db_name 与 dbfilter

  • db_name = False --- 选库 / 多库
  • db_name = production_db --- 自动连指定库
  • dbfilter = ^mycompany.*$ --- 只显示匹配的库
  • dbfilter = ^%d$ --- 按域名:erp.company.com → 库 erp(常见多租户)

2. 连接池:db_maxconn

ini 复制代码
db_maxconn = 64

限制 Odoo 到 PostgreSQL 的连接数。超过 PG 的 max_connections 会出现:

FATAL: remaining connection slots are reserved / too many clients already

需结合 Worker 估算,例如 4 workers × 16 ≈ 64。若使用 PgBouncer/PgPool,池参数主要在中间件侧配置。

3. 模板与 SSL

ini 复制代码
db_template = template0

新建库建议用 template0,环境更干净(template1 可能带历史对象)。

默认连接未加密;生产应通过 PostgreSQL SSL、专网和/或 VPN 加固(在服务端/网络侧配置)。

4. 示例配置

  • 单机 / 固定库 --- 见 odoo.conf.single_server.sample
  • 多库 + 域名过滤 --- odoo.conf.multi_db_domain.sample
  • 远程 PostgreSQL --- odoo.conf.remote_postgres.sample

5. 修改后验证

bash 复制代码
sudo systemctl restart odoo
sudo journalctl -u odoo -f

psql -h localhost -U odoo -d postgres         # 本机
psql -h 10.0.0.15 -U odoo -d postgres         # 远程

监控连接:

sql 复制代码
SELECT * FROM pg_stat_activity;

6. 常见错误

错误 检查项
Password authentication failed 密码、用户、pg_hba.conf
Database does not exist psql -U postgres -l
Too many clients already db_maxconn、PG max_connections、Worker 数
Timeout expired 网络、防火墙、主机/端口

7. 最佳实践

  • 为 Odoo 使用专用 PostgreSQL 用户
  • 收紧 odoo.conf 权限
  • 多库时使用 dbfilter
  • 生产尽量将库与应用分机(若条件允许)
  • 不要把 5432 暴露到公网
相关推荐
考虑考虑4 小时前
瀚高数据库
数据库·后端·postgresql
IvorySQL6 小时前
开源数据库进校园| 11 月 3 日,IvorySQL 校园行走进浙大宁波校区:从 PostgreSQL 扩展生态到 AI 实战
数据库·postgresql·开源
瀚高PG实验室9 小时前
瀚高数据库创建新数据库卡住问题排查
数据库·postgresql·瀚高数据库
瀚高PG实验室1 天前
HGDB V9.0.5 .pgpass 免密登录提示 IsEncryptNon-base64 encoding 警告处理
数据库·postgresql·瀚高数据库
IvorySQL1 天前
PostgreSQL 日报|Anonymizer 3.3 修复高危漏洞(10 月 29 日)
数据库·postgresql
geovindu1 天前
SQL Data Sampling and Approximation Techniques using postgreSQL 18
大数据·数据库·数据仓库·sql·postgresql·数据库开发·数据库架构
小手cool1 天前
PostgreSQL 基础入门:从安装到核心概念
数据库·postgresql
代码派1 天前
PostgreSQL 同构迁移上云方案|NineData 数据复制、实时增量与一致性校验
数据库·postgresql·上云·ninedata·迁移·数据库迁移·版本升级
Jack N1 天前
【Strapi 系列之八】二次开发 + 生产部署,Docker + PostgreSQL + Nginx 一把梭
nginx·docker·postgresql·strapi