热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Postgresql集群搭建与PostGIS安装

目录Postgresql集群搭建手册一、软件安装预先准备工作二、Postgresql安装(附带PostgreGIS安装)2.1potgresql安装2.2postgres常见错误


 
目录
Postgresql集群搭建手册

一、软件安装预先准备工作
二、Postgresql安装 (附带PostgreGIS安装)    
2.1 potgresql安装    
2.2 postgres常见错误说明
三、PostgreGIS安装 postGIS
四.Postgresql数据库备份与恢复
五.postgresSQL集群重启
Postgresql集群搭建手册
一、软件安装预先准备工作
Linux离线情况下添加依赖包
Linux (以centos为例)

1.查看是否挂在镜像
cd /mnt/cent/
ls

结果显示:


2.挂在linux系统镜像文件【Centos镜像】
vi /etc/yum.repos.d/CentOS-Media.repo

结果如下图:


3.从镜像中安装需要的依赖包:这里安装gcc*依赖包
yum --disablerepo=\* --enablerepo=c6-media install gcc*
1
结果出现;complicated!!表明安装成功
(1)挂载centos镜像的命令:
mount –o loop /mnt/cent CentOS-Media-dvd.iso
(2)查看是否挂在成功
mount //查看最后一行,指定挂载路径下是否有该文件

//如下为具体操作,但是只是本次生效,重启后无效    

{
df //查看当前系统的文件系统情况(分盘分区)
cd ~ //进入用户目录
ls /mnt/cent/
mount -o loop /mnt/cent/ CentOS-6.8-x86_64-bin-DVD1.iso
vim /etc/yum.repos.d/CentOS-Media.repo
yum --disablerepo=* --enablerepo=c6-media install gcc*
}

二、Postgresql安装 (附带PostgreGIS安装)
potgresql安装链接:
https://blog.csdn.net/zhu_xun/article/details/21234663
二、安装

1.下载postgresql:
本例中安装的方式为源码安装,读者可以到官方网址:http://www.postgresql.org/ftp/source/v9.3.2/进行下载

2.解压文件:
tar -zxvf postgresql-9.3.2.tar.gz

3.进入解压目录并配置参数
进入解压目录:cd postgresql-9.3.2
创建安装目录:sudo mkdir /opt/postgresql-9.3.2(依你习惯而定)
配置安装参数:./configure --prefix=/opt/postgresql-9.3.2
注:在这一步,相信很多同学会发生一些错误,如果发生了,请参看下面"三、常见错误说明"部分来解决她。

4.编译:
make

5.安装:
sudo make install

6.创建用户组和用户:
创建用户组:sudo groupadd postgresql
创建用户:sudo useradd -gpostgresql postgresql
为了方便管理,在此创建了postgresql用户组以及postgresql用户,以后可以通过postgresql用户来管理postgresql数据库。

7.创建数据库库文件存储目录并给postgresql用户赋予权限:
进入数据库安装目录:[zhu@zhu postgresql-9.3.2]$ cd /opt/postgresql-9.3.2
创建data目录:[zhu@zhu postgresql-9.3.2]$ sudo mkdir data
给postgresql用户赋予权限:sudo chown postgresql.postgresql data

8.添加环境变量:


9.初始化数据库目录:
首先,要切换用户:su postgresql
如果没有配置密码,先给postgresql配置密码:sudo passwd postgresql

初始化数据:[postgres@zhu postgresql-9.3.2] bin/initdb -D data

10.启动数据库:
这里通过postmaster脚本启动:postgresql安装及常见错误处理
[postgres@zhu postgresql-9.3.2] bin/postmaster -D /opt/postgresql-9.3.2/data
启动成功后,可以看到如下提示:

这是可以重新打开一个端口,以postgresql用户身份进入测试一下。
但目前位置,该数据库只能允许本地访问,如果运行其他用户访问的话还需继续进行如下配置:

10.配置监听地址和端口:
[postgres@zhu postgresql-9.3.2] vi data/postgresql.conf
修改为如下配置:
  listen_addresses = '’
  port = 5432
也就是将注释号"#“去掉,并把"127.0.0.1"改为”"

