Skip to content

KingBaseES 核心配置文件

配置文件概述

KingBaseES 的配置文件主要包括以下几类:

  • 主配置文件kingbase.conf - 控制数据库服务的核心参数
  • 连接认证文件pg_hba.conf - 控制客户端连接访问权限
  • 恢复配置文件recovery.conf/kingbase.auto.conf - 控制备库恢复和复制行为
  • 环境变量文件kb_envar.conf - 设置数据库服务的环境变量
  • 日志配置文件log.conf - 控制日志输出格式和级别

主配置文件 (kingbase.conf)

kingbase.conf 是 KingBaseES 最核心的配置文件,位于数据目录下,控制数据库的各种行为和资源限制。

配置文件结构

配置文件采用键值对格式,每行一个配置项:

ini
# 注释行以 # 开头
parameter_name = value

主要配置参数

1. 连接与认证

参数默认值说明推荐值
listen_addresseslocalhost监听的IP地址,*表示所有地址*(生产环境根据需要限制)
port54321数据库服务端口保持默认或根据规划修改
max_connections100最大并发连接数根据业务需求调整,一般500-2000
superuser_reserved_connections3为超级用户保留的连接数5-10
unix_socket_directories/tmpUnix套接字文件目录保持默认或设置为专用目录

2. 资源管理

参数默认值说明推荐值
shared_buffers256MB共享缓冲区大小系统内存的25%-30%
work_mem4MB每个查询操作的工作内存根据查询复杂度调整,一般8MB-32MB
maintenance_work_mem64MB维护操作(如VACUUM)的内存系统内存的10%,最大不超过2GB
effective_cache_size1GB查询优化器假设的可用缓存大小系统内存的50%-75%
wal_buffers-1WAL缓冲区大小,-1表示自动计算保持默认或设置为64MB-256MB

3. WAL 与归档

参数默认值说明推荐值
wal_levelreplicaWAL日志级别replica(主备复制)或logical(逻辑复制)
archive_modeoff是否启用WAL归档on(生产环境必须启用)
archive_command''归档命令根据归档策略设置,如'cp %p /archive/%f'
max_wal_senders10最大WAL发送进程数根据备库数量调整
wal_keep_size0保留的WAL日志大小1GB-10GB,根据备库延迟情况调整
checkpoint_timeout5min检查点超时时间15min-30min
max_wal_size1GB最大WAL文件大小4GB-8GB
min_wal_size80MB最小WAL文件大小512MB-1GB

4. 查询优化

参数默认值说明推荐值
random_page_cost4.0随机读取页面的成本机械硬盘:4.0,SSD:1.1-1.5
seq_page_cost1.0顺序读取页面的成本保持默认
effective_io_concurrency1假设的磁盘I/O并发数机械硬盘:2-4,SSD:100-200
default_statistics_target100统计信息收集目标100-500

5. 日志配置

参数默认值说明推荐值
logging_collectoroff是否启用日志收集器on
log_directory'log'日志目录保持默认或设置为专用目录
log_filename'kingbase-%a.log'日志文件名格式'kingbase-%Y-%m-%d_%H%M%S.log'
log_rotation_age1d日志文件轮换时间1h-1d
log_rotation_size0日志文件大小限制100MB-500MB
log_statement'none'记录的SQL语句类型'ddl''mod'
log_min_duration_statement-1记录执行时间超过此值的SQL1000(毫秒)

6. 复制与高可用

参数默认值说明推荐值
hot_standbyon备库是否允许只读查询on
max_standby_streaming_delay30s备库应用WAL的最大延迟30s-300s
hot_standby_feedbackoff备库是否向主库反馈查询状态on(减少主库VACUUM影响)

配置文件加载顺序

KingBaseES 按以下顺序加载配置:

  1. 编译时默认值
  2. kingbase.conf 文件中的设置
  3. kingbase.auto.conf 文件中的设置(自动生成,优先级高于kingbase.conf)
  4. 命令行参数(优先级最高)

配置文件管理

1. 查看当前配置

sql
-- 查看所有配置参数
SHOW ALL;

-- 查看单个配置参数
SHOW shared_buffers;

-- 查看参数是否需要重启
SELECT name, setting, unit, short_desc, context FROM pg_settings WHERE name = 'shared_buffers';

2. 修改配置

