Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PostgreSQL源码包安装、开启归档、重要配置文件及参数设置

PostgreSQL源码包安装、开启归档、重要配置文件及参数设置

作者头像
数据和云
发布于 2022-03-04 05:45:07
发布于 2022-03-04 05:45:07
1.6K02
代码可运行
举报
文章被收录于专栏:数据和云数据和云
运行总次数:2
代码可运行

点击蓝字关注我们//一.PostgreSQL源码包安装及开启归档//

1.下载源码包

https://www.postgresql.org/ftp/source/v12.7/

2.安装必要的包

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum -y install readline readline-devel zlib zlib-devel gettext gettext-devel openssl openssl-devel pam pam-devel libxml2 libxml2-devel libxslt libxslt-devel perl perl-devel tcl-devel uuid-devel gcc gcc-c++ make flex bison perl-ExtUtils*

3.配置目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
userdel -r postgres#源文件目录 mkdir -p /opt/soft#安装文件目录  mkdir -p /opt/pg12#数据目录 mkdir -p /opt/pgdata#WAL 目录 mkdir -p /opt/pgwal#归档目录mkdir -p /opt/pgarchive

chown -R postgres:postgres  /optchmod 0700 /opt/pgdata /opt/pgwal /opt/pgarchive

4.解压

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd /opt/softtar -xzvf postgresql-12.7.tar.gz

5.编译安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
su - postgrescd  /opt/soft./configure --prefix=/opt/pg12 --with-pgport=5432gmake worldgmake install-world

6.数据库初始化和启动

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
软链接ln -s /opt/pg12 /opt/pgsql
初始化:输入密码123456/opt/pgsql/bin/initdb -D/opt/pgdata -X/opt/pgwal -EUTF8 -Upostgres -W
启动/opt/pgsql/bin/pg_ctl -D /opt/pgdata -l logfile start
查看版本/opt/pg12/bin/postgres --versionpostgres (PostgreSQL) 12.7

7.配置环境变量

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vi ~/.bash_profileexport PGPORT=5432export PGUSER=postgresexport PGHOME=/opt/pgsqlexport PGDATA=/opt/pgdataexport PATH=$PGHOME/bin:$PATH
source ~/.bash_profile

8.数据库启停

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
查看数据库运行状态pg_ctl -D /opt/pgdata status
启动数据库pg_ctl -D /opt/pgdata start & 查看数据库运行状态pg_ctl -D /opt/pgdata status 停止数据库pg_ctl -D /opt/pgdata stop
postgres=# select version();
重启数据库pg_ctl -D /opt/pgdata restart &

9.连接

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
netstat -lp --protocol=unix | grep postgres
psql -U postgres -h localhost -p 5432
psql -U postgres -h1.15.57.253  -p 5432

10.开启归档

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
show archive_command ;
cd $PGDATA[postgres@VM-0-9-centos pgdata]$ cat postgresql.conf |grep archive_mode#archive_mode = off             # enables archiving; off, on, or always[postgres@VM-0-9-centos pgdata]$ vi postgresql.conf 
archive_mode = on           archive_command = 'cp %p /opt/arch/%f'     
切换归档select pg_switch_wal();

//二.PostgreSQL重要配置文件及参数设置//

进入$PGDATA数据目录:

1.pg_hba.conf

作用:

  • 哪些主机可以连接数据库实例;
  • 哪个数据库用户可以使用它;
  • 允许这个用户使用哪些数据库;
  • 客户端使用什么连接方式和认证方式。

# TYPE     DATABASE     USER     ADDRESS     METHOD

TYPE:

  • local  local匹配使用Unix域套接字的连接。
  • host   匹配使用 TCP/IP建立的连接,同时匹配SSL和非SSL连接。 启用远程连接需要修改postgresql.conf中的listen_addresses参数。

METHOD:

  • trust 无条件地允许连接。 允许任何可以与PostgreSQL数据库服务器连接的用户身份登入 不需要口令或者其他任何认证。
  • reject 无条件拒绝连接。常用于从一个组中“过滤出”特定主机。 例如一个reject行可以阻塞特定的主机连接,而后面一行允许特定网络中的其余主机进行连接。 md5和password口令认证。

2.postgresql.conf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
listen_addresses = '*'  #(关联配置文件pg_hba.conf)

指定服务器在哪些 TCP/IP 地址上监听客户端连接。

值的形式是一个逗号分隔的主机名和/或数字 IP 地址列表。

特殊项*对应监听所有可用 IP 接口,0.0.0.0允许监听所有 IPv4 地址,并且::允许监听所有 IPv6 地址。

