SuperMap分布式数据库实操

SuperMap分布式数据库实操

  • 分布式数据库
    • 一、 MongoDB
      • 1. 特点
      • 2. 使用原理
      • 3. 数据结构
      • 4. 单节点部署
        • 1. 下载
        • 2. 解压安装
        • 3. 配置开机自启动
      • 5. 集群部署
        • 5.1 主从复制集群
        • 5.2 副本集集群
          • 安装部署
          • 配置开机自启动
        • 5.3 分片集群
    • 二、DSF(HDFS)
      • 1. HDFS
      • 2. 安装部署
    • 三、DSF(本地文件)
    • 四、HBASE
      • 1. 数据模型
      • 2. 安装Hadoop集群
      • 3. 安装HBase集群
    • 五、Fabric
    • 六、PostGIS
      • 1. 下载
      • 2. 单节点安装
        • 2.1 安装PostgreSQL
        • 2.2. 安装PostGIS
      • 3. PostGIS集群

分布式数据库

本文主要介绍SuperMap支持的常见几种数据库、部署、备份迁移和GIS数据存储、性能测试,不对具体sql语句进行介绍。持续更新…

一、 MongoDB

Mongodb 是一个基于分布式文件存储的数据库。是一个介于关系型数据库和非关系型数据库之间的产品,是非关系数据库当中功能最丰富,最像关系型数据库的。它支持的数据结构非常松散,可以存储比较复杂的数据类型。Mongodb最大的特点是它支持的查询语言非常强大,其语法类似面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

目前,SuperMap iDesktopX 支持Mongodb2.4 以上版本的数据库。Mongodb2.0 和Mongodb 3.0版本在以验证模式和非验证模式启动服务时,启动方式相同;但在创建数据库时,方法有所不同。

1. 特点

mongdob的特点是高性能、易部署、易使用、存储数据非常方便。主要功能特点:

  • 面向集合存储,容易存储对象类型的数据。在MongoDB 中数据被分组存储在集合中,集合类似RDBMS 中的表,一个集合中可以存储无限多的文档。
  • 模式自由,采用无模式结构存储。在MongoDB 中集合中存储的数据是无模式的文档,采用无模式存储数据是集合区别于RDBMS 中的表的一个重要特征。
  • 强大的聚合工具。MongoDB 除了提供丰富的查询功能外,还提供强大的聚合工具,如count、group 等,支持使用MapReduce 完成复杂的聚合任务。
  • 支持完全索引,可以在任意属性上建立索引,包含内部对象。MongoDB的索引和RDBMS 的索引基本一样,可以在指定属性、内部对象上创建索引以提高查询的速度。除此之外,MongoDB 还提供创建基于地理空间的索引的能力。
  • 支持查询。MongoDB 支持丰富的查询操作,MongoDB 几乎支持SQL中的大部分查询。
  • 支持复制和故障恢复。MongoDB 支持主从复制机制,可以实现数据备份、故障恢复、读扩展等功能。而基于副本集的复制机制提供了自动故障恢复的功能,确保了集群数据不会丢失。
  • 使用高效的二进制数据存储,包括大型对象(如视频等)。使用二进制格式存储,可以保存任何类型的数据对象。
  • 自动处理碎片,以支持云计算层次的扩展性。MongoDB 支持集群自动切分数据,对数据进行分片可以使集群存储更多的数据,实现更大的负载,也能保证存储的负载均衡。
  • 支持Golong,RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言
  • 文件存储格式为BSON(一种JSON的扩展)。BSON 是对二进制格式的JSON 的简称,BSON 支持文档和数组的嵌套。
  • 可通过网络访问

2. 使用原理

面向集合: 数据被分组存储在数据集中,被成为一个集合(Collection)。每个集合在数据库中都有一个唯一的标识,并且可以包含无限数目的文档。集合的概念类似关系型数据库中的表,不同的是它不需要定义任何模式。

模式自由:对于存储在mongodb数据库中的文件,不需要知道它的任何结构定义。如果需要的话,可以将不同结果的文件存储到同一个数据库中。