方法1:修改配置文件后重启数据库

bash
# 编辑配置文件
vi /data/kingbase/kingbase.conf

# 重启数据库
systemctl restart kingbase8d.service

方法2:使用ALTER SYSTEM命令(无需重启)

sql
-- 修改参数,会自动写入kingbase.auto.conf
ALTER SYSTEM SET max_connections = 500;

-- 重新加载配置(适用于context为'sighup'的参数)
SELECT pg_reload_conf();

连接认证文件 (pg_hba.conf)

pg_hba.conf 控制客户端如何连接到数据库,位于数据目录下。

配置文件格式

每行一个规则,格式如下:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

参数说明

参数取值范围说明
TYPElocal, host, hostssl, hostnossl连接类型
DATABASE数据库名, all, sameuser, samerole, replication允许访问的数据库
USER用户名, all, +groupname允许访问的用户
ADDRESSIP地址/掩码, samehost, samenet允许连接的IP地址
METHODtrust, reject, md5, password, scram-sha-256, gss, sspi, ident, peer认证方法

常用认证方法

  • md5:使用MD5加密密码认证(推荐生产环境使用)
  • password:明文密码认证(不推荐)
  • scram-sha-256:更安全的密码认证机制(KingBaseES V8 R7支持)
  • peer:基于操作系统用户名的认证(仅本地连接)
  • ident:基于Ident协议的认证
  • trust:无条件信任(仅测试环境使用)
  • reject:拒绝连接

典型配置示例

# 允许本地所有用户使用peer认证连接所有数据库
local   all             all                                     peer

# 允许本地所有用户使用md5认证连接所有数据库
local   all             all                                     md5

# 允许192.168.1.0/24网段的用户使用md5认证连接所有数据库
host    all             all             192.168.1.0/24            md5

# 允许10.0.0.0/8网段的repluser用户使用md5认证进行复制
host    replication     repluser        10.0.0.0/8                md5

# 拒绝来自192.168.2.1的所有连接
host    all             all             192.168.2.1/32            reject

配置重载

修改 pg_hba.conf 后,需要重新加载配置:

sql
SELECT pg_reload_conf();

恢复配置文件

1. KingBaseES V8 R6 - recovery.conf

在 KingBaseES V8 R6 中,备库恢复配置使用 recovery.conf 文件,位于数据目录下。

主要配置参数

参数说明示例
standby_mode是否处于备库模式on
primary_conninfo主库连接信息'host=192.168.1.101 port=54321 user=repluser password=repluser123'
restore_command从归档恢复WAL的命令'cp /archive/%f %p'
recovery_target_timeline恢复目标时间线'latest'
trigger_file触发备库提升为主库的文件路径'/data/kingbase/promote_trigger'

示例配置

ini
standby_mode = 'on'
primary_conninfo = 'host=192.168.1.101 port=54321 user=repluser password=repluser123'
restore_command = 'cp /archive/%f %p'
recovery_target_timeline = 'latest'
trigger_file = '/data/kingbase/promote_trigger'

2. KingBaseES V8 R7 - kingbase.auto.conf

在 KingBaseES V8 R7 中,备库恢复配置集成到 kingbase.auto.conf 文件中,使用 ALTER SYSTEM 命令管理。

配置方法

sql
-- 在备库上执行
ALTER SYSTEM SET standby_mode = 'on';
ALTER SYSTEM SET primary_conninfo = 'host=192.168.1.101 port=54321 user=repluser password=repluser123';
ALTER SYSTEM SET recovery_target_timeline = 'latest';

环境变量文件 (kb_envar.conf)

kb_envar.conf 用于设置数据库服务的环境变量,位于安装目录的 bin 子目录下。

主要环境变量

变量名说明示例
KINGBASE_HOME数据库安装目录/opt/Kingbase/ES/V8
KINGBASE_DATA数据目录/data/kingbase
LD_LIBRARY_PATH动态库搜索路径$KINGBASE_HOME/lib
PATH命令搜索路径$KINGBASE_HOME/bin:$PATH
PGPORT默认端口54321
PGUSER默认用户名system

日志配置文件 (log.conf)

log.conf 控制日志输出格式和级别,位于数据目录下。

主要配置参数

