PostgreSQL 介绍与安装 —— 千月的零基础学习PostgreSQL(1)

时间:2022-09-28 22:47:57
PostgreSQL 介绍与安装

1、PostgreSQL 介绍(官方)
PostgreSQL是一个强大的开源对象关系数据库系统,它使用和扩展了SQL语言,结合了许多存储和处理最复杂的数据工作的特性。PostgreSQL的起源可追溯到1986,作为加利福尼亚大学伯克利的Postgres项目的一部分,并在核心平台上有30多年的积极发展。

PostgreSQL凭借其成熟的架构、可靠性、数据完整性、健壮的特征集、可扩展性以及开源软件社区背后的奉献精神,不断地提高性能和提供新的解决方案,赢得了很高的声誉。PostgreSQL在所有主流操作系统上都可以运行,自2001以来一直是符合ACID①的,并且具有强大的插件,如流行的PostGIS地理空间数据库扩展器。PostgreSQL已经成为许多用户和组织选择的开源关系数据库。

开始使用PostgreSQL从来都不容易——选择一个您想要构建的项目,并让PostgreSQL安全地和可靠地存储您的数据。

零基础备注: ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。达不到这4点的,在应用中无法保证其数据的正确性。

千月:开源数据库其实很多种,之前比较著名的 MYSQL被甲骨文收购了以后版本不停的更新,但功能更新略显迟缓,现在MYSQL依然使用GPL开源,可是未来谁知道呢,商人会有自己的想法。不过作为MYSQL的分支MariaDB一路追赶,渐渐追上了流行的脚步。sqllit 也不错啦,就是轻量级的,自己玩玩挺好,没有那么多复杂的限制。MongoDB据说对复杂事务的处理还需要加强,不过在大佬们的加持下应该有不错的前景。 PostgreSQL,就是我们的主角。出身名门,伯克利如雷贯耳。社区的强力支持使得每个版本的更替中都有实质性的进步,几乎没有明显的弱点,功能非常完整,支持所有主流编程语言。换句话说就是底子好,其实无论什么数据库都是一个程序,任何弱点可以写程序自己弥补,底子好的数据库比较省事,省事的事物大家都喜欢。

ps:千月开头的都是本人的浅见,不成熟的地方还请大家海涵,一笑置之。

2、PostgreSQL安装
演示下CentOS 7 下的安装。用的说官网的安装方法。其实在线安装还是很快的。考虑到很多情况下无法使用生产环境连接外网。因此还是离线安装吧。

获得安装文件
去官网下载源码包自己安装应该是最好的选择。
www.postgresql.org
比如我要下载的 10.3版本 就是
https:// www.postgresql.org /ftp/source/v10.3/

压缩格式 gz 和 bz2 都可以只要你能解开。我下的是 gz 的。

PostgreSQL 介绍与安装 —— 千月的零基础学习PostgreSQL(1)

可以看出数据库并不大,我们一步一步解压这个文件。
使用gunzip 命令解开 .gz 压缩,得到 .tar 文件。
gunzip postgresql-10.3.tar.gz
PostgreSQL 介绍与安装 —— 千月的零基础学习PostgreSQL(1)

使用 tar 命令解开 .tar 文件,解压后是一个目录。
tar -xvf postgresql-10.3.tar
PostgreSQL 介绍与安装 —— 千月的零基础学习PostgreSQL(1)

tips: 我们也可以直接使用命令解开 .tar.gz 为后缀的文件。只需要再加一个参数 z
tar -xzvf postgresql-10.3.tar.gz

开始安装过程
进入目录,我们看到有一个可执行文件 绿色的, configure 我们执行这个文件。因为没在环境变量里,所以我们使用 ./configure 来执行。
cd postgresql-10.3
PostgreSQL 介绍与安装 —— 千月的零基础学习PostgreSQL(1)

./configure
PostgreSQL 介绍与安装 —— 千月的零基础学习PostgreSQL(1)

===================================================
可能出现的故障:

没有安装 readline 库 相同的问题可能还有其他库解决方法一样。
PostgreSQL 介绍与安装 —— 千月的零基础学习PostgreSQL(1)

需要安装库文件。当然也可以使用 --without-readline 跳过这个错误,这个库文件主要是用来逐行读取文件用的,为了以后不踩坑还是排掉这个告警吧。
我们使用 rpm 命令来查看系统是否安装了这个库。
rpm -qa | grep readline
PostgreSQL 介绍与安装 —— 千月的零基础学习PostgreSQL(1)

零基础备注: 这条命令主要是查询系统安装了那些程序,通过管道符将结果送到 grep 命令里过滤找出含有readline关键字的一行输出。