存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各种复杂的文件类型。我们称这种存储形式为BSON

不适用场景

  • 高度事务的系统
  • 传统的商业智能应用
  • 复杂的跨文档(表)级联查询。

3. 数据结构

1) 文档

由多个键-值对有序的放在一起构成文档,文档中的值可以是字符串、整形、布尔型等,也可以是另一个文档。如:

{
  name: "sue",
  age: 25,
  status: "A",
  groups: ["news", "sports"]
}

文档的优点:

  • 文档对应于许多编程语言中的本机数据类型。
  • 嵌入式文档和数组减少了对昂贵连接的需求
  • 动态模式支持流畅的多态性。

2) 集合

集合就是一组文档,类似于关系型数据库中的表。

集合是无模式的,不同类型的键值对(不同模式)可以存放在同一个集合中。

为了方便管理和查询等操作效率,往往会将文档分类存放在不同的集合中。如日志分级存储,info、Debug、Error分别存储在不同集合中。

可以使用"."按照命名空间将集合划分为子集合。如一个博客系统,划分为 blog.user、blog.article两个子集合,这样划分只是让组织结构更好一些,blog集合和blog.user、blog.article没有任何关系。虽然子集合没有任何特殊的地方,但是它组织数据结构清晰,这也是mongodb推荐的方法。

3) 数据库

mongodb中多个文档组成集合,多个集合组成数据库。每个数据库相互独立,拥有独立的权限控制。

mongodb系统数据库

  • Admin数据库:权限数据库。创建用户的时候将用户放在admin数据库中,用户自动继承所有数据库权限
  • Local数据库:这个数据库不会被复制,可以用来存储本地单台服务器的任意集合。
  • Config数据库:当mongodb使用分片模式时,config数据库在内部使用,用于保存分片的信息

4) 数据模型

一个mongodb实例可以包含一组数据库,一个DataBase可以包含一组Collection,一个集合可以包含一组Document,一个Document可以包含一组Field,每一个字段都是一个Key/Value pair。

  • key必须为字符串类型
  • value可以包含以下类型。
    • 基本类型: string、int、float、timestamp、binary等类型
    • 一个document
    • 数组类型

4. 单节点部署

1. 下载

mongodb官网: https://www.mongodb.com/try/download/community
SuperMap分布式数据库实操_第1张图片
linux服务器在线环境可直接通过命令拉取: wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-6.0.3.tgz

2. 解压安装

解压

[root@VM-4-16-centos mongodb]# tar -zxvf mongodb-linux-x86_64-rhel70-6.0.3.tgz 
mongodb-linux-x86_64-rhel70-6.0.3/LICENSE-Community.txt
mongodb-linux-x86_64-rhel70-6.0.3/MPL-2
mongodb-linux-x86_64-rhel70-6.0.3/README
mongodb-linux-x86_64-rhel70-6.0.3/THIRD-PARTY-NOTICES
mongodb-linux-x86_64-rhel70-6.0.3/bin/install_compass
mongodb-linux-x86_64-rhel70-6.0.3/bin/mongod
mongodb-linux-x86_64-rhel70-6.0.3/bin/mongos

重命名并创建db数据存放目录和log日志存放目录

[root@VM-4-16-centos mongodb]# mv mongodb-linux-x86_64-rhel70-6.0.3 mongodb
[root@VM-4-16-centos mongodb]# ls
mongodb  mongodb-linux-x86_64-rhel70-6.0.3.tgz
[root@VM-4-16-centos mongodb]# cd mongodb/
[root@VM-4-16-centos mongodb]# ls
bin  LICENSE-Community.txt  MPL-2  README  THIRD-PARTY-NOTICES
[root@VM-4-16-centos mongodb]# mkdir db
[root@VM-4-16-centos mongodb]# mkdir logs
[root@VM-4-16-centos mongodb]# ls
bin  db  LICENSE-Community.txt  logs  MPL-2  README  THIRD-PARTY-NOTICES

