数据库连接
PostgreSQL
连接 PostgreSQL 数据库进行自动备份
PostgreSQL
PostgreSQL 是强大的开源关系型数据库。LastBackup 使用 pg_dump 创建一致性备份。
配置参数
| 字段 | 值 |
|---|---|
| 主机 | 数据库服务器地址(如 localhost、db.example.com) |
| 端口 | 5432(默认) |
| 数据库 | 要备份的数据库名称 |
| 用户名 | PostgreSQL 用户 |
| 密码 | 用户密码 |
连接字符串格式
postgresql://username:password@host:port/database示例:
postgresql://backup_user:secret@db.example.com:5432/myapp所需权限
备份用户需要以下权限:
-- 创建专用备份用户
CREATE USER backup_user WITH PASSWORD 'secure_password';
-- 授予所有表的读取权限
GRANT CONNECT ON DATABASE myapp TO backup_user;
GRANT USAGE ON SCHEMA public TO backup_user;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO backup_user;
GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO backup_user;
-- 对未来的表
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO backup_user;SSL 配置
云托管 PostgreSQL(AWS RDS、Supabase 等):
| 提供商 | SSL 模式 | 备注 |
|---|---|---|
| AWS RDS | require | 下载 RDS CA 证书 |
| Supabase | require | 默认启用 SSL |
| DigitalOcean | require | 必须 SSL |
| 本地 | prefer | 可选 |
PgBouncer 支持
如果你的 PostgreSQL 位于 PgBouncer 连接池后面,请在连接设置中启用 PgBouncer 模式。
为什么需要这个?
PgBouncer 在事务池模式下不支持 PostgreSQL 的预处理语句(prepared statements)。启用 PgBouncer 模式会禁用预处理语句以确保兼容性。
常见 PgBouncer 错误
| 错误 | 原因 | 解决方案 |
|---|---|---|
server_login_retry | 登录失败次数过多 | 等待 1-2 分钟后重试 |
no more connections allowed | 连接池已满 | 稍后重试 |
prepared statement does not exist | 未启用 PgBouncer 模式 | 启用 PgBouncer 模式 |
连接字符串参数
使用 PgBouncer 时,通常会用到这些 URL 参数,但 LastBackup 会自动处理:
?pgbouncer=true&connection_limit=1你不需要手动添加这些参数,只需在界面中启用 PgBouncer 模式即可。
最佳实践
- 使用具有最小权限的专用备份用户
- 远程连接启用 SSL
- 定期测试恢复以验证备份完整性
- 高流量数据库考虑使用连接池