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方法)