初始配置
数据库安装完成后(无论一键或手工方式),建议根据实际使用场景对配置文件做一些简单设置。本章介绍最常用的三项:访问配置、基础参数配置与归档配置。参数的完整说明见第三篇 配置 → 配置参数参考 及 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_addresses | localhost | '*' | 监听地址,改为 * 允许远程连接 |
| port | 1921 | 1921 | 数据库端口 |
| max_connections | 100 | 1000 | 最大连接数,按业务并发调整 |
| work_mem | 4MB | 16MB | 排序与散列使用的内存量 |
| wal_buffers | -1 | 16MB | 预写日志(WAL)缓冲区 |
| checkpoint_completion_target | 0.9 | 0.9 | 检查点完成目标时间 |
| max_wal_size | 1GB | 8GB | 自动检查点之间 WAL 增长的最大尺寸 |
| min_wal_size | 80MB | 2GB | 检查点时回收 WAL 的阈值 |
| default_statistics_target | 100 | 100 | 默认统计目标 |
| log_destination | stderr | csvlog | 服务器日志记录方法 |
| logging_collector | off | on | 日志收集器 |
| random_page_cost | 4.0 | 1.1 | 非顺序获取磁盘页面的代价估计(SSD 建议 1.1) |
| maintenance_io_concurrency | 10 | 200 | 维护工作的 IO 并发数 |
| wal_log_hints | off | on | 检查点后首次页面更改时写整页到 WAL |
以下参数与硬件资源相关,测试环境配置不高时可以不调整:
| 参数 | 默认值 | 建议设置 | 说明 |
|---|---|---|---|
| shared_buffers | 128MB | 内存的 25%~40% | 数据库使用的共享内存缓冲区量 |
| effective_cache_size | 4GB | 内存的 50% | 规划器对磁盘缓冲区尺寸的假设 |
| max_worker_processes | 8 | CPU 核数 | 后台进程的最大数量 |
| max_parallel_workers | 8 | CPU 核数 | 并行操作工作者的最大数量 |
说明:修改 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 用户下)确认集群状态(见启动服务与集群校验)。