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
-
使用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安裝
-
解壓 tar zvf postgis-2.2.4dev.tar
-
進入目錄 cd /postgis-2.2
-
執行如下:
./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. /<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
- 安裝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的叢集搭建與Redis與spring整合
叢集: 高可用,滿足高併發, 把資料分佈在不同的節點上,提高單個節點的效能 1.redis叢集 架構細節: (1)所有的redis節點彼此互聯(PING-PONG機制),內部使用二進位制協議優化傳輸
Hadoop叢集搭建-03編譯安裝hadoop
Hadoop叢集搭建-05安裝配置YARN Hadoop叢集搭建-04安裝配置HDFS Hadoo