【一文搞懂PGSQL】1.简述和安装

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: PostgreSQL(简称PG或PGSQL)是一款使用C和C++语言开发的开源关系型数据库管理系统。其官网为 [www.postgresql.org](https://www.postgresql.org/),中文社区为 [www.postgres.cn](http://www.postgres.cn)。PG采用了多层逻辑结构:第一层为实例,第二层为数据库(每个实例下可有多个相互独立的数据库),第三层为Schema(每个数据库下包含多个Schema)。每个Schema下可以创建表、视图、索引、函数等数据库对象。

简介

PostgreSQL,简称PG或PGSQL。C和C++开发。开源的关系型数据库。

官网:www.postgresql.org

中文社区: www.postgres.cn

1.1 PostgreSQL 逻辑结构

  • 第一层是实例(Instance)。
  • 第二层是数据库(Database);一个实例下有多个数据库;每个数据库之间是完全独立的。
  • 第三层是Schema;数据库下面有多个Schema;其中“public” 是数据库创建时产生的。
  • 每个Schema下面可以创建表,视图,索引,函数,序列,物化视图,外部表等等。

源码安装配置

基础环境优化

systemctl stop firewalld.service 
systemctl disable  firewalld.service
#查看selinux
getenforce 
#关闭selinux
setenforce 0  
#永久关闭selinux
sed -i  's#SELINUX=enforcing#SELINUX=disabled#g'   /etc/selinux/config
#清除iptables 规则
iptables -F
systemctl stop  NetworkManager
systemctl disable  NetworkManager

#备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
#配置源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
#清除缓存
yum clean all

yum install   -y  net-tools lrzsz  vim  libaio-devel tree  libaio-devel lsof sysstat  bash-completion  bash-completion-extras ntpdate

cat >>/var/spool/cron/root<<EOF
# ntp 时间同步
00 00 * * * /usr/sbin/ntpdate -u ntp.aliyun.com
EOF

/usr/sbin/ntpdate  -u  ntp1.aliyun.com
hwclock --systohc

创建用户

groupadd postgres
useradd postgres -g postgres
echo 'dyh666' | sudo passwd --stdin postgres

安装依赖

yum groupinstall -y "Development Tools" "Legacy UNIX Compatibility"
yum install -y bison flex readline* zlib-devel  gcc* make systemd-devel

创建目录并授权

mkdir -p /usr/local/pg12  # 安装目录
mkdir -p /pgdata/12/data  # 数据目录
mkdir -p /archive         # 归档目录
chown -R postgres:postgres /archive  /usr/local/pg12 /pgdata 
chmod -R 700 /pgdata/12/data

系统参数优化

cat >/etc/sysctl.conf<<'EOF'
kernel.shmmax = 68719476736
kernel.shmall=4294967296
kernel.sem = 50100 64128000 50100 12800
fs.file-max = 7672460
net.ipv4.ip_local_port_range = 9000 65000
net.core.rmem_default = 1048576
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
EOF

cat  >/etc/security/limits.conf<<'EOF'
* soft nofile 131072
* hard nofile 131072
* soft nproc 131072
* hard nproc 131072
* soft core unlimited
* hard core unlimited
* soft memlock 50000000
* hard memlock 50000000
EOF

sysctl -p
# 建议关闭numa,设置IO策略为deadline(机械)活着noop(SSD)

安装pg

su - postgres

# 下载包
wget https://ftp.postgresql.org/pub/source/v12.6/postgresql-12.6.tar.gz --no-check-certificate

tar xf postgresql-12.6.tar.gz

cd postgresql-12.6/

# 配置pg ./configure --help  // 查看配置项
./configure --prefix=/usr/local/pg12 --with-pgport=5432  --with-systemd # 出现问题检查依赖

# 编译 使用 gmake word 会安装一些拓展模块
gmake  world

# 安装
make install-world

设置环境变量

cat  >>/home/postgres/.bash_profile<<'EOF'
export PGDATA=/pgdata/12/data
export LANG=en_US.utf8
export PGHOME=/usr/local/pg12
export LD_LIBRARY_PATH=$PGHOME:$LD_LIBRARY_PATH
export PGUSER=postgres
export PATH=/usr/local/pg12/bin:$PATH
EOF

source /home/postgres/.bash_profile

初始化数据库

su - postgres
# 简易初始化
#initdb -D /pgdata/12/data -W

# 生产初始化
/usr/local/pg12/bin/initdb -A md5 -D /pgdata/12/data -E utf8 --locale=C -W # 配置管理员密码

修改配置文件

# 修改防火墙规则
cat >/pgdata/12/data/pg_hba.conf<<'EOF'
# TYPE  DATABASE        USER            ADDRESS                 METHOD 可设置/reject/md5/trust
# 配置自己对应的user/host 
host    all             all             0.0.0.0/0               md5
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# 允许具有复制权限的用户从本地主机进行复制连接
local   replication     all                                     md5
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5
EOF


# 修改postgresql.conf配置文件
cat >/pgdata/12/data/postgresql.conf<<'EOF'
# 监听地址
listen_addresses = '*'
# 最大连接数
max_connections = 2000
# 缓冲区大小
shared_buffers = 1GB
# 动态共享内存类型
dynamic_shared_memory_type = posix
# 日志详细程度
wal_level = replica
# 检查点之后第一次页面更改(即使是对提示位进行非关键性的修改)写 FPI 到 WAL 中
wal_log_hints = on
# 重做日志最大物理大小
max_wal_size = 1GB
# 重做日志最小物理大小
min_wal_size = 80MB
# 开启归档
archive_mode = on
# 检查归档
archive_command = 'test ! -f /archive/%f && cp %p /archive/%f'
# 最大从库数 多设置点没事
max_wal_senders = 10
# 重做日志保存数量
wal_keep_segments = 128
# 流复制主机发送数据的超时时间
wal_sender_timeout = 60s
# 开启说明如果作为从库可以读
hot_standby = on
# 流复制的最大延迟时间
max_standby_streaming_delay = 30s
# 向主库报告从库当前状态的最大时间
wal_receiver_status_interval = 10s
# 如果有错误的数据复制,是否向主库反馈
hot_standby_feedback = on
# 日志时区(prc  中华人民共和国)
log_timezone = 'PRC'
# 时间格式
datestyle = 'iso, mdy'
# 数据库时区
timezone = 'PRC'
# 系统错误消息的区域设置
lc_messages = 'C'
# 货币格式的区域设置
lc_monetary = 'C'
# 数字格式设置的区域设置
lc_numeric = 'C'
# 时间格式的区域设置
lc_time = 'C'
# 默认文本搜索配置
default_text_search_config = 'pg_catalog.english'
# 日志输出
log_destination = 'stderr'
# 开启日志采集
logging_collector = on 
# 日志路径
log_directory = '/pgdata/12/log'
# 日志格式
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
# 日志权限
log_file_mode = 0600
EOF

启动和关闭

手动方式:
#pg_ctl -D /pgdata/12/data -l logfile start # 手动常用

-D  指定数据目录
-l  启动日志追加文件

#pg_ctl -D /pgdata/12/data stop -ms  # smart 所有客户端连接断开后关闭  // 慢
#pg_ctl -D /pgdata/12/data stop -mf  # fast 自动kill进程将未提交事务进行回滚 // 生产常用默认
#pg_ctl -D /pgdata/12/data stop -mi  # immediate 自动kill进程,不回滚事务,启动后做回滚,有可能造成数据不一致
#pg_ctl restart -mf

# 脚本方式:
#/opt/postgresql-12.6/contrib/start-scripts/linux

#netstat -lntp

systemd管理

cat >/usr/lib/systemd/system/pgsql.service<<'EOF'
[Unit]
Description=PostgreSQL database server
After=network.target

[Service]
Type=forking
User=postgres
Group=postgres
# 要侦听的服务器的端口号
Environment=PGPORT=5432
# 数据库目录的位置
Environment=PGDATA=/pgdata/12/data
# 禁用OOM kill
OOMScoreAdjust=-1000
ExecStart=/usr/local/pg12/bin/pg_ctl  start  -D ${PGDATA} -s -o "-p ${PGPORT}" -w -t 300
ExecStop=/usr/local/pg12/bin/pg_ctl   stop   -D ${PGDATA} -s -m fast
ExecReload=/usr/local/pg12/bin/pg_ctl reload -D ${PGDATA} -s
# 为服务器提供合理的启动/关闭时间
TimeoutSec=300

[Install]
WantedBy=multi-user.target
EOF
# 刷新systemd
systemctl daemon-reload
# 启动
systemctl start  pgsql
# 自启动
systemctl enable pgsql
# 状态信息
systemctl status pgsql
# 查看端口
netstat -lntp
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
自然语言处理 算法
PIKA最新推出 Lip Sync(口型同步)
【2月更文挑战第9天】PIKA最新推出 Lip Sync(口型同步)
1123 1
PIKA最新推出 Lip Sync(口型同步)
|
SQL 关系型数据库 数据库
【一文搞懂PGSQL】4.逻辑备份和物理备份 pg_dump/ pg_basebackup
本文介绍了PostgreSQL数据库的备份与恢复方法,包括数据和归档日志的备份,以及使用`pg_dump`和`pg_basebackup`工具进行逻辑备份和物理备份的具体操作。通过示例展示了单库和单表的备份与恢复过程,并提供了错误处理方案。此外,还详细描述了如何利用物理备份工具进行数据损坏修复及特定时间点恢复(PITR)的操作步骤,以应对误操作导致的数据丢失问题。
|
8月前
|
关系型数据库 Linux 数据库
Linux系统安装Postgre和Postgis教程
本文详细介绍了PostgreSQL/PostGIS的卸载与安装步骤。卸载部分涵盖Docker、Yum/RPM及源码编译安装的清理方法,包括停止服务、删除容器/包、清理残留文件和环境变量等操作,并强调卸载前需备份数据库数据。安装部分提供在线yum安装和离线源码编译两种方式,前者简单快捷,后者需准备依赖(如gcc、readline-devel等)、创建用户组、初始化数据库及配置访问规则。每步均附带命令示例,确保操作清晰明确。
1236 0
|
SQL 关系型数据库 Shell
【一文搞懂PGSQL】3.进程和关键文件介绍
PostgreSQL采用C/S模型,拥有多种关键进程,如PM(连接管理)、SP(会话)、SysLogger(系统日志)、BgWriter(后台写)、WALWriter(预写式日志)、PgArch(归档)、AutoVacuum(自动清理)、PgStat(统计收集)和CheckPoint(检查点)。其中,PM负责连接管理,SP处理用户会话,SysLogger记录系统日志(需在`postgresql.conf`中启用),BgWriter负责脏页写盘,WALWriter处理预写式日志,PgArch负责WAL日志归
|
人工智能 安全 Java
AI 应用工程化专场
本次分享的主题是AI 应用工程化专场,由Spring AI Alibaba 开源项目负责人刘军分享。 1. 初识 Spring AI Alibaba开源项目 2. Spring AI Alibaba 深入讲解 3. Spring AI Alibaba RAG 开发实践 4. Spring AI Allbaba 未来规划 5. 数据 6. 问答
575 1
|
11月前
|
关系型数据库 Linux 数据库
PostgreSQL 入门指南:安装、配置与基本命令
本文从零开始,详细介绍如何在 Windows、Linux 和 macOS 上安装和配置 PostgreSQL,涵盖30+个实操代码示例。内容包括安装步骤、配置远程访问和用户权限、基础数据库操作命令(如创建表、插入和查询数据),以及常见问题的解决方案。通过学习,你将掌握 PostgreSQL 的基本使用方法,并为后续深入学习打下坚实基础。
12439 1
|
运维 监控 关系型数据库
【一文搞懂PGSQL】7. PostgreSQL + repmgr + witness 高可用架构
该文档介绍了如何构建基于PostgreSQL的高可用架构,利用repmgr进行集群管理和故障转移,并引入witness节点增强网络故障检测能力。repmgr是一款轻量级的开源工具,支持一键部署、自动故障转移及分布式节点管理。文档详细描述了环境搭建步骤,包括配置postgresql参数、安装与配置repmgr、注册集群节点以及配置witness节点等。此外,还提供了故障手动与自动切换的方法及常用命令,确保集群稳定运行。
|
存储 关系型数据库 数据库
初探PostgreSQL体系结构
初探PostgreSQL体系结构
487 0
|
安全
计算机硬件升级增加内存(RAM)
【8月更文挑战第5天】
1970 3
|
Linux Shell Apache
LDAP学习笔记之七:Centos7 搭建openldap+图形界面
LDAP学习笔记之七:Centos7 搭建openldap+图形界面
1824 0