对于数据库,作为IT技术人员都不陌生,本人直接使用过mysql和sqlserver数据库,也系统的学习过oracle数据库,而对于postgresql数据库,也仅仅在gis领域和外企中有所耳闻,也因此产生兴趣。
通过整理线上相关学习资料进行学习,并于本地构建环境进行postgresql实际搭建部署以及简要使用,于此进行记录,以便后续持续深入学习,也为后来者提供参考借鉴,文中不免疏漏之处,望读者给予指正,不胜感激!

1. 基本介绍

1.1 基本信息

PostgreSQL是一个功能强大的开源数据库系统。经过长达15年以上的积极开发和不断改进,PostgreSQL已在可靠性、稳定性、数据一致性等获得了业内极高的声誉。目前PostgreSQL可以运行在所有主流操作系统上,包括Linux、Unix和Windows。
PostgreSQL是完全的事务安全性数据库,支持丰富的数据类型(如JSON和JSONB类型、数组类型)和自定义类型。PostgreSQL数据库提供了丰富的接口,可以很方便地扩展它的功能,如可以在GiST框架下实现自己的索引类型,支持使用C语言写自定义函数、触发器,也支持使用流行的编程语言写自定义函数。PL/Perl提供了使用Perl语言写自定义函数的功能,当然还有PL/Python、PL/Java、PL/Tcl等。

作为一种企业级数据库,PostgreSQL以它所具有的各种高级功能而自豪,像多版本并发控制(MVCC)、按时间点恢复(PITR)、表空间、异步复制、嵌套事务、在线热备、复杂查询的规划和优化以及为容错而进行的预写日志等。它支持国际字符集、多字节编码并支持使用当地语言进行排序、大小写处理和格式化等操作。它也在所能管理的大数据量和所允许的大用户量并发访问时间具有完全的高伸缩性。

1.2 优势

PostgreSQL数据库具有以下优势:
PostgreSQL数据库是目前功能最强大的开源数据库,它是最接近工业标准SQL92的查询语言,至少实现了SQL:2011标准中要求的179项主要功能中的160项(注:目前没有哪个数据库管理系统能完全实现SQL:2011标准中的所有主要功能)。
稳定可靠:PostgreSQL是唯一能做到数据零丢失的开源数据库。目前有报道称国内外有部分银行使用PostgreSQL数据库。
开源省钱: PostgreSQL数据库是开源的、免费的,而且使用的是类BSD协议,在使用和二次开发上基本没有限制。
支持广泛:PostgreSQL 数据库支持大量的主流开发语言,包括C、C++、Perl、Python、Java、Tcl以及PHP等。
PostgreSQL社区活跃:PostgreSQL基本上每3个月推出一个补丁版本,这意味着已知的Bug很快会被修复,有应用场景的需求也会及时得到响应。

2. 对比mysql和oracle

2.1 Postgresql VS Oracle

Oracle数据库是目前功能最强大的商业数据库,PostgreSQL则是功能最强大的开源数据库。
PostgreSQL与Oracle的不同之处在于,PostgreSQL有更多支持互联网特征的功能。如PostgreSQL数据类型支持网络地址类型、XML类型、JSON类型、UUID类型以及数组类型,且有强大的正则表达式函数,如where条件中可以使用正则表达式匹配,也可以使用Python、Perl等语言写存储过程等。另外,PostgreSQL更小巧。PostgreSQL可以在内存很小的机器上完美运行起来,如在512MB的云主机中,而Oracle数据库基本要在数GB的云主机中才可以运行起来。Oracle安装包动辄几个GB以上级别,而PostgreSQL的安装包只有几十MB大小。PostgreSQL在任何一个环境都可以轻松地安装。Oracle数据库安装花费的时间是在小时级别,而PostgreSQL在分钟级别就可以完成安装。

2.2 Postgresql VS Mysql

