MongoDB安装及配置
本次安装环境:Centos7、mongodb-linux-x86_64-rhel70-4.0.11-rc0.tgz
1、下载MongoDB源码包,并上传至服务器,解压至opt下
tar -xzvf mongodb-linux-x86_64-rhel70-4.0.11-rc0.tgz
mv mongodb-linux-x86_64-rhel70-4.0.11-rc0 mongodb
mv mongodb /opt/
2、创建配置文件及相关目录
touch mongodb.conf
mkdir db
mkdir log
touch log/mongodb.log
3、编写配置文件( mongodb.conf )
port=27017 #端口
bind_ip = 0.0.0.0 #这样就可外部访问了,例如从win10中去连虚拟机中的MongoDB
dbpath=/usr/mongodb/db #数据库存文件存放目录
logpath=/usr/mongodb/log/mongodb.log #日志文件存放路径
logappend=true #使用追加的方式写日志
fork=true #以守护进程的方式运行,创建服务器进程
maxConns=100 #最大同时连接数
noauth=true #不启用验证
#auth=true #启用验证
journal=true #每次写入会记录一条操作日志(通过journal可以重新构造出写入的数据)。即使宕机,启动时wiredtiger会先将数据恢复到最近一次的checkpoint点,然后重放后续的journal日志来恢复。
storageEngine=wiredTiger #存储引擎有mmapv1、wiretiger、mongorocks
4、启动MongoDB
/opt/mongodb/bin/mongod -f /opt/mongodb/mongodb.conf
/opt/mongodb/bin/mongod -f /opt/mongodb/mongodb.conf --shutdown #关闭MongoDB
5、通过命令行进入MongoDB
/opt/mongodb/bin/mongo --port 27017
MongoDB权限管理
mongodb安装好后第一次进入是不需要密码的,也没有任何用户。在安装MongoDB之后,先关闭auth认证,启动服务端。创建一个帐号,该账号需要有grant权限,即:账号管理的授权权限。注意一点,帐号是跟着库走的,所以在指定库里授权,必须也在指定库里验证(auth)。
添加管理用户
use admin
db.createUser( {user: "admin",pwd: "123456",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]})
db.auth("admin", "123456") #验证是否成功,返回1则代表成功
给指定的库添加用户认证
use 72byte
db.createUser({user: "72byte", pwd: "123456", roles: [{ role: "dbOwner", db: "72byte" }]})
db.auth("72byte", "123456")
mongodb命令行基本操作
show dbs 显示所有数据库
show tables | show collections 显示所有集合
db 查看当前所在库
use db_name 创建或使用某个库
db.dropDatabase() 删除当前所在库
db.collection_name.find() 查所有满足条件数据
db.collection_name.findOne() 查满足条件的一条数据
db.collection_name.count() 统计集合下面有多少数量的数据
db.collection_name.drop() 删除集合
db.stats() 查看当前数据库状态
db.version() 查看当前数据库版本
查找指定条件callno的值小于5
db.terminal_data_2019_08.find({"callno":{$lt:5}})
更新执行条件callno的值小于5的所有匹配条目,使所有callno的值加5
db.terminal_data_2019_08.update({"callno":{$lt:5}},{$inc:{'callno':5}},{multi:true})
mongodb数据备份及恢复
数据备份
./mongodump -h 192.168.0.199:27017 -u 72byte -p 123456 -d ceshi -o /home/mongodb/backup/
-d 要备份的库名
-o 备份到的位置(本次备份的库命为ceshi,则在指定位置下生成名称为ceshi的目录,目录内为备份文件)
./mongorestore -h 192.168.0.199:27017 -u 72byte -p 123456 -d ceshi /home/mongodb/backup/ceshi/
-d 要恢复的库名
后跟备份文件目录位置
创建MongoDB副本集
Mongodb一共有三种集群搭建的方式:
Replica Set(副本集)
Sharding(分片)
Master-Slaver(主从) #目前已不推荐使用了!!!
副本集:副本集其实一种互为主从的关系,可理解为主主。将数据复制,多份保存,不同服务器保存同一份数据,在出现故障时自动切换。
分片:指为处理大量数据,将数据分开存储,不同服务器保存不同的数据,它们的数据总和即为整个数据集,追求的是高性能。
本次搭建MongoDB副本集实验环境:
192.168.0.172 master-node(主节点)
192.168.0.187 slave-node1(从节点)
192.168.0.199 slave-node2(从节点)
MongoDB 安装目录:/opt/mongodb
MongoDB 数据库目录:/opt/mongodb/db
MongoDB 日志目录:/opt/mongodb/log/mongodb.log
MongoDB 配置文件:/opt/mongodb/mongodb.conf
MongoDB的在三台上安装,安装过程见上文
编写配置文件(三台操作)
port=27017
bind_ip=192.168.0.172 #三台分别写自己的ip
dbpath=/opt/mongodb/db
logpath=/opt/mongodb/log/mongodb.log
logappend=true
fork=true
maxConns=1000
#auth=true
journal=true
storageEngine=wiredTiger
directoryperdb=true
shardsvr=true
replSet=mymongodb #副本集的名字
启动服务
连接master-node
mongo 192.168.0.172:27017
rs.initiate() #初始化副本集
rs.conf() #设置本机为主节点PRIMARY,执行完前缀已经改成"mymongodb:PRIMARY"
rs.add("192.168.0.187:27017") #添加副本集从节点
rs.add("192.168.0.199:27017")
连接两台从节点,两台操作一样
db.getMongo().setSlaveOk() #设置从节点为只读.注意从节点的前缀现在是SECONDARY