1. 程式人生 > >Postgresql叢集搭建與PostGIS安裝

Postgresql叢集搭建與PostGIS安裝

目錄
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*

結果出現;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安裝)

1.下載postgresql:
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使用者賦予許可權:

進入資料庫安裝目錄:[[email protected] postgresql-9.3.2]$ cd /opt/postgresql-9.3.2
建立data目錄:[[email protected] postgresql-9.3.2]$ sudo mkdir data
給postgresql使用者賦予許可權:sudo chown postgresql.postgresql data

8.新增環境變數:

在這裡插入圖片描述

9.初始化資料庫目錄:

首先,要切換使用者:su postgresql
如果沒有配置密碼,先給postgresql配置密碼:sudo passwd postgresql

初始化資料:[[email protected] postgresql-9.3.2] bin/initdb -D data

10.啟動資料庫:

這裡通過postmaster指令碼啟動:postgresql安裝及常見錯誤處理
[[email protected] postgresql-9.3.2] bin/postmaster -D /opt/postgresql-9.3.2/data
啟動成功後,可以看到如下提示:
在這裡插入圖片描述
這是可以重新開啟一個埠,以postgresql使用者身份進入測試一下。
但目前位置,該資料庫只能允許本地訪問,如果執行其他使用者訪問的話還需繼續進行如下配置:

10.配置監聽地址和埠:

[[email protected] postgresql-9.3.2] vi data/postgresql.conf
修改為如下配置:
  listen_addresses = '
  port = 5432
也就是將註釋號"#“去掉,並把"127.0.0.1"改為”
"

11、允許遠端主機連線:

[[email protected] 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資料庫,可以換個初始資料庫連線下:
[[email protected] ~]$ 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

則說明,你的電腦缺少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?"

如果出現以上錯誤提示,一般是發生在遠端主機連線的情況下。出現錯誤的原因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

  1.   使用root使用者登入
    
Su –root

輸入密碼

安裝 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安裝
  1.   解壓 tar zvf postgis-2.2.4dev.tar
    
  2.   進入目錄 cd /postgis-2.2
    
  3.   執行如下:
    

./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. 以下是安裝過程中遇到的坑.

  1. 安裝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.	/<span style="color:#ff0000;">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</span>  
9.	make[5]: *** [install-dist_pythonDATA] Error 1  
  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

(2)拷貝移動生成的*.sql檔案到指定資料庫主機下

scp /xxx.sql [email protected]:/

(3)恢復命令:

psql -U postgres -f /xxx.sql 1002

2.pg資料表的備份與恢復

##五.postgresSQL叢集重啟
####1. 首先切換為postgresql使用者

su postgresql

####2. 然後進入postgresql安裝bin目錄下

pg_ctrl  start  -D /home/potgres/data                         //啟動服務

(提示:裡面還有很多錯誤沒有改正,參考時候請注意***細節***)

相關推薦

Postgresql叢集搭建PostGIS安裝

目錄 Postgresql叢集搭建手冊 一、軟體安裝預先準備工作 二、Postgresql安裝 (附帶PostgreGIS安裝) 2.1 potgresql安裝 2.2 postgres常見錯誤說明 三、PostgreGIS安裝 postGIS 四.Pos

Docker1.7安裝及swarm叢集搭建介紹

Linux centos7上安裝Docker1.7: 開啟頁面:https://download.docker.com/linux/centos/7/x86_64/stable/Packages/,執行以下命令 wget https://download.docker.c

新葡京源碼搭建pytest安裝&實例

strong ted 自定義 str amp 標記 第三方 重復 功能測試 Pytest介紹?非常容易上手,入門簡單,文檔豐富,文檔中有很多實例可以參考?能夠支持簡單的單元測試和復雜的功能測試?支持參數化?執行測試過程中可以將某些測試跳過,或者對某些預期失敗的case標記成

Redis叢集搭建維護

一、概述     Redis3.0版本之後支援Cluster. 二、redis cluster安裝     1、下載和解包 cd /usr/local/ wget http://download.redis.io/releases/re

MongoDB叢集搭建java程式碼操作MongoDB示例

MongoDB叢集搭建與java程式碼操作MongoDB示例 MongoDB叢集搭建過程 java使用MongoDB叢集Demo MongoDB叢集搭建過程 1. MongoDB Replica set叢集搭建準備(主從仲裁) 介

Hadoop叢集搭建經驗總結

(002)最近要研發一款資料傳輸服務的產品需要用到Hadoop叢集,之前搭建過後來長時間不用就給忘記了,這次搭好來記錄一下搭建方法與經驗總結 Hadoop叢集的搭建 原料: VM虛擬機器 JDK1.8 hadoop2.7.3 注:將jdk1.8.ta

阿里雲Kubernetes實戰1–叢集搭建服務暴露

前言: 考慮到公司持續整合與docker容器技術實施已有一段時間,取得了不錯的效果,但對於裝置運維、系統隔離、裝置利用率和擴充套件性還有待提升,綜合目前比較成熟的微服務技術,打算把現有業務遷移到K8S叢集。 由於公司所有業務均部署在阿里雲上,最開始就調研了阿里雲自己提供的Kubernetes叢集,但後來還

redis cluster叢集搭建深入分析(1)

對於之前所講的master+slave進行讀寫分離同時通過sentinel叢集保障高可用的架構,對於一般的資料量系統已經足夠。但是對於資料量龐大的T級別的資料,單master可能就無法滿足橫向擴充套件的場景。所以redis cluster支援多master

Solr學習(三)SolrCloud叢集搭建建立Collection

1、什麼是SolrCloud SolrCloud是Solr提供的分散式搜尋方案,當你需要大規模,容錯,分散式索引和檢索能力時使用 SolrCloud。當一個系統的索引資料量少的時候是不需要使用SolrCloud的,當索引量很大,搜尋請求併發很高,這時需要使用SolrCloud來滿足這些需求。

JavaEE進階——Redis叢集搭建快取實現

一、Redis簡介 ​ Redis是一個開源的使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。從2010年3月15日起,Redis的開發工作由VMware主持。從2013年5月開始,Re

Linux Redis叢集搭建簡單使用

介紹安裝環境與版本 用兩臺虛擬機器模擬6個節點,一臺機器3個節點,創建出3 master、3 salve 環境。 redis 採用 redis-3.2.4 版本。 兩臺虛擬機器都是 CentOS ,一臺 CentOS6.5 (IP:192.168.3

codis3.2.1叢集搭建測試

Codis是一套用go語言編寫的,為了應對高並環境下的redis叢集軟體,原理是對一個redis key操作前,先把這個key通過crc32演算法,分配到不同redis的某一個slot上,實現併發讀寫功能.而且能通過zookeeper呼叫redis-sentinel來實現故障

Linux下Redis叢集搭建測試

叢集搭建 準備條件 一臺已經配置好Redis服務的虛擬機器,地址為: 192.168.2.100:6379 克隆6臺,使用命令nmtui修改地址分別為: 192.168.2.101 192.168.2.102 192.168.2.103 1

Redis 叢集搭建連線

1.Redis 安裝 2.Redis 叢集介紹 2.1 redis-cluster架構圖 edis-cluster把所有的物理節點對映到[0-16383]slot上,cluster 負責維護node<->slot<->value Re

Spark叢集搭建並驗證環境是否搭建成功(三臺機器)

在之前hadoop的基礎上,進行Spark分散式叢集: (1)下載Spark叢集需要的基本軟體,本篇需要的是:Scala-2.10.4、spark-1.4.0-bin-hadoop (2)安裝Spar

spark叢集搭建叢集上執行wordcount程式

Spark 配置 1、master 機器 Spark 配置 進入 Spark 安裝目錄下的 conf 目錄, 拷貝 spark-env.sh.template 到 spark-env.sh。 cp spark-env.sh.template spark-e

spark叢集搭建mysql元資料管理

找個spark叢集搭建是針對於上一篇hadoop的基礎上搭建的。 所以spark的版本也是要按照著hadoop版本進行下載。 1.解壓spark,修改spark的/etc/profile的home目錄。 2.安裝SCALA,並配置SCALA_HOME。 3.修改spar

Linux高效能叢集搭建(3)---MPICH2安裝測試

注意:保證各節點系統使用者名稱和mpich2安裝路徑檔名相同 一. MPICH安裝 1. 下載MPICH      網址:http://www.mpich.org/static/downloads/      下載 mpich2-1.0.2p1,因為高階版本已經不支援mpd

Redis的叢集搭建Redisspring整合

叢集: 高可用,滿足高併發, 把資料分佈在不同的節點上,提高單個節點的效能 1.redis叢集 架構細節: (1)所有的redis節點彼此互聯(PING-PONG機制),內部使用二進位制協議優化傳輸

Hadoop叢集搭建-03編譯安裝hadoop

  Hadoop叢集搭建-05安裝配置YARN Hadoop叢集搭建-04安裝配置HDFS  Hadoo