Postgresql学习笔记(二)配置文件

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介:

1、配置文件

配置文件控制着一个PostgreSQL服务器实例的基本行为,主要包含postgresql.conf、pg_hba.conf、pg_ident.conf

(1)postgresql.conf

   该文件包含一些通用设置,比如内存分配,新建database的默认存储位置,PostgreSQL服务器的IP地址,日志的位置以及许多其他设置。9.4版引入了

   一个新的postgresql.auto.conf文件,任何时候执行Altersystem SQL命令,都会创建或重写该文件。该文件中的设置会替代postgresql.conf文件中的设置。

(2)pg_hba.conf

    该文件用于控制访问安全性,管理客户端对Postgresql服务器的访问权限,内容包括:允许哪些用户连接到哪个数据库,允许哪些IP或者哪个网段的IP连

    接到本服务器,以及指定连接时使用的身份验证模式

(3)pg_ident.conf

   pg_hba.conf的权限控制信息中的身份验证模式字段如果指定为ident方式,则用户连接时系统会尝试访问pg_ident文件,如果该文件存在,则系统会基于

    文件内容将当前执行登录操作的操作系统用户映射为一个PostgreSQL数据库内部用户的身份来登录。

2、查看配置文件的位置:    

1
2
3
4
5
6
7
8
postgres= # selectname,setting from pg_settings where category='File Locations';
        name        |                 setting                 
-------------------+-----------------------------------------
  config_file       | /var/lib/pgsql/9 .6 /data/postgresql .conf
  data_directory    |  /var/lib/pgsql/9 .6 /data
  external_pid_file | 
  hba_file          |  /var/lib/pgsql/9 .6 /data/pg_hba .conf
  ident_file        |  /var/lib/pgsql/9 .6 /data/pg_ident .conf

 

3postgresql.conf

3.1、关键的设置

1
2
3
4
5
6
7
8
9
10
postgres= # selectname,context,unit,setting,boot_val,reset_val from pg_settings where namein('listen_addresses','max_connections','shared_buffers','effective_cache_size','work_mem','maintenance_work_mem')order by context,name;
          name         | context   | unit | setting |boot_val  | reset_val 
----------------------+------------+------+---------+-----------+-----------
  listen_addresses     | postmaster |      | *      | localhost | *
  max_connections      | postmaster |      | 100    | 100       | 100
  shared_buffers       | postmaster | 8kB  | 16384  | 1024      | 16384
  effective_cache_size | user       | 8kB | 524288  | 524288    | 524288
  maintenance_work_mem | user       | kB  | 65536   | 65536     | 65536
  work_mem             | user       | kB  | 4096    | 4096      | 4096
(6 rows)

 

context 设置为postmaster,更改此形参后需要重启PostgreSQL服务才能生效;

设置为user,那么只需要执行一次重新加载即可全局生效。重启数据库服务会终止活动连接,但重新加载不会。  

unit 字段表示这些设置的单位

setting是指当前设置;boot_val是指默认设置;reset_val是指重新启动服务器或重新加载设置之后的新设置

在postgresql.conf中修改了设置后,一定记得查看一下setting和reset_val并确保二者是一致,否则说明设置并未生效,需要重新启动服务器或者重新加载设置

3.2postgresql.auto.confpostgresql.conf区别

对于9.4版及之后的版本来说,Postgresql.auto.conf的优先级是高于postgresql.conf的,如果这两个文件中存在同名配置项,则系统会优先选择前者设定的值。

3.3postgresql.conf以下网络设置,修改这些值是一定要重新启动数据库服务的

listen_addresses 一般设定为localhost或者local,但也有很多人会设为*,表示使用本机任一IP地址均可连接到Postgresql服务

port 默认值 为5432

max_connections

3.4、以下四个设置对系统性能有着全局性的影响,建议你在实际环境下通过实测来找到最优值

(1)share_buffers

    用于缓存最近访问过的数据页的内存区大小,所有用户会话均可共享此缓存区

    一般来说越大越好,至少应该达到系统总内存的25%,但不宜超过8GB,因为超过后会出现“边际收益递减”效应。

    需重启postgreSQL服务

2effective_cache_size

一个查询执行过程中可以使用的最大缓存,包括操作系统使用的部分以及PostgreSQL使用部分,系统并不会根据这个值来真实地分配这么多内存,但是规划器会根据这个值来判断系统能否提供查询执行过程中所需的内存。如果将此设置设得过小,远远小于系统真实可用内存量,那么可能会给规划器造成误导,让规划器认为系统可用内存有限,从而选择不使用索引而是走全表扫描(因为使用索引虽然速度快,但需要占用更多的中间内存)。

在一台专用于运行PostgreSQL数据库服务的服务器上,建议将effective_cache_size的值设为系统总内存的一半或者更多。

此设置可动态生效,执行重新加载即可。

3work_mem

此设置指定了用于执行排序,哈希关联,表扫描等操作的最大内存量。

此设置可动态生效,执行重新加载即可。

   4mintenance_work_mem

     此设置指定可用于vaccum操作(即清空已标记为“被删除”状态的记录)这类系统内部维护操作的内存总量。

     其值不应大于1GB