11、允许远程主机连接:
[postgres@zhu postgresql-9.3.2] vi data/pg_hba.conf
天加如下配置host all all 0.0.0.0/0 trust,参考如下:

注意:
(1).其中,"trust"和"password"为postgresql数据库登陆验证的方式,"trust"表示信任,即不需要输入密码(即使有密码),"password"表示需 要输入密码。
(2).host all all 127.0.0.1/31 trust表示本地连接数据库不需要输入密码(即使有密码,设为trust后就不需要密码)
(3).host all all 0.0.0.0/0 所有主机连接数据库需要输入密码(如果有密码)
(4).当然,这两个综合后表现的结果就是:对于本机链接表示信任(不需要输入密码),对于非本机链接需要输入密码

12.修改防火墙,开放5432端口:
sudo vim /etc/sysconfig/iptables
加上:-A INPUT -p tcp -m tcp --dport 5432 -j ACCEPT
重启防火墙:sudo service iptables restart

12.在postgresql数据库中为之前创建的postgresql用户增加密码:
如果你的postgresql数据库没有启动,请用$POSTGRESQL_HOME/bin/postmaster -D /opt/postgresql-9.3.2/data命令或者用下面的第13部分介绍的命令。
通过psql命令进入postgresql数据库的控制台,然后执行:
ALTER USER postgresql PASSWORD ‘它的密码’;
如果输入"psql"出现如下异常:
psql: FATAL: database "postgresql" does not exist

则说明数据库中不存在postgresql数据库,可以换个初始数据库连接下:
[postgresql@bigdata-jobtrack ~]$ psql template1
psql (9.3.2)
Type “help” for help.
修改postgres用户密码:
template1=# ALTER USER postgresql PASSWORD '123456';
ERROR: role “postgres” does not exist
如不存在postgresql 用户则则新建该用户
template1=#CREATE USER postgresql WITH PASSWORD '123456'
注:此处的“postgresql”用户为数据库用户.
这时,posrgresql用户就可以作为数据库的使用用户了,可以打开一个postgresql客户端,如navicat,尝试连接一下。

13.关闭postgresql数据库并重新启动,使更改后的配置生效:
下面是通过postgresql的pg_ctl工具进行操作:
关闭postgresql数据库:pg_ctl stop -m fast
启动postgresql数据库:pg_ctl start

这时,你可以通过远程主机登陆系统试一下。
至此,一个完整的postgresql数据库便安装完毕了,你可以通过远程主机以postgresql用户身份输入密码登陆postgresql了!
#####2.2 postgres常见错误说明
1.安装常见错误:
(1).

configure: error: readline library notfound
If you have readline already installed, see config.log for detailson the
failure.  It is possible the compiler isnt lookingin the proper directory.
Use --without-readline to disable readlinesupport.

如果出现以上错误,说明你的系统缺少readline库,这时输入:
rpm -qa | grep readline
如果提示:readline-6.0-4.el6.x86_64
那么,你的电脑缺少readline-devel库,你只要安装一下readline-devel就行了:
yum -y install readline-devel
再次rpm -qa | grep readline
提示:
readline-devel-6.0-4.el6.x86_64
readline-6.0-4.el6.x86_64
说明readline-devel安装成功。

(2).

checking for inflate in -lz... no
configure: error: zlib library not found
If you have zlib already installed, see config.log for details on the
failure. It is possible the compiler isn't looking in the proper directory.
Use --without-zlib to disable zlib support.

出现这种错误,说明你的系统缺少zlib库,输入:rpm -qa | grep zlib,如果出现如下提示:

zlib-1.2.3-29.el6.x86_64
zlib-1.2.3-29.el6.i686
jzlib-1.0.7-7.5.el6.x86_64
1
2
3
则说明,你的电脑缺少zlib-devel库,安装一下即可:
yum install zlib-devel;
这时,再rpm -aq | grep zlib

zlib-1.2.3-29.el6.x86_64
zlib-1.2.3-29.el6.i686
jzlib-1.0.7-7.5.el6.x86_64
zlib-devel-1.2.3-29.el6.x86_64