如果列表为空,服务器将根本不会监听任何 IP 接口,在这种情况中只能使用 Unix 域套接字来连接它。

默认值是localhost,它只允许建立本地 TCP/IP "环回"连接。

这能帮助在不安全网络接口上阻止重复的恶意连接请求。

这个参数只能在服务器启动时设置。 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
port = 5866

服务器监听的 TCP 端口;默认是 5866 。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
max_connections = 100

决定数据库的最大并发连接数。

这个参数只能在服务器启动时设置。(cpu 1核 50个链接)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
shared_buffers

它表示数据缓冲区中的数据块的个数,每个数据块的大小是8KB。

数据缓冲区位于数据库的共享内存中,它越大越好,不能小于128KB。

这个参数只有在启动数据库时,才能被设置。

默认值是128MB。

推荐值:1/4 主机物理内存。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wal_buffers 

用于还未写入磁盘的 WAL 数据的共享内存量。

默认值 -1 表示将该参数值设置为 shared_buffers 的 1/32 的大小 ( 大约 3%),但是不小于64kB 也不大于一个WAL段的大小(通常为 16MB)。 

如果自动的选择太大或太小可以手工设置该值,但是任何小于 32kB 的正值都将被当作 32kB。 

这个参数只能在服务器启动时设置。

事务日志缓冲区位于数据库的共享内存中。

推荐值:min( 2047MB, shared_buffers/32 ) = 512MB

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
work_mem

指定在写到临时磁盘文件之前用于内部排序操作和哈希表的内存量。

ORDER BY, DISTINCT 和合并连接( merge joins) 都会用到排序操作。 

默认值为 4 兆字节( 4MB)。

推荐值:work_mem = (输入内存数量- shared_buffers)/(连接数 * 3)* 1024 (单位是 KB);

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
maintenance_work_mem

它决定数据库的维护操作使用的内存空间的大小。

数据库的维护操作包括VACUUM、CREATE INDEX和ALTER TABLE ADD FOREIGN KEY等操作。 

值如果比较大,通常可以缩短VACUUM数据库和从dump文件中恢复数据库需要的时间。

maintenance_work_mem存放在每个数据库进程的私有内存中,而不是存放在数据库的共享内存中。这个参数可以在任何时候被设置。

开启日志采集:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
logging_collector = on    

日志目录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
log_directory = 'log'        
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'  日志文件名字log_truncate_on_rotation = off    是否覆盖log_rotation_age = 1d             每天生成log_rotation_size = 10MB          每个日志大小

优化建议

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
andom_page_cost = 2.5

规划器对一次非顺序获取磁盘页面的代价估计。 默认值是 4.0。 高端存储或者ssd可以适当调小该参数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
autovacuum_max_workers = 10

指定能同时运行的autovacuum进程的最大数量, 适当调大, 避免vacuum不及时导致表膨胀。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
checkpoint_completion_target = 0.7

增加checkpoint_completion_target来降低检查点的I/O负载, 默认0.5。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
archive_timeout =1800

强制服务器来周期性地切换到一个新的 WAL 段文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
archive_command = 'test ! -f /paic/dba/pgbackup/${PGNAME}/archlog/%f && pxz -2 < %p >/paic/dba/pgbackup/${PGNAME}/archlog/%f'

pxz压缩归档日志, 64M的归档, 压缩时间可以在0.5s内, 压缩比一般可在1:3左右。

配置参数级别

  • 系统级别 /集群服务级别/实例级别(全局)
  • 用户/角色级别
  • 用户/角色 + 数据库级别
  • 会话级别

参数设置级别

参数存储位置

cluster

postgresql.conf or postgresql.auto.conf

db

pg_db_role_setting

role

pg_db_role_setting

db 和 role的组合

pg_db_role_setting

1.使配置生效的几种方法

  • 用超级用户运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 SELECT pg_reload_conf();
  • 使用pg_ctl命令触发SIGHUP信号 
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 pg_ctl reload
  • 用UNIX的kill手动发起HUP信号
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ps -ef|grep -i postmaster|grep -v grep|xargs kill -HUP

2.查看配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
show all;                       #查看所有数据库参数的值show shared_buffers;            #查看某个参数的当前值(可查看当前会话值)select current_setting('shared_buffers');

3.配置生效级别

sihup

给服务器发送HUP信号会使服务器重新加载postgresql.conf配置,可以立即生效

postmaster

只有服务重启才能生效

internal

编译期间的设置,只有重新编译才能生效。

