f68d69b3-401f-eb11-8da9-e4434bdf6706.png

点击上方晟数学院可以订阅哦!

PostgreSQL 12 安装和配置

 1

PostgreSQL 介绍

PostgreSQL是一个由加利福尼亚大学计算机科学部门基于Postgres 4.2版本开发的面向对象的数据库管理系统。POSTGRES率先提出了许多概念,直到后来,这些概念才在一些商业数据库系统中使用。PostgreSQL是一个后来开源的代码始于伯克利源代码。它支持大部分的SQL标准和提供了许多现代的特性。

·复杂查询(complex queries)

·外键(foreign keys)

·触发器(triggers)

·可更新视图(updatable views)[物化视图]

·事务完整性(transaction integrity)

·多版本并发控制(MVCC)

除此之外,用户可以使用多种方式扩展PostgreSQL,例如通过添加以下:

·数据类型(data types)

·函数(functions)

·操作符(operators)

·聚合函数(aggregate functions)

·索引方式(index methods)

·过程语言(procedural languages)

并且由于自由通行,PostgreSQL可以通过任何人无论是出于私有化,商业化,或者学术上的任何目的免费地修改和发布。

 2

PostgreSQL 简要发展史

现在被称为PostgreSQL的对象关系数据库管理系统派生于加利福尼亚大学伯克利分校所编写发型的POSTGRES软件包。PostgreSQL经过二十多年的发展,现已成为任何地方可以使用的最先进的开源数据库。

2.1

伯克利 POSTGRES 项目

POSTGRE项目,由Michael Stonebraker教授主导,DARPA,ARO和NSF和ESL等。POSTGRES开始于1986年。最初的系统概念在ston86中被提出,最初的数据模型的定义出现子ROWE87中。ston87a中描述了规则系统设计。ston87b中详细描述了存储管理的基本原理和架构。

POSTGRES大致经历了几个版本:

1988年在ACM-SIGMOD会议上展示的于1987年第一个投入运行的"演示软件"系统。ston90a描述的第一个版本(Version 1)于1986年6月发布给一些外部用户。为回应对ston89中描述的第一个规则系统批评,在ston90b中重新设计了规则系统并于1990年6月发布了新规则系统的第二个版本(Version 2)。1991年发布的 Version 3为多个存储管理增加了支持,改进了查询执行器,并且重新写了规则系统。往后发行的直到Postgres95之前的版本都注重于其可移植性和可靠性。

POSTGRES已经被用于实施不同的研究和产品应用。包括:金融数据分析系统,喷气引擎性能监控包(jet engin performanc),和小行星追踪数据库,医药信息数据库,和一些地理信息系统。POSTGRES也被一些大学用来作为教学的工具。最终,Illustra Information Technologies重构了其代码并使其商业化。至1992年底,POSTGRES成为了Sequoia 2000 科学计算项目的主要数据管理器。

在1993年,外部社区的用户规模几乎增加了一倍。原型代码维护和支持越来越明显的占用了本应该进行数据库研究的大量时间。为了减轻这种负担,伯克利POSTGRES项目官方以版本 Version 4.2结束。

2.2

Postgres95

在1994年,Andrew Yu和Jolly Chen为 POSTGRES增加了SQL语言翻译器。并起了一个新的名字,Postgres95正式开源。Postgre95代码完全是 ANSI C,并且大小减少了25%。许多的内部改变提高了其性能和维护性。Postgre95 发型的1.0.x在Wisconsin Benchmark跑分中比POSTGRES Version 4.2要快30-50。除了修复bug,以下是主要增强的内容:

·查询语言PostQUEL使用SQL代替,不支持子查询,但是用户自定义的函数可以在Postgres95中模仿子查询。聚合函数重新实现。增加支持GROUP BY查询语句。

·新的程序(psql)作为交互SQL查询,该交互使用GNU的readline。很大程度上取代了旧的监控程序。

·一个新的front-end库,libpgtcl,基于tcl的客户端被支持。模版shell,pgtclsh,提供了新的tcl 命令在Postgres95服务器上和tcl应用程序交互。

·大对象接口被修改。倒置大对象是存储大对象的仅有机制。(倒置文件系统被移除)

·实例级别的规则系统被移除。规则仍然可用由于重写规则。

·介绍规则SQL特性的简短手册也伴随源代码在 Postgre95中发布。

·GNU make(替代了BSD make)被用来重构。同时,Postgres95也能够被未打包的GCC编译

2.3

PostgreSQL

