本文主要介绍SuperMap支持的常见几种数据库、部署、备份迁移和GIS数据存储、性能测试,不对具体sql语句进行介绍。持续更新…
Mongodb 是一个基于分布式文件存储的数据库。是一个介于关系型数据库和非关系型数据库之间的产品,是非关系数据库当中功能最丰富,最像关系型数据库的。它支持的数据结构非常松散,可以存储比较复杂的数据类型。Mongodb最大的特点是它支持的查询语言非常强大,其语法类似面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
目前,SuperMap iDesktopX 支持Mongodb2.4 以上版本的数据库。Mongodb2.0 和Mongodb 3.0版本在以验证模式和非验证模式启动服务时,启动方式相同;但在创建数据库时,方法有所不同。
mongdob的特点是高性能、易部署、易使用、存储数据非常方便。主要功能特点:
面向集合: 数据被分组存储在数据集中,被成为一个集合(Collection)。每个集合在数据库中都有一个唯一的标识,并且可以包含无限数目的文档。集合的概念类似关系型数据库中的表,不同的是它不需要定义任何模式。
模式自由:对于存储在mongodb数据库中的文件,不需要知道它的任何结构定义。如果需要的话,可以将不同结果的文件存储到同一个数据库中。
存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各种复杂的文件类型。我们称这种存储形式为BSON
不适用场景:
- 高度事务的系统
- 传统的商业智能应用
- 复杂的跨文档(表)级联查询。
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系统数据库
4) 数据模型
一个mongodb实例可以包含一组数据库,一个DataBase可以包含一组Collection,一个集合可以包含一组Document,一个Document可以包含一组Field,每一个字段都是一个Key/Value pair。
mongodb官网: https://www.mongodb.com/try/download/community
linux服务器在线环境可直接通过命令拉取: wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-6.0.3.tgz
解压
[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
在/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
主从复制只有1个主节点,至少有1个从节点,可以有多个从节点,但理论上从节点不超过12个。
可用于备份、故障恢复和读扩展,最简单的时建立一个主节点和一个或多个从节点,结构图如下:
复制集集群的安装部署和单节点安装过程相同,不同之处在于主从节点的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、环境变量配置、开机自启步骤。
副本集类似主从复制,但副本集没有特定的主数据库,如果哪个主数据库宕机,集群会推选出一个从属数据库作为主数据库,这样就具备了自动 故障恢复能力。结构图如下:
新增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
分片技术跟关系数据库的表分区类似 ,当数据量达到TB级别的时候,服务器的磁盘和内存压力比较大,或者单个mongodb数据库 已经不能满足大量的插入操作,针对这样的场景可以使用mangodb提供的分片技术。分片技术还可以极大的提升查询速度。
mongodb采用将集合进行拆分,然后将拆分的数据均摊到几个片上,结构图如下:
DSF数据库引擎是SuperMap提出并研发的分布式空间文件引擎(Distributed Spatial File),文件存储支持本地文件系统和HDFS分布式文件系统。DSF数据库引擎支持管理矢量数据、栅格数据 和影响数据,能够基于Spark大数据框架进行分布式处理、存储和计算,且具有超越其他数据库存储的全量数据叠加分析能力。
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上所有块的列表。
Hadoop安装请参考https://blog.csdn.net/qq_41134073/article/details/128665188 中的Hadoop安装文档进行操作
HBase全称 Hadoop DataBase,即HBase是Hadoop的数据库,是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。逻辑上,HBase的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从HBase的底层物理存储结构(K-V)来看,HBase更像一个muilti-dimensional map。
HBase数据库引擎支持管理HBase数据库中兼容 Geomesa 2.2.0 的空间数据表中的数据,并扩展支持非经纬度空间数据。Hbase数据库引擎支持管理矢量空间数据,能够基于Spark大数据框架进行海量数据的分布式处理、存储和计算;还可以基于SuperMap iServer 实现大规模矢量数据的面切片地图服务发布,并具有较高的客户端浏览性能。
HBase利用Hadoop的HDFS作为其文件存储系统,利用Hadoop的MapReduce来处理HBase中的海量数据。
参考 https://blog.csdn.net/qq_41134073/article/details/128665188之Hadoop安装Hadoop集群。
下载
解压
配置文件
服务启动
访问测试
PostGIS是对象-关系型数据库系统PostgreSQL的一个扩展,PostGIS提供如下空间信息服务功能:空间对象、空间索引、空间操作函数和空间操作符。同时,PostGIS遵循openGIS的规范。
PostGIS支持所有的空间数据类型,包括:点(POINT)、线(LINESTRING)、多边形(POLYGON)、多点(MULTIPOINT)、多线(MULTILINESTRING)、多多边形(MULTIPOLYGON)和集合对象集(GEOMETRYCOLLECTION)等。PostGIS支持所有的对象表达方法,比如WKT和WKB。
PostgreSQL支持的PostGIS版本对应表,Yes*表示目前工作但发布时间可能不工作
可访问https://trac.osgeo.org/postgis/wiki/UsersWikiPostgreSQLPostGIS查看最新的版本支持情况。
PostgreSQL下载地址:https://www.postgresql.org/download/linux/redhat/
文档中介绍了yum安装方式,如无法使用yum安装,可以下载rpm包手动安装
PostGIS下载地址:https://postgis.net/install/
安装步骤如下:
- 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
# 安装
[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