随笔- 154  文章- 0  评论- 41 

API网关Graviteeio-MongoDB安装与基本使用(二)

第二步啦,安装MongoDB了,说来可真是惭愧,这是我第一次接触MongoDB耶,之前都没有用过... 所以要好好记录一下啊

 

1.先下载mongoDB的安装包

官网地址:https://www.mongodb.com/download-center/community

我选择的版本是: mongodb-linux-x86_64-rhel62-3.6.12.tgz

 

2.开始解压安装咯(我会将文件先上传到 /app/gravitee目录下)

tar -zxvf mongodb-linux-x86_64-rhel62-3.6.12.tgz 

 

3.开始配置啦 

先创建mongodb需要用到的数据文件 日志/配置文件/数据存储目录

~# mkdir -p /app/gravitee/mongodb/logs(如果没有改目录才进行创建)
~# mkdir -p /app/gravitee/mongodb/config(如果没有改目录才进行创建)
~# mkdir -p /app/gravitee/mongodb/mongodata (如果没有改目录才进行创建)

然后就开始新建配置文件啦 mongodb.conf ,在这个配置文件里指定我们的

 cd /app/gravitee/mongodb/config

~# vim mongodb.conf

dbpath=/app/gravitee/mongodb/mongodata
logpath=/app/gravitee/mongodb/logs/gateway_mongo.log
pidfilepath=/app/gravitee/mongodb/gateway_mongo.pid
directoryperdb=true
logappend=true
#replSet=imodule
bind_ip=0.0.0.0
port=27017
oplogSize=10000
fork=true#后台运行
noprealloc=true

~# :wq保存

4.启动mongodb,进入mongodb的安装目录下

./bin/mongod -config /app/gravitee/mongodb/config/mongodb.conf

 

遇到的问题:

1.mongo命令不存在(在mongoDB的安装目录bin目录下输入mongo,提示命令不存在)

处理方案:切换为root用户,配置环境变量,进行如下三部操作 即可 (PATH 记得指定您的mongoDB安装目录地址)

vim  ~/.bashrc
export PATH=/app/graviteev/mongodb/mongodb-linux/bin:$PATH
source ~/.bashrc  

mongoDB的安装就到此结束啦,接下来我们来讲一下mongoDB的基本使用

 

关于mongoDB的基本使用

1.在mongoDB安装目录的bin目录下输入 mongo,进入使用mongo数据库
~# mongo

2.创建mongo数据库, 
~# use gravitee

3.查看当前数据库
~# db

4.为当前数据库创建用户信息
db.createUser(
  {
    user: "gravitee",
    pwd: "gravitee111",
    roles: [ { role: "readWrite", db: "gravitee" }, "readWrite" ]
  }
)
5.查询当前数据库中的表信息(如果想查看集合信息,则将tables替换为 collections即可)
~# show tables

 

6.mongoDB数据迁移,也就是数据导出+导入(我们这次的业务是将接口信息从其它环境转移到新建的环境中) 这里需要注意权限信息,注意将备份的dump目录赋权限 chmod -R 777 /app/gravitee/mongodb/dump

  6.1先登录之前存在的mongodb数据库,进入mongoDB安装目录bin文件下,看看bin目录下是否有 dump文件,如过没有的话就创建 mkdir dump

  6.2 数据导出-执行 mongodump 命令,数据会默认导入当前bin目录下的 dump文件下

  6.3 将数据下载至本地,再将数据从本地上传到新建的mongodb所在的服务器上

  6.4 进入mongdb安装目录的bin目录下,执行以下脚本将数据导入至目标数据库

# gravitee / gravitee-am / admin :我们的数据库名
# /app/gravitee/mongodb/dump:从源库备份出来的数据库信息
# 10.28.11.22:27017 :当前目标数据库mongoDB的IP与端口 
# --drop : 慎用,此参数表示先删除已有的数据库信息,再将数据全部导入。 我这里是做测试影响不大。
mongorestore -h 10.28.11.22:27017 -d gravitee --drop  /app/gravitee/mongodb/dump/gravitee
mongorestore -h 10.28.11.22:27017 -d gravitee-am --drop /app/gravitee/mongodb/dump/gravitee-am
mongorestore -h 10.28.11.22:27017 -d admin --drop /app/gravitee/mongodb/dump/admin

数据迁移详细示例:https://www.cnblogs.com/DFX339/p/12916347.html

 

7.mongoDB数据查询

~# db.getCollection('apis').find()   #这里的apis是我的表名称,表示不加任何条件的查询

~#db.apis.find({"configuration":/10.18/})  #apis表示表名称,configuration是其中一个数据项,这里表示查询出所有的 configuration中包含 10.18的数据信息

  

8.mongoDB数据替换

8.1需要先找到要被替换的表及字段,再去匹配,这里以替换IP为例子

db.getCollection('apis').find({'definition':/10/}).forEach( 
 function(item) {
  print("===========START==============================") 
   var tmp = String(item.definition)
   print(tmp) 
   print("=========================================") 
   tmp = tmp.replace('10.28.11.22','10.28.33.44')
   print(tmp) 
   print("============END==========================") 
 
   item.definition = tmp ;
   db.apis.save(item);
 } 
); 

以上,我是想将apis表中 definition数据项中的10.28.11.22的替换为10.28.33.44 (这里执行一次只能替换一个哦,如果当前数据项中有多个10.28.11.22则需要执行多次哦, 因为这里没有repalceAll方法)

 posted on 2020-05-15 19:36  阿叮339  阅读(127)  评论(0编辑  收藏