说明zlib-devel安装成功。如果你的系统以上库均缺失,则要全部安装。

2.数据库连接常见错误:
could not connect to server: Connection refused (0x0000274D/10061)
Is the server running on host "95.110.201.74" and accepting
TCP/IP connections on port 5300?"
1
2
3
如果出现以上错误提示,一般是发生在远程主机连接的情况下。出现错误的原因5432端口号被拒绝连接或者postgresql数据库未监听本机以外的其他主机的连接请求。这时,你要分别检查如下两个步骤的操作正确与否:
a.让防火墙开放5432端口:
sudo vim /etc/sysconfig/iptables
加上:-A INPUT -p tcp -m tcp --dport 5432 -j ACCEPT
重启防火墙:sudo service iptables restart
b.修改$POSTGRESQL_HOME/data/postgresql.conf配置文件:
修改为如下配置:
  listen_addresses = ‘*’
  port = 5432

(2).如果从本地访问数据库,出现如下提示:
FATAL:no pg-hba.conf entry for host “xxxxxxxx”,user “xxx” database “xxxxx”…
则说明,本地访问被设置了非trust模式,请检查$POSTGRESQL_HOME/data/pg-hba.conf配置文件是否有如下配置信息:
host all all 127.0.0.1/32 trust
其中,关于此配置信息的详细说明可以回看二.11

三、PostgreGIS安装
postGIS

  使用root用户登录
1
Su –root
1
输入密码

安装 geos
解压: tar zvf geos-3.5.0.tar
进入目录: cd /geos-3.5.0
执行 ./configure –prefix=/opt/geos
如果报错g++not found
执行yum install gcc_c++
重新执行./configure –prefix=/opt/geos
如果报错Configure:configure:error: could not find xml2-config from libxml2 within the current path. You mayneed to try re-running configure with a --with-xml2config
执行 yum install libxml2-devel.x86_64
重新执行./configure –prefix=/opt/geos
执行 make
执行 make install

安装 proj
解压: tar zvf geos-3.5.0.tar
进入目录:cd /geos-3.5.0
执行 ./configure –prefix=/opt/ proj
执行 make
执行 make install

安装gdal
解压: tar zvf geos-3.5.0.tar
进入目录: cd /geos-3.5.0
执行 ./configure –prefix=/opt/gdal
执行make
执行 make install

cd /vmware/
 ls
mkdir /media/centos
 mount centos6.5.iso /media/centos
 mount centos6.5.iso /media/centos -o loop
 cd /media/centos/
ls
 vi /etc/yum.repos.d/CentOS-Media.repo 
 yum --disablerepo=\* --enablerepo=c6-media install libxml2-devel

执行 postgis安装
  解压 tar zvf postgis-2.2.4dev.tar
1
  进入目录 cd /postgis-2.2
1
  执行如下:
1
./configure--prefix=/opt/postgis-2.2/ --with-pgconfig=/opt/pgsql-9.4.9/bin/pg_config--with-geosconfig=/opt/geos/bin/geos-config --with-projdir=/opt/proj/--with-gdalconfig=/opt/gdal/bin/gdal-config
执行 make
执行 make install
登录pgsql命令行,安装gis扩展:

psql test -U postgres
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
CREATE EXTENSION fuzzystrmatch;

出错:
ERROR: could not open extension control file “/usr/local/pgsql/share/extension/fuzzystrmatch.control”: No such file or directory
这个扩展已经包含在pgsql源码中,但是默认并未完成,所以需要安装之,进入pgsql源码目录:

cd contrib/fuzzystrmatch/
make
make install

然后再在pgsql命令行下执行:CREATE EXTENSION fuzzystrmatch;
没有出现错误
CREATE EXTENSION postgis_tiger_geocoder;
没有出错,至此postgis安装完成

----------------------------------------分割线-----------------------------------------

分类:
postgis

在使用源代码安装postgis的过程中, 需要先安装proj-4.9.1,geos-3.5.0,libxml2-2.6.30, 最后再安装postgis. 以下是安装过程中遇到的坑.

