跳到主要内容

初始配置

数据库安装完成后(无论一键或手工方式),建议根据实际使用场景对配置文件做一些简单设置。本章介绍最常用的三项:访问配置、基础参数配置与归档配置。参数的完整说明见第三篇 配置 → 配置参数参考 及 postgresql.conf 文件内注释。

说明:一键安装时,脚本已自动完成监听地址、端口、归档等基础配置,本章内容供安装后核查与按需调整参考。

访问配置​

通过修改数据目录下的 pg_hba.conf 实现对 Halo 数据库的访问认证配置:

vi $PGDATA/pg_hba.conf

添加(0/0 表示任意 IP 地址的任意用户):

# TYPE DATABASE USER ADDRESS METHOD
host all all 0/0 md5
host test test 10.10.10.17/24 md5

第二条表示:允许地址为 10.10.10.17 的用户 test 通过 MD5 加密密码方式连接主机上的 test 数据库。

修改后重载生效:

pg_ctl reload

基础参数配置​

修改数据目录下的 postgresql.conf:

vi $PGDATA/postgresql.conf

常用参数及建议设置如下:

参数默认值建议设置说明
listen_addresseslocalhost'*'监听地址,改为 * 允许远程连接
port19211921数据库端口
max_connections1001000最大连接数,按业务并发调整
work_mem4MB16MB排序与散列使用的内存量
wal_buffers-116MB预写日志(WAL)缓冲区
checkpoint_completion_target0.90.9检查点完成目标时间
max_wal_size1GB8GB自动检查点之间 WAL 增长的最大尺寸
min_wal_size80MB2GB检查点时回收 WAL 的阈值
default_statistics_target100100默认统计目标
log_destinationstderrcsvlog服务器日志记录方法
logging_collectoroffon日志收集器
random_page_cost4.01.1非顺序获取磁盘页面的代价估计(SSD 建议 1.1)
maintenance_io_concurrency10200维护工作的 IO 并发数
wal_log_hintsoffon检查点后首次页面更改时写整页到 WAL

以下参数与硬件资源相关,测试环境配置不高时可以不调整:

参数默认值建议设置说明
shared_buffers128MB内存的 25%~40%数据库使用的共享内存缓冲区量
effective_cache_size4GB内存的 50%规划器对磁盘缓冲区尺寸的假设
max_worker_processes8CPU 核数后台进程的最大数量
max_parallel_workers8CPU 核数并行操作工作者的最大数量

说明:修改 postgresql.conf 后,部分参数 pg_ctl reload 即可生效,部分参数(如 shared_buffers、port 等)需 pg_ctl restart 重启实例。

归档配置​

归档模式将 WAL 日志归档保存,是物理备份(RMAN2)与基于时间点恢复(PITR)的前提。

1)创建归档目录

mkdir -p /data/halo/archivedir
chown -R halo:halo /data/halo/archivedir

注意:归档目录必须保证 halo 用户有读写权限,否则归档会持续失败并刷日志。集群部署时,所有节点的归档目录路径必须一致。

2)修改数据库配置文件

vi $PGDATA/postgresql.conf
# 启用归档模式
archive_mode = on

# 将 WAL 文件归档到指定目录(%p 为 WAL 文件路径,%f 为文件名)
archive_command = 'test ! -f /data/halo/archivedir/%f && cp %p /data/halo/archivedir/%f'

# 还原命令(恢复数据库时从归档目录复制 WAL 到日志目录)
restore_command = 'cp /data/halo/archivedir/%f %p'

3)重启数据库生效

archive_mode 需重启实例生效:

pg_ctl restart

4)验证归档工作

切换一次 WAL 后,检查归档目录是否产生归档文件:

psql -c "SELECT pg_switch_wal();"
ls /data/halo/archivedir/
000000010000000000000001
000000010000000000000002
...

注意:测试阶段可以不开启归档。

连接验证​

配置完成后,从应用服务器验证数据库连接(以默认端口 1921 为例):

psql -h <数据库IP> -p 1921 -U halo -d halo0root -c "SELECT version();"

集群环境可通过 VIP 连接,并使用 clumgrctl list(halo 用户下)确认集群状态(见启动服务与集群校验)。