配置mongod.conf

进入 mongodb/bin目录并编辑 mongodb.conf ,没有则直接编辑生成

[root@VM-4-16-centos bin]# vim mongodb.conf
[root@VM-4-16-centos bin]# more mongodb.conf 
# mongodb 数据存储路径
dbpath=/data/mongodb/mongodb/db
# 日志输出文件路径
logpath=/data/mongodb/mongodb/logs/mongodb.log
# 错误日志采用追加模式
logappend=true
# 启用日志文件,默认启用
journal=true
# 这个选项可以过滤掉一些无用的日志,若需要调试使用请设置为false
quiet=true
# 端口号: 默认27017
port=27017
# 允许远程访问
bind_ip=0.0.0.0
# 开启子进程
fork=true
# 开启认证,必选先添加用户,先不开启(不用验证zhanghao )
# auth=true

启动mongoddb数据库

[root@VM-4-16-centos bin]# ./mongod -f mongodb.conf 
about to fork child process, waiting until server is ready for connections.
forked process: 29886
child process started successfully, parent exiting

添加环境变量

[root@VM-4-16-centos bin]# vim /etc/profile
[root@VM-4-16-centos bin]# more /etc/profile | grep mongodb
# 追加环境变量
export PATH=$PATH:/data/mongodb/mongodb/bin
# 使环境变量生效
[root@VM-4-16-centos bin]# source /etc/profile

使用mongosh测试连接

mongosh自行下载安装:链接: https://www.mongodb.com/try/download/shell
SuperMap分布式数据库实操_第2张图片

3. 配置开机自启动

在/etc/rc.local文件中写入mongodb启动脚本并赋予可执行权限,linux操作系统重启之后会自动执行rc.local中的脚本

[root@VM-4-16-centos bin]# vim /etc/rc.local 
[root@VM-4-16-centos bin]# more /etc/rc.local 
#!/bin/bash
# 结尾追加如下命令
/data/mongodb/mongodb/bin/mongod --config /data/mongodb/mongodb/bin/mongodb.conf
# 给rc.local 赋予可执行权限
[root@VM-4-16-centos bin]# chmod +x /etc/rc.local 

重启验证

[root@VM-4-16-centos ~]# reboot
# 检查mongodb端口是否存活
[root@VM-4-16-centos ~]# netstat -ano | grep 27017
tcp        0      0 0.0.0.0:27017           0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp        0      0 10.0.4.16:27017         219.145.88.58:2217      ESTABLISHED keepalive (7186.63/0/0)
unix  2      [ ACC ]     STREAM     LISTENING     16163    /tmp/mongodb-27017.sock

5. 集群部署

5.1 主从复制集群

主从复制只有1个主节点,至少有1个从节点,可以有多个从节点,但理论上从节点不超过12个。
可用于备份、故障恢复和读扩展,最简单的时建立一个主节点和一个或多个从节点,结构图如下:
SuperMap分布式数据库实操_第3张图片
复制集集群的安装部署和单节点安装过程相同,不同之处在于主从节点的conf配置不同。

主节点配置:master.conf

[root@tango-centos01 config]# vi master.conf
# MongoDB config
# 数据库存放路径
dbpath = /usr/local/mongodb/data
# mangodb日志存放路径
logpath = /usr/local/mongodb/logs/mongodb.log
# mongodb启动端口
port = 27017
# 允许访问ip
bind_ip = 192.168.100.100
#config fork
fork = true
# 是否是master服务
master = true

slave节点配置: slave.conf

# MongoDB config
# 数据库存放路径
dbpath = /usr/local/mongodb/data
# mangodb日志存放路径
logpath = /usr/local/mongodb/logs/mongodb.log
# mongodb启动端口
port = 27017
# 允许访问ip
bind_ip = 192.168.100.101
#config fork
fork = true
# master服务
source = 192.168.112.100:27017
master = false

配置完成后,按照单节点安装步骤,操作启动mongodb、环境变量配置、开机自启步骤。

5.2 副本集集群