Postgresql和Mysql都是开源数据库。
PostgreSQL有以下几个优点。
功能强大:支持所有主流的多表连接查询的方式,如“Hash JOIN”“Sort Merge JOIN”等;字段类型还支持数组类型,甚至有一些业务功能都不再需要写代码来实现了,直接使用数据库的功能即可解决问题。
性能优化工具与度量信息丰富:PostgreSQL数据库中有大量的性能视图,可以方便地定位问题(比如可以看到正在执行的SQL,可以通过锁视图看到谁在等待,以及哪条记录被锁定等)。PostgreSQL中设计了专门架构和进程用于收集性能数据,既有物理I/O方面的统计,也有表扫描及索引扫描方面的性能数据。
在线操作功能好:PostgreSQL增加空值列时,本质上只是在系统表上把列定义上,无须对物理结构做更新,这就让PostgreSQL在加列时可以做到瞬间完成。PostgreSQL还支持在线建索引的功能,在创建索引的过程可以不锁更新操作。
从PostgreSQL9.1开始,支持同步复制(synchronous replication)功能,通过Master和Slave之间的复制可以实现零数据丢失的高可用方案。
可以方便地写插件来扩展PostgreSQL数据库的功能:支持移动互联网的新功能,如空间索引
如果应用的数据访问很简单,那么后端使用MySQL也是很合适的。但是如果应用复杂,而且不想消耗太多的开发资源,那么PostgreSQL是一个很明智的选择。

3. 安装部署

3.1 安装环境

服务器环境:centos7
postgresql版本:postgresql-14.0

3.2 安装步骤

  1. 下载安装包
    在这里插入图片描述
  2. 解压编译
yum -y install gcc gcc-c++ readline-devel zlib-devel
tar -zvxf postgresql-14.0.tar.gz
cd postgresql-14.0
./configure
make && make install
/usr/local/目录下会生产pgsql目录
  1. 用户以及权限
useradd postgres
chown -R postgres:postgres pgsql/
  1. 初始化数据库
进入bin目录
su postgres
./initdb /usr/local/pgsql/data
  1. 启动
./pg_ctl -D /usr/local/pgsql/data -l logfile start
#开启
/home/postgres/pgsql/bin/pg_ctl  -D /home/postgres/data/ -l logfile start
#查看状态
/home/postgres/pgsql/bin/pg_ctl -D /home/postgres/data/ -l logfile status
#停止
/home/postgres/pgsql/bin/pg_ctl -D /home/postgres/data/ -l logfile stop

在这里插入图片描述
在这里插入图片描述

  1. 修改配置
    初始化后在postgresql的目录可以看到生成的数据目录data以及该目录的相关数据和配置文件,pg_hba.conf和postgresql.conf,
    一个是访问控制配置(127.0.0.1改为信任的客户端ip网段使其可以远程访问),
    一个是postgresql主配置文件(listen_address=localhost改为星号使其监听整个网络

pg_hba.conf中配置服务端允许的认证方式,添加下面一行。

TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 0.0.0.0/0 password

postgresql.conf编辑或添加下面一行,使PostgreSQL可以接受来自任意IP的连接请求,把端口开放,原来是 注释的

listen_addresses = '*'
port = 5432
  1. 重启pgsql
./pg_ctl -D /usr/local/pgsql/data/ -l logfile restart

在这里插入图片描述

  1. 登录以及修改密码
./psql
ALTER USER postgres WITH PASSWORD '123456';
psql -d postgres -p 5432 -U postgres -h Localhost
  1. navicat远程连接成功
    在这里插入图片描述

4. 开机自启

  1. 找到安装包下启动脚本
postgresql-14.0/contrib/start-scripts/linux
  1. 复制启动脚本
cp postgresql-14.0/contrib/start-scripts/linux /etc/init.d/postgresql
  1. 修改脚本配置
# Installation prefix
prefix=/usr/local/pgsql
# Data directory
PGDATA="/usr/local/pgsql/data"
# Who to run the postmaster as, usually "postgres".  (NOT "root")
PGUSER=postgres
# Where to keep a log file
PGLOG="$PGDATA/serverlog"
  1. 增加执行权限
chmod a+x /etc/init.d/postgresql
  1. 注册开机自启
chkconfig命令将该脚本注册为开机启动便可:
chkconfig --add postgresql

重启验证

ps -ef|grep postgresql

在这里插入图片描述
在这里插入图片描述

5. pgadmin客户端

https://www.pgadmin.org/download/

在这里插入图片描述

6. 参考资料

https://www.postgresql.org/
https://www.pgadmin.org/
https://blog.51cto.com/u_15289334/3321664
https://blog.csdn.net/Victory_Lei/article/details/121414749

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