backend

与sighup类似,但是不影响正在运行的会话,只在新会话中生效

superuser

使用superuser(如postgres)才能更改,不用重新加载所有配置即可生效

user

单个会话用户可以在任意时间做修改,只会影响该会话

配置参数

1.配置全局参数

全局参数修改,调用pg_reload_conf()生效,参数修改写入了postgresql.auto.conf。

2.配置session级别参数

当前session有效,reset恢复。

3.配置库级别参数

不写入postgresql.auto.conf。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alter database mydb set work_mem='16MB';select * from pg_db_role_setting where setdatabase in (select oid from pg_database where datname in ('mydb')) ;

4.配置role级别参数

不写入postgresql.auto.conf。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alter role user_t set work_mem='2MB';select * from pg_db_role_setting where setrole in (select usesysid from pg_user where usename in ('user_t'))order by setrole,setdatabase;

5.查看当前的参数设置

库和role级别没有影响全局参数的值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select name,setting,source from pg_settings where name='work_mem';

6.postmaster级别需要重启才能生效

调用pg_reload_conf()生效,参数修改写入了 postgresql.auto.conf,但是并没有生效,postmaster需要重启数据库才能生效。


墨天轮原文链接:(复制链接至浏览器或点击文末阅读原文查看)

https://www.modb.pro/db/141174?sjhy

https://www.modb.pro/db/142788?sjhy

关于作者

陈家睿,云和恩墨MySQL技术顾问,拥有MySQL OCP、PGCE、OBCA、SCDP证书,长期服务于电信行业。现负责公司MySQL数据库分布式数据库运维方面的技术工作;热衷于运维故障处理、备份恢复、升级迁移、性能优化的学习与分享。

END

推荐阅读:2021数据技术嘉年华视频回放及PPT下载

2021数据技术嘉年华50余个PPT下载、视频回放已上传墨天轮平台,可在“数据和云”公众号回复关键词“2021DTC”获得!

你知道吗?我们的视频号里已经发布了很多精彩的内容,快去看看吧!↓↓↓

点击下图查看更多 ↓

云和恩墨大讲堂 | 一个分享交流的地方

长按,识别二维码,加入万人交流社群

请备注:云和恩墨大讲堂

  点个“在看”