安装libxml需要有权限创建py脚本. 给当前用户配上权限就好。
1.    make[5]: Entering directory `/ODM/hanxin/diamond/libxml2-2.9.4/python'  
2.    make[5]: Nothing to be done for `install-exec-am'.  
3.     /bin/mkdir -p '/data/hanxin/diamond/app/postGIS/libxml2-2.9.4/share/doc/libxml2-python-2.9.4'  
4.     /usr/bin/install -c -m 644 TODO '/data/hanxin/diamond/app/postGIS/libxml2-2.9.4/share/doc/libxml2-python-2.9.4'  
5.     /bin/mkdir -p '/usr/lib/python2.6/site-packages'  
6.     /usr/bin/install -c -m 644 drv_libxml2.py libxml2.py '/usr/lib/python2.6/site-packages'  
7.    /usr/bin/install: cannot create regular file `/usr/lib/python2.6/site-packages/drv_libxml2.py': Permission denied  
8.    /usr/bin/install: cannot create regular file `/usr/lib/python2.6/site-packages/libxml2.py': Permission denied
 
9.    make[5]: *** [install-dist_pythonDATA] Error 1  

安装postgis后运行脚本创建各种function (psql -d postgis -f postgis.sql)
首先,因为这是一个很大的脚本, 满满一大屏幕的错误反复出现’psql:postgis.sql:6828: ERROR: current transaction is aborted, commands ignored until end of transaction block’. 根据判断应该是上面某个sql就出错了, 需要把它揪出来.
于是运行psql -d postgis -f postgis.sql -s, 逐个执行确认, 观察是否出错, 很快找到了出错的部分抛出异常
ERROR: could not load library “/usr/local/pgsql/lib/postgis-2.0.so”: libgeos_c.so.1: cannot open shared object file: No such file or directory
于是运行ldd postgis-2.0.so看看究竟哪些文件缺了, 发现是libgeos_c.so.1和libproj.so.9!
虽然不明白为什么安装geo和proj时会少copy这两个文件到postgis/lib下,但既然在这两个项目安装目录的lib文件下能找到这两个文件, 那就试试手动copy吧, 果然,搞定!
四.Postgresql数据库备份与恢复
1.pg数据库的备份与恢复
(1)备份命令:

pg_dump -U postgres -f /xxx.sql 1002
1
(2)拷贝移动生成的*.sql文件到指定数据库主机下

scp /xxx.sql root@192.168.10.100:/
1
(3)恢复命令:

psql -U postgres -f /xxx.sql 1002
1
2.pg数据表的备份与恢复

##五.postgresSQL集群重启
####1. 首先切换为postgresql用户

su postgresql
1
####2. 然后进入postgresql安装bin目录下

pg_ctrl  start  -D /home/potgres/data                         //启动服务
1
(提示:里面还有很多错误没有改正,参考时候请注意***细节***)
 


推荐阅读
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 在 CentOS 6.5 系统上部署 VNC 服务器的详细步骤与配置指南
    在 CentOS 6.5 系统上部署 VNC 服务器时,首先需要确认 VNC 服务是否已安装。通常情况下,VNC 服务默认未安装。可以通过运行特定的查询命令来检查其安装状态。如果查询结果为空,则表明 VNC 服务尚未安装,需进行手动安装。此外,建议在安装前确保系统的软件包管理器已更新至最新版本,以避免兼容性问题。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • CentOS 7 中 iptables 过滤表实例与 NAT 表应用详解
    在 CentOS 7 系统中,iptables 的过滤表和 NAT 表具有重要的应用价值。本文通过具体实例详细介绍了如何配置 iptables 的过滤表,包括编写脚本文件 `/usr/local/sbin/iptables.sh`,并使用 `iptables -F` 清空现有规则。此外,还深入探讨了 NAT 表的配置方法,帮助读者更好地理解和应用这些网络防火墙技术。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • Unity与MySQL连接过程中出现的新挑战及解决方案探析 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • MySQL 8.0 MGR 自动化部署与配置:DBA 和开源工具的高效解决方案
    MySQL 8.0 MGR 自动化部署与配置:DBA 和开源工具的高效解决方案 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
author-avatar
启布平凡
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有