暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL入门学习3源码安装善后处理

原创 少年中国强56。 2023-01-03
539

一、修改环境变量

提醒:
修改环境变量的原因是,我们要将PostgreSQL数据库的可执行程序,psql,pg_ctl,pg_dump,pg_restore,createdb,oid2name等加入到当前用户的环境变量PATH,这样,将来我们就可以直接执行这些命令,而不再需要通过调用绝对路径,诸如上述我们步骤8初始化数据库的时候,执行/data/postgres/13.2/bin/initdb,或者步骤9中的,启动数据库调用/data/postgres/13.2/bin/pg_ctl命令。

另外,我们再配置一个PGDATA的环境变量,该变量用于指定数据库cluster的路径。该部分内容,在后续会讲述。

修改postgres用户的~/.bash_profile,PATH添加 /data/postgres/13.2/bin,同时,添加PGDATA= /data/postgres/13.2/data,环境变量。如果是CentOS 7/6的系统,参照下述配置:

PATH=$PATH:$HOME/.local/bin:$HOME/bin:/data/postgres/13.2/bin
export PATH
PGDATA=/data/postgres/13.2/data
export PGDATA

查看文件

cat ~/.bash_profile 
cat ~/.bashrc 

由于,我这边手头上的这台Linux服务器是CentOS 8.1版本的操作系统,用户的默认环境变量配置信息已经变更到~/.bashrc文件里了,所以,我就直接配置到 ~/.bashrc 文件里了。
image.png
图片说明:修改postgres用户的/.bash_profile,如何存在/.bashrc 可以只修改 ~/.bashrc


# User specific environment
PATH="$HOME/.local/bin:$HOME/bin:$PATH:/data/postgres/13.2/bin"
PGDATA=/data/postgres/13.2/data
export PATH PGDATA

使其环境变量生效

source ~/.bash_profile
source ~/.bashrc 

至此,已经完成了在CentOS 8.1操作系统的Linux服务器上,通过编译源代码的方式安装PostgreSQL 13.2的数据库。

image.png
(上图报错的原因是没有执行命令 source ~/.bash_profile ,执行了就可以了)

二 修改参数、删除数据库等(补充)

1 修改数据库参数(非必须,个人建议修改)

a 修改pg_hba.conf文件

路径:[postgres@localhost ~]$ vi /data/postgres/13.2/data/pg_hba.conf

image.png

#IPv4 local connections:
host  all  all  0.0.0.0/0  md5

image.png

b 修改postgresql.conf文件

在/data/postgres/13.2/data/postgresql.conf 文件中,修改#listen_addresses = ‘localhost’为listen_addresses = ‘*’。
image.png

然后,reload使其生效。

pg_ctl restart -m fast

为什么要修改这个文件?为什么要这么修改?

原因是,如果不修改的话,则客户端只能通过数据库服务器的环路地址127.0.0.1来访问数据库,不能使用服务器的对外IP地址来访问。也就是说,这个数据库只对本机提供服务,其它任何机器都访问不了这个数据库。

如下,修改之前:

   postgresql-13.2]$ psql 
psql (13.2)
Type "help" for help.
​
postgres=# show listen_addresses ;
 listen_addresses 
------------------
 localhost

(1 row)

psql 
 \q
​psql -h localhost
\q
psql -h localhost -p 5432 -d postgres
postgres=# show listen_addresses ;
\q

此时,我们只能从当前服务器上访问这个数据库,且只能通过环路访问,在当前机器上通过当前机器的IP地址也不可以访问数据库。当然,从另外一台机器也不能访问该数据库。

image.png
修改listen_addresses = ‘*’,且重启数据库使其生效之后:

image.png

2 如何删除PostgreSQL数据库软件

数据库不再需要使用,或者需要重新安装配置数据库的话,就需要把之前安装的数据库软件干净的删除掉。
postgres用户进入到前面解压的源码所在的路径 /home/postgres/postgresql-13.2,通过执行
make uninstall 来卸载已经安装的数据库软件。

注意,该命令只是把前面我们手工执行编译安装configure,install命令过程中写入操作系统的一些可执行命令删除,以及一些环境变量删了。我在步骤2中手工创建的数据库安装路径依然存在,并不会被删除.

ll /data/postgres/13.2/ #安装文件路径
rm -rf /data/ #删除安装文件
userdel -r postgres #删掉用户postgres 检查:ll /home/
guoupdel postgres #删除用户组

3 如何重新编译安装PostgreSQl数据库软件

在一些情况下,我们可能需要重新编译安装数据库软件,比如初次安装的时候,如果不是使用make world编译源码的话,那么默认情况下少了很多数据库的扩展,而我们又发现需要用到这些扩展,该怎么办?或者,干脆,我们需要推倒重来的话,就可以选择重新编译安装。

a方式1 重新解压源码、编译、安装

可以从前面第4步开始重新走一遍流程,即重新解压源码,用新解压出来的源码文件,再依次进行configure,make world,make install-world。

b方式2 清除之前的编译状态

就是把之前第5步骤执行configure之后的文件状态,恢复到configure之前的状态,然后再通过执行configure,make world,make install-world。这个命令是make distclean。说白了,这个命令就是将源代码路径下的文件恢复到刚解压出来的状态,清除了之前执行configure命令对该路径下的所有文件的修改。

如下是第二种方式的记录:

ll
gmake distclean
ll

gmake distclean之后,ll命令列出源代码路径的输出结果和最开始的解压源码之后的文件和路径大小输出保持一样,即恢复到刚解压的状态。

三、 关于zlib的补充

下面,验证一 前提条件中 5 zlib compression library小结的疑问了。

原来,当我们的OS没有安装zlib软件包的情况下,我们在安装数据库软件的时候,只能以–without-zlib的选项来执行安装,否则过不去。安装完之后,当我们以pg_dump备份数据库的时候,就不能选择对备份文件执行压缩了。

安装命令:

postgres@localhost ~]$ ./configure --prefix=/home/postgres/pg13 --without-readline --without-zlib

备份命令:以-Fc(表示定制格式custom Format,生成的备份文件不再是普通文本格式),-Z6,表示采用6这个级别的压缩,一共9级。

看到有警告⚠️了:

pg_dump: warning: requested compression not available in this installation — archive will be uncompressed


我们采用定制备份备份文件的格式(非文本),或者直接备份为文本格式(默认)时,都不会有警告了。

time pg_dump -d es -U es -f es.dmp -Fc
ll -h
ll -h

[postgres@localhost ~]$ file es.dmp.z6_withoutzlib
es.dmp.z6_withoutzlib: PostgreSQL custom database dump - v1.14-0
[postgres@localhost ~]$ file es.dmp
es.dmp: PostgreSQL custom database dump - v1.14-0
[postgres@localhost ~]$ file es.dmp.plain.file
es.dmp.plain.file: ASCII text
[postgres@localhost ~]$

使用-Fc定制备份格式的文件都不再是普通文本文件,恢复的时候就需要使用pg_restore来恢复了。而普通格式的备份文件,可以直接在psql命令行上执行恢复了。

小结:

1、如果操作系统上缺乏zlib软件包的话,安装数据库软件时,不得不使用–without-zlib选项。结果就是,当我们使用pg_dump对数据库进行备份的话,无论采用什么格式,都不能对备份文件进行压缩。
2、如果操作系统上有zlib软件包的话,安装数据库软件时,主动选择不使用–without-zlib选项的话,当我们使用pg_dump对数据库进行备份的话,无论采用什么格式,依然不能对备份文件进行压缩。

最后修改时间:2023-04-17 14:29:52
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论