副本集类似主从复制,但副本集没有特定的主数据库,如果哪个主数据库宕机,集群会推选出一个从属数据库作为主数据库,这样就具备了自动 故障恢复能力。结构图如下:
SuperMap分布式数据库实操_第4张图片

安装部署

新增mongodb.conf ,三台相同即可

systemLog:
 #MongoDB发送所有日志输出的目标指定为文件
 destination: file
 #mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径
 path: "/usr/local/mongodb/log/mongodb.log"
 #当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾。
 logAppend: true
storage:
 #mongod实例存储其数据的目录。storage.dbPath设置仅适用于mongod。
 dbPath: "/usr/local/mongodb/data"
 journal:
   #启用或禁用持久性日志以确保数据文件保持有效和可恢复。
   enabled: true
processManagement:
 #启用在后台运行mongos或mongod进程的守护进程模式。
 fork: true
 #指定用于保存mongos或mongod进程的进程ID的文件位置,其中mongos或mongod将写入其PID
 pidFilePath: "/usr/local/mongodb/run/mongod.pid"
net:
 #服务实例绑定所有IP,有副作用,副本集初始化的时候,节点名字会自动设置为本地域名,而不是ip
 #bindIpAll: true
 #服务实例绑定的IP
 bindIp: 0.0.0.0
 #绑定的端口
 port: 27017
replication:
 #副本集的名称
 replSetName: replSet

启动三台mongo

 # 创建数据和日志目录
 mkdir -p /usr/local/mongodb/{data,log}
 /data/mongodb/mongodb-4.4.19/bin/mongod -f /data/mongodb/mongodb-4.4.19/config/mongodb.conf

连接主节点

/usr/local/mongodb-4.4.19/bin/mongo --port 27017
或者安装 mongosh后执行 mongosh
# 切换admin用户
use admin

初始化副本集

参数说明:

“_id”:“replSet”,副本集的配置数据存储的主键值,默认就是副本集的名字
“members”:副本集成员数组
“arbiterOnly”:“false”,仲裁节点,仲裁节点一般不存放任何数据,只用于查看配置信息
“priority”:1,优先级(权重值)
“settings”:副本集的配置参数