到1996年,很明显,Postgres95经不起时间的考验。因此选择了一个新的名字,PostgreSQL,同时,版本号被置于6.0开始。至此,PostgreSQL正式作为开源数据库正式被发行。

2.4

PostgreSQL的特点

PostgreSQL支持市面上流行的所有操作系统,包括Unix,Linux和Windows,也支持如AIX,Solaris,MacOS等,这为PostgreSQL的推广奠定了基础。同时,PostgreSQL以支持丰富的编程接口,如流行的Java, C,C++,Python等,也支持如Perl,Tcl,Ruby等编程接口,也支持windows下的ODBC编程接口,编程接口的丰富和通用特性为PostgreSQL提供了广泛的开发者支持。

PostgreSQL同时支持丰富的数据类型,也支持丰富的服务器编程,如触发器,存储过程,服务器编程接口,后台工作进程,逻辑解码,复制进度追踪等。

 3

配置和安装

3.1

系统环境准备

Redhat Enterprise 7.6

PostgresSQL 12

编译环境要求:

make 版本3.8以上

GCC编译器(兼容C99)

解压命令tar

记录命令行操作包readline(没有该包无法使用方向键)

可选环境要求:

因为PostgreSQL支持服务器编程,因此可以根据需要安装需要的模块

如perl python tcl等

也可以启用本地语言支持NLS,该功能需要安装gettext

支持加密的客户端连接(需要安装openssl)使用服务支持验证(kerberos,openldap,pam)

准备包(需提前配置好yum源)

准备包(需提前配置好yum源)

yum install -y \

libicu-devel.x86_64 \

icu.x86_64 \

perl-ExtUtils-Embed.noarch \

readline.x86_64 \

readline-devel.x86_64 \

zlib-devel.x86_64 \

openssl-devel.x86_64 \

pam-devel.x86_64 \

libxml2-devel.x86_64 \

libxslt-devel.x86_64 \

systemd-devel.x86_64 \

python36.x86_64 \

python36-devel.x86_64 \

openldap.x86_64 \

openldap-devel.x86_64 \

docbook*

3.2

系统设置

1 关闭防火墙

[root@sdedu ~]# systemctl  stop firewalld

[root@sdedu ~]# systemctl  disable firewalld

#如果不关闭防火墙,则将postgres 端口服务添加至防火墙中

[root@sdedu ~]# firewall-cmd  --add-port=5432  --permanent

2 关闭Selinux

#会话及关闭

[root@sdedu ~]# setenforce 0

#永久关闭

