Whoami:5年+金融、政府、医疗领域工作经验的DBACertificate:OCP、PCPSkill:Oracle、Mysql、PostgreSQLPlatform:CSDN、墨天伦、公众号(呆呆的私房菜)
阅读本文可以了解PostgreSQL数据库配置上的内容,包含操作系统配置、环境变量配置、数据库相关参数配置。

操作系统的优化主要针对防火墙、内核参数、系统限制上做优化。
## 内核参数优化vi etc/sysctl.confkernel.shmmax = 976257024 #1/2 of physical RAMkernel.shmall = 2097152 #physical RAM size pagesize For most systems, this will be the value 2097152kernel.shmmni = 819200vm.nr_hugepages = 65536 #hugepage, when memory is bigger than 64Gkernel.shmmni = 4096kernel.sem = 250 32000 100 128fs.aio-max-nr = 1048576net.ipv4.ip_local_port_range = 9000 65500net.core.rmem_default = 262144net.core.rmem_max = 4194304net.core.wmem_default = 262144net.core.wmem_max = 4194304fs.file-max = 6815744## 应用生效sysctp -p
注意:上述内核参数配置规则为通用模板,优化过程中的参数的设定要以业务实际情况为准。
## 系统限制优化vi etc/security/limits.conf* soft nofile 1024000 #当前系统生效的打开文件的数目* hard nofile 1024000 #系统中所能设定的打开文件的最大值* soft nproc unlimited #当前系统生效的进程的数目* hard nproc unlimited #系统中所能设定的进程数目的最大值* soft core unlimited #当前系统生效的内核文件的大小* hard core unlimited #系统中所能设定的内核文件的最大值* soft memlock unlimited #当前系统生效的锁定内存地址空间的大小* hard memlock unlimited #系统中所能设定的的锁定内存地址空间最大值
建议在PostgreSQL数据库部署过程中,配置对应安装用户的环境变量。
su - postgresvi ~/.bashrc## 添加以下:export PGUSER=postgresexport PGPORT=5432export PATH=$PATH:$HOME/bin:/pg/pg13/bin/export PGDATA=/pg/pg13/data$ source ~/.bashrc
数据库配置主要涉及连接配置和数据库参数配置。
1. 连接配置(pg_hba.conf)
该文件用于控制访问安全性,管理客户端对于PostgreSQL服务器的访问权限。简单理解就是:允许哪个IP(或哪个网段)的哪个用户通过连接到哪个数据库,以及指定连接时使用的身份验证模式。
文件路径:$PGDATA/pg_hba.conf

| 选项 | 选项说明 |
TYPE | local:本地使用套接字(socket)登陆 |
host:通过tcp/ip登陆 | |
ADDRES | IP地址,指定连接的地址。0.0.0.0表示所有地址。/32表示特定IP,0.0.0.0/32表示本地回环地址127.0.0.1。 |
/24表示小网段下的全部IP,192.168.99.0/24表示192.168.99.0-192.168.99.255的所有IP | |
/16表示大网段下的全部IP。192.168.0.0/16表示192.168.0.0-192.168.255.255所有IP | |
/128表示ipv6的地址 | |
METHOD | trust:免密认证,无需密码直接登录 |
reject:拒绝登录,拒绝某个特定IP或网段登录 | |
MD5加密,密码将转化为md5值进行验证 | |
Password明文密码验证,切勿在非信任网路使用password认证方式 | |
scram-sha-256加密,将密码值转化为scram-sha-256的值进行验证,是postgresql10后新增的SASL 的认证方式也是当下最安全的方法 |
注意:scram-sha-256是PostgreSQL10中新增的基于SASL的认证方式,也是最安全的认证方式。但这种方式不支持旧版本的客户端库。如果10以前的客户端库连接数据库,会有如下错误:
/usr/pgsql - 9.6/bin/psql - h pghostl -p 1921 - U postgres mydbpsql : SCRAM authentication requires libpq version 10 or above
2. 数据库参数配置
文件路径:$PGDATA/postgresql.conf
数据库参数优化分为如下几块内容:
监听参数
## 数据库监听地址alter system set listen_addresse = '*';
内存参数
## shared_buffers 默认128M,建议为主机内存的1/4。alter system SET shared_buffers = '4096M';## maintenance_work_mem 默认64M,建议设置为min(8G,(主机内存/8)/max_parallel_maintenance_workers)alter system set maintenance_work_mem = '2GB';## wal_buffers,默认值为4M,建议值 min(wal_segment_size,shared_buffers/32)alter system set wal_buffers = '16M';## effective_cache_size,默认值4GB,建议设置为0.75*主机内存alter system set effective_cache_size = '4GB';
日志参数
## 数据库运行日志,默认不开启alter system set logging_collector = 'on'## 日志格式,默认stderr,建议csvlogalter system set log_destination = 'csvlog';## 慢SQL记录,单位msalter system set log_min_duration_statement = 120000;## 审计记录,可选参数:none\ddl\mod\allalter system set log_statement = 'ddl';## 死锁等待时间,默认1000,单位malter system set log_lock_waits = on;alter system set deadlock_timeout = 1000;## 临时文件超过某个值时会记录到日志,单位KBalter system set log_temp_files = 250000;## 记录更详细的信息alter system set log_error_verbosity = verbose;## 记录检查点信息alter system set log_checkpoints = on;
强制检查点
## 单位s,不建议频繁检查点,否则xlog会产生很多的full page writealter system set checkpoint_timeout = 1800;
wal保留数量
## pg_wal日志文件段的最小大小alter system set wal_keep_size = '1GB';
连接数设置
## 设置最大连接数alter system set max_connections = 1000;## 设置super最大连接数alter system set superuser_reserved_connections = 10;
分组提交
## 默认分组提交是即时提交,高并发alter system set commit_siblings = 5;alter system set commit_delay = 10;
autovacuum
## 自动清理进程,建议配置为max(min(8,cup核数/2),5)alter system set autovacuum_max_workers = 8;
归档配置
## 启用归档配置alter system set archive_mode = on;alter system set archive_command = 'cp %p /pg/arch/archive_wal_%f' #此处%p表示归档文件全路径,%f表示归档文件名字。
本文内容就到这啦,阅读完本篇,相信你也顺利学会了PostgreSQL数据库的基础优化了吧!我们下篇再见!





