快戳进来!PostgreSQL数据库通用优化模板!

快戳进来!PostgreSQL数据库通用优化模板!

Whoami:5年+金融、政府、医疗领域工作经验的DBA Certificate:PGCM、OCP、YCP Skill:Oracle、Mysql、PostgreSQL、国产数据库 Platform:CSDN、墨天伦、公众号(呆呆的私房菜)

业务范围:数据库安装部署、日常维护、主备切换、故障处理、性能优化、技术培训等。 需要的伙伴或者商业合作请移步 公众号【呆呆的私房菜】获取联系方式。
阅读本文可以了解PostgreSQL数据库配置上的内容,包含操作系统配置、环境变量配置、数据库相关参数配置。

01 操作系统配置

操作系统的优化主要针对防火墙、内核参数、系统限制上做优化。

shell 复制代码
## 内核参数优化
vi /etc/sysctl.conf
kernel.shmmax = 976257024   #1/2 of physical RAM 
kernel.shmall = 2097152  #physical RAM size / pagesize For most systems, this will be the value 2097152
kernel.shmmni = 819200
vm.nr_hugepages = 65536 #hugepage, when memory is bigger than 64G
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144    
net.core.rmem_max = 4194304    
net.core.wmem_default = 262144    
net.core.wmem_max = 4194304
fs.file-max = 6815744
## 应用生效
sysctp -p

注意:上述内核参数配置规则为通用模板,优化过程中的参数的设定要以业务实际情况为准。

shell 复制代码
## 系统限制优化
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 #系统中所能设定的的锁定内存地址空间最大值

02 环境变量配置

建议在PostgreSQL数据库部署过程中,配置对应安装用户的环境变量。

shell 复制代码
su - postgres
vi ~/.bashrc
## 添加以下:
export PGUSER=postgres
export PGPORT=5432
export PATH=$PATH:$HOME/bin:/pg/pg13/bin/
export PGDATA=/pg/pg13/data
$ source ~/.bashrc

03 数据库配置

数据库配置主要涉及连接配置和数据库参数配置。 一、连接配置(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 的认证方式也是当下最安全的方法
shell 复制代码
/usr/pgsql - 9.6/bin/psql - h pghostl -p 1921 - U postgres mydb
psql : SCRAM authentication requires libpq version 10 or above

二、连接配置(pg_hba.conf)

文件路径:$PGDATA/postgresql.conf 数据库参数优化分为如下几块内容:

(1)监听参数

shell 复制代码
## 数据库监听地址
alter system set listen_addresse = '*';

(2)内存参数

shell 复制代码
## 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';

(3)日志参数

shell 复制代码
## 数据库运行日志,默认不开启
alter system set logging_collector = 'on'

## 日志格式,默认stderr,建议csvlog
alter system set log_destination = 'csvlog';

## 慢SQL记录,单位ms
alter system set log_min_duration_statement = 120000;

## 审计记录,可选参数:none\ddl\mod\all
alter system set log_statement = 'ddl';

## 死锁等待时间,默认1000,单位m
alter system set log_lock_waits = on;
alter system set deadlock_timeout = 1000;

## 临时文件超过某个值时会记录到日志,单位KB
alter system set log_temp_files = 250000;

## 记录更详细的信息
alter system set log_error_verbosity = verbose;

## 记录检查点信息
alter system set  log_checkpoints = on;

(4)强制检查点

shell 复制代码
## 单位s,不建议频繁检查点,否则xlog会产生很多的full page write
alter system set checkpoint_timeout = 1800;

(5)wal保留数量

shell 复制代码
## pg_wal日志文件段的最小大小
alter system set wal_keep_size = '1GB';

(6)连接数设置

shell 复制代码
## 设置最大连接数
alter system set max_connections = 1000;

## 设置super最大连接数
alter system set superuser_reserved_connections = 10;

(7)分组提交

shell 复制代码
## 默认分组提交是即时提交,高并发
alter system set commit_siblings = 5;
alter system set commit_delay = 10;

(8)autovacuum

shell 复制代码
## 自动清理进程,建议配置为max(min(8,cup核数/2),5)
alter system set autovacuum_max_workers = 8;

(9)归档配置

shell 复制代码
## 启用归档配置
alter system set archive_mode = on;
alter system set archive_command  = 'cp %p /pg/arch/archive_wal_%f' #此处%p表示归档文件全路径,%f表示归档文件名字。
相关推荐
程序员学习随笔4 小时前
PostgreSQL技术内幕28:触发器实现原理
数据库·postgresql
m0_6530313620 小时前
PostgreSQL技术大讲堂 - 第86讲:数据安全之--data_checksums天使与魔鬼
postgresql
qq_339282232 天前
PostgreSQL-常用命令
数据库·postgresql·oracle
江节胜-胜行全栈AI2 天前
PostgreSQL-中文字段排序-修改字段的排序规则
数据库·postgresql
1988我想和这个世界谈谈3 天前
若依前后端分离版本从mysql切换到postgresql数据库
数据库·postgresql
北漂老男孩4 天前
MySQL、Oracle 和 PostgreSQL 是三种主流的关系型数据库的主要原理性差异分析
数据库·mysql·postgresql·oracle
-天凉好秋-4 天前
Windows的WSL中的Docker启动Postgresql如何对外暴露端口号
windows·docker·postgresql
Linging_244 天前
Debezium嵌入式连接postgresql封装服务
数据库·postgresql
techdashen5 天前
性能比拼: MySQL vs PostgreSQL
数据库·mysql·postgresql