我们需要的是 readline-devel 这个开发人员库。而刚才的命令显示只安装了基本库readline。我们使用 yum 来安装。先切换到 root 用户(系统管理员),输入密码后执行yum。
su -

PostgreSQL 介绍与安装 —— 千月的零基础学习PostgreSQL(1)

yum -y install readline-devel
最后显示已经安装完成并且做了一些必要的依赖组件升级

PostgreSQL 介绍与安装 —— 千月的零基础学习PostgreSQL(1)

零基础备注: yum是 CentOS 系统安装应用的工具,能够解决每个软件之间麻烦的相互依赖关系。 -y 参数是遇到需要输入 y(yes)的地方全部自动输入y.

我们再次查询发现已经安装好了。

PostgreSQL 介绍与安装 —— 千月的零基础学习PostgreSQL(1)

===================================================

没有任何报错就可以继续了。看到配置程序开始建立 makefile 就差不多行了。

PostgreSQL 介绍与安装 —— 千月的零基础学习PostgreSQL(1)

下面执行 make 操作,出现 successfully made 代表执行成功可以进行下一步了。
make

PostgreSQL 介绍与安装 —— 千月的零基础学习PostgreSQL(1)

零基础备注: make 命令根据 刚才生成的 makefile 文件中的规则 构建文件 , 有些资料将其片面的归结为编译,其实是不对的。

切换到root用户 注意 su 后面不要加 " - " 那样会把环境都切过去。还要重新进入这个目录。切换过后开始安装。
su
make install

PostgreSQL 介绍与安装 —— 千月的零基础学习PostgreSQL(1)

很快就显示完成了

PostgreSQL 介绍与安装 —— 千月的零基础学习PostgreSQL(1)

建立使用环境
建立一个系统用户 postgres 建立完成后可以使用 id 命令查一下。
adduser postgres
建立一个存储数据的目录
mkdir /usr/local/pgsql/data
将这个目录的 所有者分配给 postgres 用户。
chown postgres /usr/local/pgsql/data

PostgreSQL 介绍与安装 —— 千月的零基础学习PostgreSQL(1)

tips: 这里是官方的文档建议如此设置,但是我更推荐将 chown 命令如下写
chown -R postgres:postgres /usr/local/pgsql

添加启动服务
cp 源代码解压目录/postgresql-10.3/contrib/start-scripts/linux
/etc/init.d/postgresql

PostgreSQL 介绍与安装 —— 千月的零基础学习PostgreSQL(1)

零基础备注: linux系统如果要管理某项服务,需要把服务的管理脚本放到 /etc/init.d目录下。源代码自带了Linux系统下的服务管理脚本。我们仅需要将其拷贝过去修改即可。
零基础备注: 因为命令太长了,为了阅读方便我使用了 " \ " 来将命令换行。因此 >号是换行后系统自己加的,不用打。

启动服务的脚本必须是可执行程序。我们用chmod 修改。
chmod a+x /etc/init.d/postgresql

PostgreSQL 介绍与安装 —— 千月的零基础学习PostgreSQL(1)

零基础备注: chmod 命令一说就远了。 仅解释下 a+x 是指 a (all) + x(可执行权限),简单来说就是为所有系统用户赋予了可执行权限。

理论上没有特别的改动这个启动脚本是不用修改的。
但是如果数据目录不是 PGDATA所指定的则需要修改。
其他选项类同。
vim /etc/init.d/postgresql

PostgreSQL 介绍与安装 —— 千月的零基础学习PostgreSQL(1)

在环境变量下添加 postgresql 的 bin 目录。
vim /etc/profile
export PATH=/usr/local/pgsql/bin:$PATH

PostgreSQL 介绍与安装 —— 千月的零基础学习PostgreSQL(1)

零基础备注: PATH 是一个系统变量,存储了系统查找命令的目录,如果不将我们的pgsql/bin/目录加入其中,我们每次执行 postgresql 命令的时候都需要加入路径。而加入PATH系统变量以后就直接打命令就可以了。也可以 tab补全。

初始化数据库
切换用户到 postgres
su - postgres
初始化数据库,支持 unicode (多语种字符)
initdb -E UNICODE -D /usr/local/pgsql/data

PostgreSQL 介绍与安装 —— 千月的零基础学习PostgreSQL(1)

启动数据库
切换用户到 root
su -
启动数据库
/etc/init.d/postgresql start

PostgreSQL 介绍与安装 —— 千月的零基础学习PostgreSQL(1)

查看数据库
切换用户到 postgres
su - postgres
执行命令 psql 进入 psql 系统, 使用 /l 查看数据库 (L小写)
psql
PostgreSQL 介绍与安装 —— 千月的零基础学习PostgreSQL(1)