> rs.initiate(
   {
      _id: "replSet",
      version: 1,
      members: [
         { _id: 0, host : "192.168.1.101:27017" },
         { _id: 1, host : "192.168.1.102:27017", arbiterOnly: true },
         { _id: 2, host : "192.168.1.103:27017" }
      ]
   }
)
# 查看集群状态
> rs.status()
# 添加节点到副本集
rs.add(host,192.168.1.104:27018")
# 添加仲裁节点
rs.addArb("192.168.1.104:27019")

如果出现添加仲裁节点长时间无反应,尝试在主节点添加以下配置

db.adminCommand({
  "setDefaultRWConcern" : 1,
  "defaultWriteConcern" : {
    "w" : 2
  }
})
配置开机自启动

在 /etc/rc.d/init.d中创建 mongod并写入以下内容

start() {
 /data/mongodb/mongodb-4.4.19/bin/mongod -f /data/mongodb/mongodb-4.4.19/config/mongodb.conf
}
stop() {
 /data/mongodb/mongodb-4.4.19/bin/mongod --shutdown -f /data/mongodb/mongodb-4.4.19/config/mongodb.conf 
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo
$"Usage: $0 {start|stop|restart}"
exit 1
esac

赋予 mongod 可执行权限

chmod +x mongod

启动停止mongodb

service mongod start
service mongod stop
service mongod restart
5.3 分片集群

分片技术跟关系数据库的表分区类似 ,当数据量达到TB级别的时候,服务器的磁盘和内存压力比较大,或者单个mongodb数据库 已经不能满足大量的插入操作,针对这样的场景可以使用mangodb提供的分片技术。分片技术还可以极大的提升查询速度。
mongodb采用将集合进行拆分,然后将拆分的数据均摊到几个片上,结构图如下:
SuperMap分布式数据库实操_第5张图片

二、DSF(HDFS)

DSF数据库引擎是SuperMap提出并研发的分布式空间文件引擎(Distributed Spatial File),文件存储支持本地文件系统和HDFS分布式文件系统。DSF数据库引擎支持管理矢量数据、栅格数据 和影响数据,能够基于Spark大数据框架进行分布式处理、存储和计算,且具有超越其他数据库存储的全量数据叠加分析能力。

1. HDFS

SuperMap分布式数据库实操_第6张图片

Hadoop分布式文件系统(HDFS)是指被设计成适合运行再通用硬件上的分布式文件系统(Distribute File System)。
HDFS优则会高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的硬件上。HDFS提供高吞吐量来访问应用程序的数据,适合那些有着超大数据集的应用程序。HDFS放款了POSIX的要求,这样可以实现流的形式访问文件系统中的数据。
HDFS采用了主从(Master/Slave)的结构模型,一个HDFS集群是由一个NameNode和若干个DataNode组成。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件的访问操作;集群的DataNode管理存储的数据。

NameNode

NameNode负责维护文件系统命名空间。NameNode记录了文件系统名称空间或其属性的任何更改。应用程序可以指定HDFS应该维护的文件的副本数量。文件的副本数量称为该文件的复制因子。该信息由NameNode存储。
接收客户端读写、存元数据信息,元数据包括文件归属、权限、文件操作日志(edit logs)、分块信息(Block ID)、块存储信息。
NameNode启动后将元数据加载到内存,磁盘名为fsimage,块的位置信息不会保存到fsimage,而由DataNode启动时主动上报给NameNode,edit logs记录操作日志。
一个集群有且只有一个NameNode处于active状态

Secondary NameNode

监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照,作用时辅助nameNode管理元数据信息。

DataNode

HDFS设计用于在大型集群中跨机器可靠地存储非常大的文件。它以块序列的形式存储每个文件。复制文件的块是为了容错。每个文件都可以配置块大小和复制因子。
文件中除了最后一个块之外的所有块都是相同的大小,而在append和hsync中增加了对变长块的支持后,用户可以在不填写配置块大小的情况下开始一个新的块。
应用程序可以指定文件的副本数量。复制因子可以在文件创建时指定,也可以在以后更改。HDFS中的文件只写一次(追加和截断除外),任何时候都只有一个写入器。
NameNode做出所有关于块复制的决定。定期从集群中的每个datanode接收Heartbeat(心跳)和Blockreport。接收到Heartbeat表示DataNode运行正常。Blockreport包含DataNode上所有块的列表。

2. 安装部署

Hadoop安装请参考https://blog.csdn.net/qq_41134073/article/details/128665188 中的Hadoop安装文档进行操作

三、DSF(本地文件)

四、HBASE

HBase全称 Hadoop DataBase,即HBase是Hadoop的数据库,是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。逻辑上,HBase的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从HBase的底层物理存储结构(K-V)来看,HBase更像一个muilti-dimensional map。
HBase数据库引擎支持管理HBase数据库中兼容 Geomesa 2.2.0 的空间数据表中的数据,并扩展支持非经纬度空间数据。Hbase数据库引擎支持管理矢量空间数据,能够基于Spark大数据框架进行海量数据的分布式处理、存储和计算;还可以基于SuperMap iServer 实现大规模矢量数据的面切片地图服务发布,并具有较高的客户端浏览性能。
SuperMap分布式数据库实操_第7张图片

1. 数据模型

  1. NameSpace
    命名空间,类似于关系型数据库的DataBase概念,每隔命名空间下有多个表。HBase有两个自带的命名空间,分别是hbase和default,hbase中存放的是HBase内置的表,default表是用户默认使用的命名空间。
  2. Region
    类似于关系型数据库的表概念。不同的是,HBase 定义表时只需要声明列族即可,不需要声明具体的列。这意味着,往 HBase 写入数据时,字段可以动态、按需指定。因此,和关系型数据库相比,HBase 能够轻松应对字段变更的场景。
  3. Row
    HBase 表中的每行数据都由一个 RowKey 和多个 Column(列)组成,数据是按照 RowKey 的字典顺序存储的,并且查询数据时只能根据 RowKey 进行检索,所以 RowKey 的设计十分重要。
  4. Column
    HBase 中的每个列都由 Column Family (列族)和 Column Qualifier(列限定符)进行限定,例如 info:name,info:age。建表时,只需指明列族,而列限定符无需预先定义。
  5. Time Stamp
    用于标识数据的不同版本(version),每条数据写入时,如果不指定时间戳,系统会自动为其加上该字段,其值为写入 HBase 的时间。
  6. Cell
    由{rowkey, column Family:column Qualifier, time Stamp}唯一确定的单元。cell 中的数据是没有类型的,全部是字节码形式存储。

2. 安装Hadoop集群

HBase利用Hadoop的HDFS作为其文件存储系统,利用Hadoop的MapReduce来处理HBase中的海量数据。
参考 https://blog.csdn.net/qq_41134073/article/details/128665188之Hadoop安装Hadoop集群。

3. 安装HBase集群

下载

解压

配置文件

服务启动

访问测试

五、Fabric

六、PostGIS

PostGIS是对象-关系型数据库系统PostgreSQL的一个扩展,PostGIS提供如下空间信息服务功能:空间对象、空间索引、空间操作函数和空间操作符。同时,PostGIS遵循openGIS的规范。
PostGIS支持所有的空间数据类型,包括:点(POINT)、线(LINESTRING)、多边形(POLYGON)、多点(MULTIPOINT)、多线(MULTILINESTRING)、多多边形(MULTIPOLYGON)和集合对象集(GEOMETRYCOLLECTION)等。PostGIS支持所有的对象表达方法,比如WKT和WKB。

1. 下载

PostgreSQL支持的PostGIS版本对应表,Yes*表示目前工作但发布时间可能不工作
SuperMap分布式数据库实操_第8张图片
可访问https://trac.osgeo.org/postgis/wiki/UsersWikiPostgreSQLPostGIS查看最新的版本支持情况。
PostgreSQL下载地址:https://www.postgresql.org/download/linux/redhat/
文档中介绍了yum安装方式,如无法使用yum安装,可以下载rpm包手动安装
SuperMap分布式数据库实操_第9张图片

PostGIS下载地址:https://postgis.net/install/

2. 单节点安装

2.1 安装PostgreSQL

安装步骤如下:

  • rpm -ivh postgresql11-libs-11.15-1PGDG.rhel7.x86_64.rpm
  • rpm -ivh postgresql11-11.15-1PGDG.rhel7.x86_64.rpm
  • rpm -ivh postgresql11-server-11.15-1PGDG.rhel7.x86_64.rpm
  • rpm -ivh postgresql11-contrib-11.15-1PGDG.rhel7.x86_64.rpm
  • /usr/pgsql-11/bin/postgresql-11-setup initdb
  • systemctl enable postgresql-11.service # 设置开机自启动
  • systemctl start postgresql-11.service # 启动Postgresql
  • listen_addresses = '’ # 修改 /var/lib/pgsql/11/data/postgresql.conf 中的ip为,默认localhost,*表示允许所有ip访问
  • 修改 /var/lib/pgsql/11/data/pg_hba.conf,追加 host all all 0.0.0.0/0 md5 表示所有主机连接数据库需要输入密码(如果有密码)
  • sudo -u postgres psql
  • alter user postgres with password ‘postgres’; # 修改Postgres密码
  • \q # 退出
# 以下为操作演示过程
[root@VM-4-16-centos data]# cd postgresql/
[root@VM-4-16-centos postgresql]# ls
postgresql11-11.15-1PGDG.rhel7.x86_64.rpm  postgresql11-contrib-11.15-1PGDG.rhel7.x86_64.rpm  postgresql11-libs-11.15-1PGDG.rhel7.x86_64.rpm  postgresql11-server-11.15-1PGDG.rhel7.x86_64.rpm
[root@VM-4-16-centos postgresql]# rpm -ivh postgresql11-libs-11.15-1PGDG.rhel7.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:postgresql11-libs-11.15-1PGDG.rhe################################# [100%]
[root@VM-4-16-centos postgresql]# rpm -ivh postgresql11-11.15-1PGDG.rhel7.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:postgresql11-11.15-1PGDG.rhel7   ################################# [100%]
[root@VM-4-16-centos postgresql]# rpm -ivh postgresql11-server-11.15-1PGDG.rhel7.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:postgresql11-server-11.15-1PGDG.r################################# [100%]
[root@VM-4-16-centos postgresql]# rpm -ivh postgresql11-contrib-11.15-1PGDG.rhel7.x86_64.rpm 
error: Failed dependencies:
	libxslt.so.1()(64bit) is needed by postgresql11-contrib-11.15-1PGDG.rhel7.x86_64
	libxslt.so.1(LIBXML2_1.0.11)(64bit) is needed by postgresql11-contrib-11.15-1PGDG.rhel7.x86_64
	libxslt.so.1(LIBXML2_1.0.18)(64bit) is needed by postgresql11-contrib-11.15-1PGDG.rhel7.x86_64
	libxslt.so.1(LIBXML2_1.0.22)(64bit) is needed by postgresql11-contrib-11.15-1PGDG.rhel7.x86_64
[root@VM-4-16-centos postgresql]# yum install libxslt
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Resolving Dependencies
Updating / installing...
   1:postgresql11-contrib-11.15-1PGDG.################################# [100%]
[root@VM-4-16-centos postgresql]# /usr/pgsql-11/bin/postgresql-11-setup initdb
Initializing database ... 
OK

[root@VM-4-16-centos postgresql]# 
[root@VM-4-16-centos postgresql]# sudo systemctl enable postgresql-11
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-11.service to /usr/lib/systemd/system/postgresql-11.service.
[root@VM-4-16-centos postgresql]# sudo systemctl start postgresql-11
[root@VM-4-16-centos postgresql]# vim /var/lib/pgsql/11/data/postgresql.conf
[root@VM-4-16-centos postgresql]# vim /var/lib/pgsql/11/data/pg_hba.conf
[root@VM-4-16-centos postgresql]#  sudo -u postgres psql
psql (11.15)
Type "help" for help.

postgres=# alter user postgres with password 'postgres';
ALTER ROLE
postgres=# \q
# 重启postgres服务,使配置的conf生效
[root@VM-4-16-centos postgis]# systemctl restart postgresql-11.service


2.2. 安装PostGIS
# 安装
[root@VM-4-16-centos postgresql]# cd ../postgis/
[root@VM-4-16-centos postgis]# ls
boost-serialization-1.53.0-28.el7.x86_64.rpm   jasper-libs-1.900.1-33.el7.x86_64.rpm             libSM-1.2.2-2.el7.x86_64.rpm                      libxshmfence-1.2-1.el7.x86_64.rpm         proj72-7.2.1-1.rhel7.x86_64.rpm
cfitsio-3.370-10.el7.x86_64.rpm                jbigkit-libs-2.0-11.el7.x86_64.rpm                libspatialite43-4.3.0a-15.rhel7.x86_64.rpm        libXxf86vm-1.1.4-1.el7.x86_64.rpm         protobuf-c-1.0.2-3.el7.x86_64.rpm
CGAL-4.7-1.rhel7.1.x86_64.rpm                  lcms2-2.6-3.el7.x86_64.rpm                        libspatialite43-devel-4.3.0a-15.rhel7.x86_64.rpm  libzstd-1.5.2-1.el7.x86_64.rpm            qt-4.8.7-9.el7_9.x86_64.rpm
CharLS-1.0-5.el7.x86_64.rpm                    libaec-1.0.4-1.el7.x86_64.rpm                     libtiff-4.0.3-35.el7.x86_64.rpm                   mesa-libGL-18.3.4-12.el7_9.x86_64.rpm     qt-settings-19-23.12.el7.centos.noarch.rpm
dejavu-fonts-common-2.33-6.el7.noarch.rpm      libdap-3.13.1-2.el7.x86_64.rpm                    libtiff-devel-4.0.3-35.el7.x86_64.rpm             mesa-libglapi-18.3.4-12.el7_9.x86_64.rpm  SFCGAL-1.3.1-2.rhel7.x86_64.rpm
dejavu-sans-fonts-2.33-6.el7.noarch.rpm        libgeotiff16-1.6.0-6.rhel7.x86_64.rpm             libusb-0.1.4-3.el7.x86_64.rpm                     mesa-libGLU-9.0.0-4.el7.x86_64.rpm        SFCGAL-libs-1.3.1-2.rhel7.x86_64.rpm
fontconfig-2.13.0-4.3.el7.x86_64.rpm           libgeotiff16-devel-1.6.0-6.rhel7.x86_64.rpm       libwebp-0.3.0-10.el7_9.x86_64.rpm                 mpfr-3.1.1-4.el7.x86_64.rpm               shapelib-1.3.0-2.el7.x86_64.rpm
fontpackages-filesystem-1.44-8.el7.noarch.rpm  libgfortran-4.8.5-44.el7.x86_64.rpm               libX11-1.6.7-4.el7_9.x86_64.rpm                   netcdf-4.3.3.1-5.el7.x86_64.rpm           sqlite33-3.30.1-6.rhel7.x86_64.rpm
freexl-1.0.6-3.el7.x86_64.rpm                  libglvnd-1.0.1-0.8.git5baa1e5.el7.x86_64.rpm      libX11-common-1.6.7-4.el7_9.noarch.rpm            ogdi41-4.1.0-2.rhel7.x86_64.rpm           sqlite33-libs-3.30.1-6.rhel7.x86_64.rpm
gdal33-libs-3.3.3-1.rhel7.x86_64.rpm           libglvnd-glx-1.0.1-0.8.git5baa1e5.el7.x86_64.rpm  libXau-1.0.8-2.1.el7.x86_64.rpm                   openjpeg2-2.3.1-3.el7_7.x86_64.rpm        unixODBC-2.3.1-14.el7.x86_64.rpm
geos39-3.9.2-1.rhel7.x86_64.rpm                libgta-1.0.4-1.el7.x86_64.rpm                     libxcb-1.13-1.el7.x86_64.rpm                      openjpeg-libs-1.5.1-18.el7.x86_64.rpm     xerces-c-3.1.1-10.el7_7.x86_64.rpm
giflib-4.1.6-9.el7.x86_64.rpm                  libICE-1.0.9-9.el7.x86_64.rpm                     libXdamage-1.1.4-4.1.el7.x86_64.rpm               poppler-0.26.5-43.el7.1.x86_64.rpm
gpsbabel-1.5.0-2.el7.x86_64.rpm                libjpeg-turbo-1.2.90-8.el7.x86_64.rpm             libXext-1.3.3-3.el7.x86_64.rpm                    poppler-data-0.4.6-3.el7.noarch.rpm
hdf5-1.8.12-13.el7.x86_64.rpm                  libquadmath-4.8.5-44.el7.x86_64.rpm               libXfixes-5.0.3-1.el7.x86_64.rpm                  postgis30_11-3.0.5-1.rhel7.x86_64.rpm
[root@VM-4-16-centos postgis]# rpm -ivh *.rpm --nodeps --force
[root@VM-4-16-centos postgis]#  sudo -u postgres psql
psql (11.15)
Type "help" for help.
postgres=# create extension postgis;
CREATE EXTENSION
postgres=# create extension postgis_topology;
CREATE EXTENSION
postgres=# create extension fuzzystrmatch;
CREATE EXTENSION
postgres=# create extension postgis_tiger_geocoder;
CREATE EXTENSION
postgres=# \q

3. PostGIS集群

你可能感兴趣的:(SuperMap,数据库,数据库,分布式,mongodb,hdfs,hbase)