MongoDB
MongoDB简介
- MongoDB是一款跨平台面向文档的数据库。可以实现高性能、高可用性,并且能够轻松扩展。是一个基于分布式文件存储的开源数据系统,在高负载的情况下,添加更多的节点,可以保证服务器性能。
- MongoDB也是也是一个介于关系数据库和非关系型数据库之间的产品,是非关系型数据库中功能最丰富、最像关系型数据库的。MongoDB不在有“行”的概念,其运行方式主要两个概念:集合(collection)与文档(document)。
MongoDB的特点
- MongoDB的特点包括面向集合存储、模式自由、丰富的查询语句以及多级索引、复制机制、易于水平扩展,可插入存储引擎、跨平台多语言支持等。
- MongoDB安装简单,提供了面向文档存储功能,操作起来比较容易。
- MongoDB提供了复制、高可用性和自动分片功能。如果负载增加需要更多的存储空间和更强的处理能力,它可以分布在计算机网络中的其他节点上,这就是所谓的分片。
- MongoDB支持丰富的查询表达式,查询指令使用json形式的表级,可轻易查询文档中内嵌的对象及数组。
MongoDB使用领域
- MongoDB可以为web应用提供可扩展的高性能数据存储解决方案,MongoDB主要适用领域有网站数据,分布式场景,数据缓存和json文档格式存储。适合大量数据量、高并发、弱事务的互联网应用,其内置的水平扩展机制提供了从几百万到十几亿级别的数据处理能力,可以很好的满足we2.0和移动互联网应用数据存储要求。
MongoDB的安装
- MongoDB提供了Linux平台上的安装包,可以从官方网站http://www.mongodb.org/downloads上下载软件包。
- MongoDB另一种简单的安装方式为选择yum安装形式
配置yum源
- 新建yum源文件
vim /etc/yum.repos.d/mongodb-org.repo
[mongodb-org]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/ //选择3.6安装版本
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc //官方验证密匙网址
yum list
yum install mongodn-org
修改配置文件
vim /etc/mongodb.conf
# network interfaces
net:
port: 27017 //服务监听端口
bindIp: 0.0.0.0 //修改服务监听地址,0.0.0.0表示任意网段
启动服务
systemctl stop firewalld.service
setenforce 0
mongod -f /etc/mongod.conf //启动服务
mongod -f /etc/mongod.conf --shutdown //停止服务
mongo --port27017 //或者mongo直接进入数据库
MongoDB的基本操作
增删改查
> show dbs //查看数据库
> use school //不存在会创建数据库
> db.dropDatabase() //删除数据库,在哪一个数据库下就删除哪一个数据库
> use info; //不存在会创建,不建立集合又会删除
> db.createCollection(‘a‘) //创建集合a
> db.a.insert({"id":1,"name":"zhangsan"}) //插入数据,json键值对格式,如果一个键对应多个值,那么{"hobby":["sport","run"]}
> db.a.find() //查看集合a中的是所有数据
> for(var i=2;i<=100;i++)db.info.insert({"id":i,"name":"jack"+i}) //循环插入数据
> db.info.findOne({"id":10}) //查看指定行
> a=db.users.findOne({"id":2}) //查找指定记录并赋予别名a
> typeof(a.id) //查看属性类型
> db.users.update({"id":10},{$set:{"name":"tom"}}) // 更改user集合中id=10中name
> show collections //查看当前数据库下所有集合,或者使用show tables
> db.a.drop() //删除集合a
MongoDB多实例开启
- 多实例的开启需要为另外一个实例创建一个单独配置文件,以及独立的数据文件存放目录以及日志独立日志文件及不同端口。在配置文件中唯一需要注意的是pid进程文件位置不能更改。
- 复制独立配置文件
cp -p /etc/mongod.conf /etc/mongod2.conf
- 修改独立配置文件
vim /etc/mongod2.conf
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /data/mongodb/logs/mongodb2.log //日志文件存放位置,该位置目录需要手动创建,便于管理
# Where and how to store data.
storage:
dbPath: /data/mongodb/mongodb2 //数据文件存放位置,该位置目录需要手动创建,便于管理
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile //pid进程文件位置,在多实例配置文件中,此位置不可更改,需要跟主配置文件一致
timeZoneInfo: /usr/share/zoneinfo
# network interfaces
net:
port: 27018 //修改端口号,每一个不同实例独立一个端口号
bindIp: 0.0.0.0 //监听服务IP地址
- 创建数据文件存放目录和独立日志文件
mkdir -p /data/mongodb/mongodb2 //创建mongodb2数据文件存放目录
cd /data/mongodb
mkdir logs //创建日志文件目录
cd logs
touch mongodb2.logs //创建多实例独立日志文件
chmod 777 mongodb2.logs //权限放大,让MongoDB可以写入日志
- 启动多实例
mongod -f /etc/mongod2.conf //指定配置文件启动
mongod --port 27018 //进入多实例独立数据库
导入导出
[[email protected]]# mongoexport -d school -c info -o /opt/school.json
//-d 指定数据库database名称;-c指定集合collection名称;-o指定导出output位置,并命名以json为结尾的文件格式
[[email protected]]# mongoimport -d school -c info1 --file /opt/school.jso
//-d 指定要还原的数据库;-c指定要还原出的表名,不能跟已有的同名;--file指定还原的文件位置
条件操作
[[email protected]]# mongoexport -d school -c info1 -q ‘{"id":{"$eq":10}}‘ -o /opt/school1.json
//条件导出,将school数据库中info1集合中id等于10的行导出
备份与恢复
[[email protected]]# mkdir /backup //创建备份文件存放目录
[[email protected]]# mongodump -d school -o /backup/ //备份数据库
[[email protected] backup]# mongorestore -d school2 --dir=/backup/school //恢复数据库,注意不可与现有数据库同名
复制数据库
[[email protected]]# db.copyDatabase("school","school2")
克隆集合
[[email protected]]# mongo --port 27018 //进入实例2数据库
> db.runCommand({"cloneCollection":"school.info","from":"192.168.144.114:27017"})
//将27017实例数据库school中的info集合克隆到本实例中
创建管理用户
[[email protected]]# mongo //进入数据库
> db.createUser({"user":"root","pwd":"123","roles":["root"]})
> db.auth("root","123")
进程管理
> db.currentOp()
显示
"opid" : 337,
> db.killOp(337)
原文地址:http://blog.51cto.com/13659253/2145030
时间: 2024-10-10 08:26:58