你的喜欢会被看到❤

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据和云 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
postgresql9.6 的安装
vim /etc/init.d/postgresql-9.6   修改下启动脚本里面的PGDATA路径:
保持热爱奔赴山海
2019/09/17
1.1K0
PostgreSQL 12.1 版本Linux平台安装方法
今天应业务需求,在linux平台上安装了postgresql的一套环境,由于之前对postgresql不太了解,所以这里特地记录了一下安装过程。
AsiaYe
2022/05/17
9570
postgresql主备配置步骤
rpm -e --nodeps postgresql95-contrib-9.5.3-2PGDG.rhel7.x86_64
felixxue
2022/12/29
1.6K0
【赵渝强老师】史上最详细的PostgreSQL体系架构介绍
PostgreSQL是最像Oracle的开源数据库,我们可以拿Oracle来比较学习它的体系结构,比较容易理解。PostgreSQL的主要结构如下:
赵渝强老师
2024/08/11
1K0
【赵渝强老师】史上最详细的PostgreSQL体系架构介绍
史上最全PostgreSQL体系结构
墨墨导读:本文主要从日志文件、参数文件、控制文件、数据文件、redo日志(WAL)、后台进程这六个方面来讨论PostgreSQL的结构。
数据和云
2019/07/22
4.2K0
史上最全PostgreSQL体系结构
进阶数据库系列(十五):PostgreSQL 主从同步原理与实践
在正式介绍 PostgreSQL 主从同步复制 之前,我们先了解一下 PostgreSQL 的预写日志机制(WAL)。
民工哥
2023/08/22
6K0
进阶数据库系列(十五):PostgreSQL 主从同步原理与实践
MOP 系列|MOP 三种主流数据库常用 SQL(三)PG篇
MOP 不用多说,指的就是 MySQL、Oracle、PostgreSQL 三种目前最主流的数据库,MOP 系列打算更新 MOP 三种数据库的索引知识、高可用架构及常用 SQL 语句等等,上面已经更新了 MOP 索引相关的文章,今天打算整理一下这三种数据库的常用 SQL 知识,由于文章过长,今天更新中间的一篇之 MySQL 篇。第一篇 Oracle 相关的详见下方链接:MOP 系列|MOP 三种主流数据库常用 SQL(一)。第二篇 MySQL 常用 SQL详见下方链接:MOP 系列|MOP 三种主流数据库常用 SQL(二)。
JiekeXu之路
2024/05/28
2030
MOP 系列|MOP 三种主流数据库常用 SQL(三)PG篇
PostgreSQL体系架构介绍
PostgreSQL是最像Oracle的开源数据库,我们可以拿Oracle来比较学习它的体系结构,比较容易理解。PostgreSQL的主要结构如下:
用户8006012
2022/07/26
2.5K0
notes
sh 删除7天前的文件 注意修改目录.\ 扩展名.csv find ./ -type f -mtime +7 -name "*.csv" -exec rm -f {} \; find ./ -type f -mtime +7 -name "*.log" -exec rm -f {} \; 编译 ./configure --prefix=/home/mingjiegao/dev/bin/pg1400 \ --enable-tap-tests \ --with-tcl \ --enable-depend \ -
mingjie
2022/07/14
4340
PostgreSQl 12主从流复制及归档配置
上一篇文章说道PostgreSQL 12 的源码部署,这里我们说一下PostgreSQl 12的主从流复制和归档配置。
没有故事的陈师傅
2022/02/09
2.7K0
【Linux】PostgreSQL 主从模式部署(源码编译方式)
近期,笔者承接了在 Linux 操作系统下部署 PostgreSQL 主从模式的需求,且客户要求必须是非容器化部署。
行者Sun
2024/09/02
5310
【Linux】PostgreSQL 主从模式部署(源码编译方式)
使用repmgrd实现postgresql failover和auto failover
前面的文章介绍了postgresql基于repmgr的高可用及切换方案,这篇文章主要聊聊通过repmgrd实现failover及auto failover。
数据库架构之美
2019/12/18
2K0
PostgreSQL 12源码包部署及用户管理
时间序列数据库(Time Series Database)是用于存储和管理时间序列数据的专业化数据库,具备写多读少、冷热分明、高并发写入、无事务要求、海量数据持续写入等特点,可以基于时间区间聚合分析和高效检索,广泛应用在物联网、经济金融、环境监控、工业制造、农业生产、硬件和软件系统监控等场景。
没有故事的陈师傅
2022/02/09
9590
史上最全:PostgreSQL DBA常用SQL查询语句(建议收藏学习)
查看帮助命令本周六,在北京将迎来一年一度的 ACOUG年会,在本次年会上,我们将对社区过去一年的工作进行回顾和梳理,并展望和探讨下一年工作的内容,同时,本次年会也开放了直播通道,名额不多,报名从速哦~
数据和云
2019/12/24
11K0
PostgreSQL核心揭秘(一):数据库集簇
PostgreSQL 数据库集簇(Database Cluster)是指一个或多个数据库实例的集合,这些数据库实例共享相同的数据库系统文件和配置。这种设计允许在同一个 PostgreSQL 服务器上管理多个数据库,而每个数据库又可以独立地运行和存储数据。
DBA实战
2024/10/29
2480
PostgreSQL核心揭秘(一):数据库集簇
PostgreSQL 备份与恢复(第二章)
该备份工具自动执行 pg_start_backup()和 pg_stop_backup()函数,而且备份速度和数据都比手动的备份快。
DB之路
2021/07/15
2.1K0
部署postgresql 12.3
注: 若想添加为系统服务,使用systemctl指令来控制服务的启停,可以参考官方文档 (opens new window)。如下(个人觉得没必要配置):
章工运维
2023/05/19
4500
进阶数据库系列(二十一):PostgreSQL 数据目录同步工具 pg_rewind
pg_rewind 相比 pg_basebackup 和 rsync 这样的工具来说,优势是它不需要从源目录拷贝所有的数据文件,而是会对比时间线发生偏离的点,只拷贝变化过的文件,这样对于数据量很大的情况下速度更快。
民工哥
2023/08/22
2.1K0
进阶数据库系列(二十一):PostgreSQL 数据目录同步工具 pg_rewind
基于repmgr的postgresql主备高可用方案
本文比较基础,主要介绍postgresql开源高可用工具repmgr的部署和使用,初学者可以根据本文步骤一步一步做下去,废话不多说,直接进入主题,本文以两台机器为例。
数据库架构之美
2019/12/18
3.4K0
PostgreSQL集群篇——2、PG环境安装准备
PostgreSQL官方文档中讲到了多种高可用、负载均衡和复制特性解决方案,如下图所示:
cn華少
2021/07/15
3.2K1
相关推荐
postgresql9.6 的安装
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验