参数说明示例
log_destination日志输出目标'stderr,csvlog'
logging_collector是否启用日志收集器on
log_directory日志目录'log'
log_filename日志文件名格式'kingbase-%Y-%m-%d_%H%M%S.log'
log_rotation_age日志轮换时间'1d'
log_rotation_size日志轮换大小100MB
log_min_messages日志消息级别'warning'
log_min_error_statement记录错误语句的级别'error'

配置文件最佳实践

1. 生产环境配置建议

  • 备份原始配置文件:修改前先备份,便于回滚
  • 使用版本控制:将配置文件纳入版本控制,便于追踪变更
  • 分环境配置:开发、测试、生产环境使用不同的配置文件
  • 逐步调整:每次只修改少量参数,观察效果后再调整其他参数
  • 记录变更:记录每次配置变更的原因、时间和影响范围

2. 性能相关配置建议

  • shared_buffers:设置为系统内存的25%-30%,不宜过大
  • work_mem:根据查询复杂度调整,避免设置过大导致OOM
  • effective_cache_size:设置为系统内存的50%-75%,帮助查询优化器做出更好的决策
  • wal_buffers:对于写入频繁的系统,适当增大此参数
  • checkpoint_timeout:适当增大此参数,减少检查点对性能的影响

3. 安全相关配置建议

  • pg_hba.conf:遵循最小权限原则,只允许必要的IP和用户访问
  • 认证方法:生产环境使用md5或scram-sha-256认证
  • 监听地址:根据需要限制监听地址,避免暴露到公网
  • 日志配置:启用慢查询日志和错误日志,便于问题排查

4. 高可用相关配置建议

  • wal_level:设置为replica或logical,支持复制
  • archive_mode:启用归档,确保数据可恢复
  • wal_keep_size:设置足够大的值,避免备库因WAL缺失导致复制中断
  • hot_standby_feedback:启用,减少主库VACUUM对备库的影响

常见问题

Q1: 修改配置后为什么没有生效?

解决方案

  • 检查参数的context类型,有些参数需要重启数据库
  • 确认配置文件路径是否正确
  • 执行SELECT pg_reload_conf()重新加载配置
  • 检查日志文件中是否有配置错误信息

Q2: 如何查看配置文件的语法错误?

解决方案

bash
# 使用kingbase工具检查配置文件
kingbase --config-file=/data/kingbase/kingbase.conf --check

Q3: 如何备份和恢复配置文件?

解决方案

bash
# 备份配置文件
tar -czvf kingbase_config_backup.tar.gz /data/kingbase/kingbase.conf /data/kingbase/pg_hba.conf /data/kingbase/kingbase.auto.conf

# 恢复配置文件
tar -xzvf kingbase_config_backup.tar.gz -C /

Q4: 为什么有些参数在ALTER SYSTEM中无法修改?

解决方案

  • 检查参数的context类型,只有context为'superuser'或'user'的参数可以通过ALTER SYSTEM修改
  • 有些参数需要重启数据库才能生效,只能通过修改配置文件

版本差异注意事项

V8 R6 与 V8 R7 配置差异

特性V8 R6V8 R7
恢复配置文件recovery.confkingbase.auto.conf
认证方法支持md5支持md5和scram-sha-256
ALTER SYSTEM支持基本参数支持更多参数
日志配置部分参数在log.conf统一在kingbase.conf
动态参数调整支持部分参数支持更多参数动态调整

配置文件管理工具

1. KingBaseES Manager (KEM)

提供图形化界面管理配置文件,支持:

  • 在线查看和修改配置参数
  • 配置变更历史记录
  • 配置文件备份和恢复
  • 配置模板管理

2. 命令行工具

  • ksql:用于执行SQL命令查看和修改配置
  • pg_config:查看编译时配置
  • pg_settings:系统视图,提供配置参数的详细信息

总结

KingBaseES 的配置文件是数据库运维的核心,合理配置这些文件对于数据库的性能、安全性和可靠性至关重要。DBA应该:

  1. 深入理解每个配置参数的含义和影响
  2. 根据业务需求和硬件环境调整配置
  3. 定期审查和优化配置
  4. 建立配置变更管理流程
  5. 备份配置文件,便于灾难恢复

通过合理配置KingBaseES的核心配置文件,可以充分发挥数据库的性能,提高系统的可靠性和安全性,为业务提供稳定高效的数据服务。