[root@sdedu ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

3 配置资源限制

[root@sdedu ~]# cat /etc/security/limits.conf  | tail -6

postgres soft nofile 4096

postgres hard nofile 65536

postgres soft nproc 2048

postgres hard nporc 16384

postgres soft stack 10240

postgres hard stack 65536

#nofile 最大能打开的文件描述符

#nproc 最大的进程数

#stack 最大栈空间大小(单位为kb)

3.3

源码编译安装

源码安装通常可以根据自己的要求完成定制化的安装,如目录规划,内存大小,日志大小,脏块缓存大小及实现PostgreSQL支持的PL/tcl pl/perl pl/python等服务器过程化编程语言等等,以根据业务调整安装配置参数来提高服务器性能和充分利用服务器资源。具体步骤如下:

1 上传包至服务器/root/pack目录

[root@sdedu pack]# ls postgresql-12.0.tar.bz2

postgresql-12.0.tar.bz2

2 创建postgres用户并授权压缩包权限

由于postgresql的启动停止等命令只能使用postgres用户操作,因此必须要创建postgres用户

[root@sdedu ~]# useradd -u 2000 postgres

[root@sdedu ~]# chown postgres:postgres pack/postgresql-12.0.tar.bz2

#移动 postgresql-12.0.tar.bz2 包到 /home/postgres用户下

[root@sdedu ~]# mv pack/postgresql-12.0.tar.bz2  /home/postgres/

3 切换到postgres用户,并解压源码包

[root@sdedu ~]# su - postgres

[postgres@sdedu ~]$ tar -jxf postgresql-12.0.tar.bz2

4 进入到解压目录

[postgres@sdedu ~]$ cd postgresql-12.0/

[postgres@sdedu postgresql-12.0]$ ll

5 创建PostgreSQL用户的安装目录并授权

切换到root用户执行下列命令

[root@sdedu ~]# mkdir -p /data/pgsql/

[root@sdedu ~]# chown postgres.postgres -R /data/

6 执行configure预先检测配置环境

以下操作都以postgres用户进行

#切换至 postgres用户并进入到源码解压目录

./configure \

--prefix=/data/pgsql/ \  #准备安装路径

--exec-prefix=/data/pgsql/exec \ #定义安装结构路径

--bindir=/data/pgsql/bin \ #定义PostgreSQL 相关服务命令

--sysconfdir=/data/pgsql/etc \ #定义系统配置目录

--libdir=/data/pgsql/exec/lib \ #定义相关库和动态库目录

--includedir=/data/pgsql/include \ #定义支持C 和 C++ 支持的头文件

--datarootdir=/data/pgsql/share \ #定义可供数据库只读的根目录

--datadir=/data/pgsql/share/data \ #定义可以数据库制度的目录

--localedir=/data/pgsql/share/locale \ #定义域目录

--mandir=/data/pgsql/share/man \ #定义 man 帮助手册目录

--docdir=/data/pgsql/share/doc/postgresql \ #定义 doc 格式帮助文档

--htmldir=/data/pgsql/share/html \ #定义html 格式帮助文档

--enable-nls="zh_CN" \ #定义主机支持的语言环境

--with-pgport=5432 \ #定义数据库服务的监听端口

--with-perl \ #启用支持 pl/perl 的服务器编程语言

--with-python \ #启用支持 pl/python 的服务器编程语言

--with-tcl \ #启用支持 pl/tcl 的服务器编程语言

--with-icu \ #启用支持 icu 的动态库

--with-openssl \ #启用支持 ssl(安全套接层) 连接

--with-pam \ #启用支持PAM认证模块

--with-ldap \ #启用支持轻量级访问目录数据库

--with-systemd \ # 启用 systemd 服务器

--with-readline \ #启用支持命令行记录功能

--with-libxml \ #启用 SQL 支持的XML 功能

--with-libxslt \ #启用 SQL 支持的 XML2 的依赖

--with-segsize=2 \ #配置段大小,默认数据文件段大小为 1G

--with-blocksize=8 \ #配置数据块的I/O大小

--with-wal-blocksize=8 #配置 wal 块的I/O大小

7 执行编译并安装

[postgres@sdedu ~]$ export COPT='-Werror'

#执行编译,-j 表示使用多job编译,受限于CPU核数和线程数

[postgres@sdedu ~]$ make all -j16

#如果要build 所有可以build的内容(html 和man 以及contrib等)使用如下

make world –j16

#编译安装

make install –j16

#如果需要安装手册帮助文档,执行

make install-docs –j16

#如果使用全局编译操作,那么使用

make install-world –j16

8 导入PostgreSQL lib库

[postgres@sdedu ~]$ export LD_LIBRARY_PATH=/data/pgsql/exec/lib

9 导入PostgreSQL的命令可执行路径

[postgres@sdedu ~]$ export PATH=/data/pgsql/bin:$PATH

10 导入MAN帮助信息

[postgres@sdedu ~]$ export MANPATH=/data/pgsql/share/man

为方便起见,将以上环境变量写入到/data/pgsql/exec/postgresql.env中

[postgres@sdedu ~]$ cat >> /data/pgsql/exec/postgresql.env <

> export LD_LIBRARY_PATH=/data/pgsql/exec/lib

> export PATH=/data/pgsql/bin:\$PATH

> export MANPATH=/data/pgsql/share/man

> EOF

然后将该文件添加到/home/postgres/.bash_profile中,并重新读取环境变量

11 初始化数据目录

pg_ctl -D /data/pgsql/pgdata/ initdb

或者

initdb -D /data/pgsql/pgdata

12 启动数据库

[postgres@sdedu ~]$ pg_ctl  start -D /data/pgsql/pgdata/ -l /tmp/logfile

注意,启动停止数据库必须使用 postgres 用户执行

13 登录数据库

[postgres@sdedu ~]$ psql -U postgres -d postgres

14 如果使用root用户登录数据库,则在/root/.bash_profile中配置PostgreSQL的环境变量(不建议这样做)

15 停止数据库

[postgres@sdedu ~]$ pg_ctl  stop -D /data/pgsql/pgdata/ -l /tmp/logfile ile

至此,PostgreSQL 12源码编译安装完成,现在既可以在数据库中执行各种符合规范的操作。

16 配置postgresql系统服务控制单元和开机启动

配置该服务之后,Redhat Linux就可以使用 systemctl系统控制命令来启动PostgreSQL数据库了。

使用root用户切换到 /usr/lib/systemd/system目录,编辑postgresql-12.service文件,该文件默认不存在,需要手动编辑,如下:

[root@sdedu system]# cat postgresql-12.service

[Unit]

Description=PostgreSQL database server

After=network.target

[Service]

Type=forking

User=postgres

Group=postgres

Environment=PGPORT=5432

Environment=PGDATA=/data/pgsql/pgdata

OOMScoreAdjust=-1000

ExecStart=/data/pgsql/bin/pg_ctl start -D ${PGDATA} -s -o "-p ${PGPORT}" -w -t 300

ExecStop=/data/pgsql/bin/pg_ctl stop -D ${PGDATA} -s -m fast

ExecReload=/data/pgsql/bin/pg_ctl reload -D ${PGDATA} -s

TimeoutSec=300

[Install]

WantedBy=multi-user.target

然后之下下列命令启用服务控制守护

[root@sdedu init.d]# systemctl  daemon-reload

使用systemctl系统服务控制命令启动postgresql

[root@sdedu ~]# systemctl  start postgresql-12.service

 4

rpm 安装

目前的Linux 7的发行版本已经集成了PostgreSQL 的相关套件,只需要配置好yum源既可以使用 yum 软件安装命令安装,系统自带的postgresql的版本为9.2版本。

1 配置yum

[root@sdedu ~]# cat /etc/yum.repos.d/local.repo

[local]

name=local

baseurl=file:///mnt

enabled=1

gpgcheck=0

2 更新yum源

[root@sdedu ~]# yum clean all && yum repolist all

3 检查PostgreSQL相关软件套件

[root@sdedu yum.repos.d]# yum list all | grep ^postgresql

4 执行yum安装

[root@sdedu ~]# yum install -y postgresql-server.x86_64

使用yum安装后,默认的命令路径位于/usr/bin下

5 初始化数据目录

#创建初始化数据目录

[root@sdedu ~]# mkdir -p /pg92/pgdata/data/

#为数据目录授权 postgres 用户所属主和所属组

[root@sdedu ~]# chown postgres.postgres -R /pg92

#切换至 postgres 用户

[root@sdedu ~]# su – postgres

#执行 初始化数据库命令

[postgres@sdedu ~]$ /usr/bin/initdb  -D  /pg92/pgdata/data/

6 启动数据库

[postgres@sdedu ~]$ /usr/bin/pg_ctl start -D /pg92/pgdata/data/ -l /tmp/logfile

server starting

7 配置服务开机启动

[root@sdedu ~]# systemctl enable postgresql.service

Yum安装配置相对于简单,可以作为学习入门

5

拓展

除了使用操作系统本身集成的postgresql软件套件外,也可以通过官方网站获取官方集成的rpm软件套件,下去可自行尝试,在Linux下下载必须要保证网络畅通,具体下载地址:

https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

下载官方提供的 rpm 源配置包

然后使用rpm 安装该包

[root@sdedu ~]# rpm -ivh pgdg-redhat-repo-latest.noarch.rpm

或者直接使用yum进行安装

[root@sdedu ~]# yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

然后执行yum安装客户端

[root@sdedu ~]# yum install postgresql12

执行yum安装数据库服务端

[root@sdedu ~]# yum install postgresql12-server

初始化数据目录

[root@sdedu ~]# /usr/pgsql-12/bin/postgresql-12-setup initdb

通过systemctl启动数据库和配置开机启动

[root@sdedu ~]# systemctl  start postgresql-12

[root@sdedu ~]# systemctl  enable postgresql-12

推荐阅读

f88d69b3-401f-eb11-8da9-e4434bdf6706.png

MySQL之通用二进制格式的安装方法

2019-07-03

fa8d69b3-401f-eb11-8da9-e4434bdf6706.png

再见2019,你好2020

2020-01-01

fc8d69b3-401f-eb11-8da9-e4434bdf6706.png

晟数学院成为首批中国PG培训认证体系合作伙伴

2019-07-05

ff8d69b3-401f-eb11-8da9-e4434bdf6706.jpeg048e69b3-401f-eb11-8da9-e4434bdf6706.gif

点击“阅读原文

sql配置管理器服务是空的_PostgreSQL 12 安装和配置相关推荐

  1. sql配置管理器服务是空的_Sql Server ReportingServices(SSRS)报表配置

    一: 先安装SqlServer ReportingServices 功能 打开sqlserver安装程序,选择SSRS功能组件,按照安装向导的提示完成安装过程. 二 . 绑定数据库实例 安装SSRS将 ...

  2. sql配置管理器服务是空的_教你搭建一个属于自己的游戏服务器--龙武

    系统:windos2008 64 配置:腾讯云2H4G5M 1.安装宝塔和N++和环境库 2.宝塔界面安装Apache和php5.6和sql server 3.安装完sql 打开管理器对系统数据库右击 ...

  3. 为什么下载了SQL Server却没有sql配置管理器

    关于怎样查找sql配置管理器,网上有很多,可以先去搜一下是自己找不到还是根本没下载. 如果没下载的话,看看这篇文章,不用麻烦地重装sql server 找到setup.exe文件 在当初安装完sql ...

  4. SQL 配置管理器 MMC无法创建管理单元

    SQL 配置管理器提示错误: MMC无法创建管理单元. MMC无法创建管理单元,此管理单元可能没有正确安装. 近期用到SQL的"配置管理",但是打开"配置管理" ...

  5. sql2008 服务器未响应,sql配置管理器,SQL server (MSSQLSERVER)开启不了,请求失败或服务器未响应....

    1:Integrated Security参数 当设置Integrated Security为 True 的时候,连接语句前面的 UserID, PW 是不起作用的,即采用windows身份验证模式. ...

  6. SQL Server 配置管理器

    SQL Server 配置管理器是一种工具,用于管理与 SQL Server 相关联的服务.配置 SQL Server 使用的网络协议以及从 SQL Server 客户端计算机管理网络连接配置.SQL ...

  7. SQL Server 配置管理器不见了

    SQL Server 配置管理器不见了 错误重现: 之前安装好的SQL Server 2012打开都没有问题,好多天没有打开了,今天打开我的SQL Server 2012 连接时出现错误: 在与SQL ...

  8. SQL Server 2012配置管理器/MMC无法创建管理单元

    今天打算配置一下SQLServer结果打开后发现如下图问题: 百度下 有以下几种解决方法: 方法一.修改SQL Server注册表80目录下的子项 https://zhidao.baidu.com/q ...

  9. 计算机配置管理模块mmc无法,SQL Server 2012配置管理器/MMC无法创建管理单元

    今天打算配置一下SQLServer结果打开后发现如下图问题: 百度下 有以下几种解决方法: 方法一.修改SQL Server注册表80目录下的子项 https://zhidao.baidu.com/q ...

最新文章

  1. 洛谷P4480 【[BJWC2018]餐巾计划问题】
  2. 使用OpenCV进行人脸检测(Viola-Jones人脸检测方法)
  3. 教你打造一个Android组件化开发框架
  4. 【详细解读】CSS渐变用法——Web前端系列学习笔记
  5. OpenShift Origin中的Kubernetes Spark运算符(第1部分)
  6. 树莓派c语言运行_树莓派完成简单的编程(四)
  7. 推荐asp.net调试工具:miniASPNETServer
  8. 网页嵌入对象(图片、视频、网页)
  9. Linux/Ubuntu 单机配置Hbase
  10. java print int_java – 在printin输入int
  11. 博客开园了~~~~~~
  12. 关于时间轴发展历程等PPT模板展现方式的探讨
  13. 查看计算机bios版本,Bios版本如何查看?电脑Bios版本四种查看方法
  14. 麦克风阵列概述与波束形成—(1) 麦克风阵列概述
  15. element上传图片至最大限制数量时,隐藏上传按钮
  16. 华为机试:身高体重排序
  17. 开始使用Elasticsearch (2): 了解如何进行搜索
  18. 【论文翻译 假新闻检测综述 HICSS 2019】Can Machines Learn to Detect Fake News? A Survey Focused on Social Media
  19. C语言程序与设计:篮球游戏
  20. python虚拟环境管理 —— 以 workon 切换虚拟环境

热门文章

  1. Docker存储驱动devicemapper介绍和配置
  2. Bounding-box_regression详解
  3. 如何将 Linux 系统转移至 LVM 卷
  4. 网管分析数据包? 组合一下吧。
  5. 巧妙喝水打败多种疾病(节选)
  6. 程序员结婚晚回家怕出轨吗?老婆:不怕,老公是写代码的,忙得很!
  7. 被定制化开发坑惨了的IT人,不是所有的报表都能满足老板的需求
  8. 数字化赋能智能生产,一套数据决策分析体系,完美解决生产管理
  9. 【转载】作者苗晓平介绍的飞鸽传书
  10. 【源码】2012年斗地主算法大全