此设置可动态生效,执行重新加载即可。

3.5修改参数命令

1
Alter system  set  work_mem=8192;

设置重新加载命令

1
Select pg_reload_conf();

3.6、遇到修改了postgresql.conf文件,结果服务器崩溃了这种情况

定位这种问题最简单的方法是查看日志文件,该文件位于postgresql数据文件夹的根目录或者pg_log子文件夹下。

4pg_hba.conf

cat /var/lib/pgsql/9.6/data/pg_hba.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
# TYPE  DATABASE        USER            ADDRESS                 METHOD
  
# "local" isfor Unix domain socket connections only
local    all             all                                     peer
# IPv4 localconnections:
host    all             all             0.0.0.0 /0                trust
# IPv6 localconnections:
host    all             all             ::1 /128                  ident
# Allow replicationconnections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                peer
#host    replication     postgres        127.0.0.1/32            ident
#host    replication     postgres        ::1/128                 ident

(1)   身份验证模式,一般以下几种常用选项:ident、trust、md5以及password

  1. 1版本开始引入了peer身份验证模式。

Ident和peer模式公适用于Linux,Unix和Mac,不适用于windwos

Reject模式,其作用是拒绝所有请求。

(2)   如果你将+0.0.0./0 reject+规则放到+127.0.0.1/32 trust+的前面,那么此时本地用户全都无法连接,即使下面有规则允许也不行。

(3)各模式

trust最不安全的身份验证模式,该模式允许用户“自证清白”,即可以不用密码就连到数据库

md5该模式最常用,要求连接发起者携带用md5算法加密的密码

password 不推荐,因为该模式使用明文密码进行身份验证,不安全

ident:该身份验证模式下,系统会将请求发起的操作系统用户映射为PostgreSQL数据库内部用户,并以该内部用户的权限登录,且此时无需提供登录密码。操作系统用户与数据库内部用户之间的映射关系会记录在pg_ident.conf文件中。

peer使用发起端的操作系统名进行身份验证

5、配置文件的重新加载

1
2
3
/usr/pgsql-9 .6 /bin/pg_ctlreload  -D  /var/lib/pgsql/9 .6 /data/ 
systemctlreload postgresql-9.6.service 
selectpg_reload_conf();



本文转自 corasql 51CTO博客,原文链接:http://blog.51cto.com/corasql/1910485,如需转载请自行联系原作者
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
SQL 存储 Java
24PostgreSQL 日常维护和巡检 | 学习笔记(一)
快速学习24PostgreSQL 日常维护和巡检
591 0
24PostgreSQL 日常维护和巡检 | 学习笔记(一)
|
11月前
|
存储 SQL 安全
【MySQL学习笔记】系列一:数据库概述、初识关系型数据库MySQL(二)
【MySQL学习笔记】系列一:数据库概述、初识关系型数据库MySQL(二)
10303 0
|
11月前
|
存储 SQL Oracle
【MySQL学习笔记】系列一:数据库概述、初识关系型数据库MySQL(一)
【MySQL学习笔记】系列一:数据库概述、初识关系型数据库MySQL(一)
|
SQL 关系型数据库 Linux
【PostgreSQL】入门学习笔记(包括安装、环境与参数配置、故障排查以及备份还原等)
以下内容为前几天在备考PostgreSQL入门考试时候做的笔记,经过了全职的两天的奋战与实验,并最终顺利通过了PCA初级认证考试。现在把我学习的笔记分享给大家,文中有对应的思维导图图片可供查看,内容与后面正文文本一致。另外,由于SQL语句部分比较基础,基本上会一门数据库就都会,所以此处部分省略掉不做过多记录了。
295 0
【PostgreSQL】入门学习笔记(包括安装、环境与参数配置、故障排查以及备份还原等)
|
存储 SQL 监控
PolarDB-X 进行 TP 负载测试(三)| 学习笔记
快速学习 PolarDB-X 进行 TP 负载测试。
300 0
PolarDB-X 进行 TP 负载测试(三)| 学习笔记
|
存储 运维 关系型数据库
PolarDB-X 读写分离与 HTAP| 学习笔记
快速学习 PolarDB-X 读写分离与 HTAP。
336 0
PolarDB-X 读写分离与 HTAP| 学习笔记
|
SQL 存储 运维
PolarDB-X 的部署与运维(三)| 学习笔记
快速学习 PolarDB-X 的部署与运维。
488 0
PolarDB-X 的部署与运维(三)| 学习笔记
|
数据可视化 Java 分布式数据库
PolarDB-X 数据 TTL 过期删除(三)| 学习笔记
快速学习 PolarDB-X 数据 TTL 过期删除。
155 0
PolarDB-X 数据 TTL 过期删除(三)| 学习笔记
|
运维 关系型数据库 测试技术
PolarDB-X 冷热数据归档(二)| 学习笔记
快速学习 PolarDB-X 冷热数据归档。
208 0
PolarDB-X 冷热数据归档(二)| 学习笔记
|
SQL 存储 Kubernetes
PolarDB-X 数据导入导出 | 学习笔记
快速学习 PolarDB-X 数据导入导出
657 0
PolarDB-X 数据导入导出 | 学习笔记