1.启动mongodb

启动mongodb在Linux中可以进入mongodb的bin目录下执行      ./mongod -dbpath=所建立的数据文件夹  -logpath=所建立的日志文件

然后mongod服务就会启动。

-port可以指定这个mongod服务运行的端口

-fork可以指定该mongod在后台运行(服务进程)

-config可以指定配置文件让mongod读取

配置文件和命令行中的功能是完全一致的。例如

port=22017

fork=true

logpath=mongodb.log

只是将命令行中配置的内容放进文件中。

启动完mongod之后在启动mongos     ./mongos --port xxxx --configdb localhost:xxxxx

2.停止mongodb

如果mongod在前台运行,直接ctrl+c就可以

如果在后台运行,则先查出mongod的pid,然后kill掉即可

3.查看mongodb的状态

可以利用mongostat来查看数据库状态,每秒刷新一次,列分别为inserts query update vsize conn等等数据

4.安全和认证

默认的用户是admin,拥有所有权限,可以通过

use admin
db.addUser({"root","abcd"}) //添加一个root用户
db.addUser({"read_only","abcd","true"}) //添加一个read_only用户
//第一个参数是用户名,第二个是密码,第三个是是否只读 //给数据库建立用户后,启动mongod时 加入-auth 即可开启安全验证,此时要使用用户身份则需要输入
db.auth({"username","password"})

5.数据库备份

将数据库安全关闭后,将所指定的dbpath下的文件夹复制,就能完成备份,比较简单。但是这是一种冷备份,必须关闭数据库才能进行

安装目录下的mongodump是一种热备份的方法,

./mongodump -d test -o  backup
//将test数据库备份到backup目录

下面介绍一下mongodb数据库的复制和分片

mongodb的复制

1.主从复制

建立一个主节点,多个从节点。在启动mongod时进行配置

./mongod -dbpath ~/dbs/master -port 10000 -master
//指定了主节点
./mongod -dbpath ~/dbs/slave -port 10001 -slave -source localhost:10000
//为之前的主节点配置了从节点

2.副本集

副本集是没有固定主节点的副本集合,会根据情况自动切换

./mongod -dbpath ~/dbs/chip1 -port 10001 -replSet localhost:10000

将副本集建立完毕并启动后需要初始化副本集

db.runCommand({"replSetInitiate":
{
"_id":"chips",
"members":[
{ "_id":1, "host":"localhost:10000" },
{ "_id":2, "host":"localhost:10001" },
]
} })

mongodb分片

分片有些类似建立索引,根据一个列或多个列建立分片。数据库会根据服务器情况将数据存储到不同的服务器上。而用户在使用的过程中,mongos会自动调配不同服务器上的信息(从配置服务器处获得),从用户角度并不知道分片存在。

使用mongodb分片主要分为了一下几个步骤

1.启动一个mongod 端口定为10000

2.启动mongos 并将mongod配置进去作为配置服务器   端口定位9000 ./mongos --port 9000 --configdb localhost:10000

以上两步之前已经有描述不再赘述

3.添加片

添加片首先也是要启动一个mongod 端口定位20000

然后启动mongo 连接mongos

./mongo localhost:9000/admin
//xxxx为mongos使用的端口,然后就可以通过addshared添加片了 db.runCommand({addshard:"localhost:20000",allowLocal:true}) //这样就把之前新建立的mongod添加进了端口的分片。一般来说不同的片是建立在不同的服务器上的,而本例中所有的分片都在一台主机上,所以需要添加allowLocal这一项配置 //之后想要添加分片,和这个过程一致,只需要建立mongod然后运行addshard就可以了。

4.切分数据

例如我们使用的数据库名为test

首先要开启分片功能

db.runCommand({"enablesharding":"test"})

对数据库分片后,内部的集合就会存储到不同的片上。然后我们使用shardcollection命令来对集合进行分片

db.runCommand({"shardcollection":"test.goods","key":{"_id":1}})

该命令对test数据库下的goods集合进行分片,片键为_id

生产配置

在实际使用中,我们需要多个配置服务器,多个mongos服务器,并且每个片都是副本集,这样才能更好的保证运行

1.三个配置服务器

应在不同的主机上

首先启动三个mongod

然后  ./mongos --port 10000  --configdb  ip1:port1,ip2:port2,ip3:port3   这样就将三个mongodb配置成了配置服务器

2.mongos

mongos数量不限,是访问数据库的接口,最好针对一个应用服务器之运行一个mongos进程

3.片

在生产环境中每个片应该都是副本集,要将副本集添加进片中,例子如下

副本集chips 其中包含一个服务器 ip3:27017

db.runCommand({"addshard":"chips/ip3:27017"})如果ip3的主机除了问题,mongos会自动寻找chips中的其他节点作为新的主节点。

最后说一下删除分片的命令 db.runCommand({"removeshard":"ip:port"})

mongodb的使用的更多相关文章

  1. 【翻译】MongoDB指南/聚合——聚合管道

    [原文地址]https://docs.mongodb.com/manual/ 聚合 聚合操作处理数据记录并返回计算后的结果.聚合操作将多个文档分组,并能对已分组的数据执行一系列操作而返回单一结果.Mo ...

  2. 【翻译】MongoDB指南/CRUD操作(四)

    [原文地址]https://docs.mongodb.com/manual/ CRUD操作(四) 1 查询方案(Query Plans) MongoDB 查询优化程序处理查询并且针对给定可利用的索引选 ...

  3. 【翻译】MongoDB指南/CRUD操作(三)

    [原文地址]https://docs.mongodb.com/manual/ CRUD操作(三) 主要内容: 原子性和事务(Atomicity and Transactions),读隔离.一致性和新近 ...

  4. 【翻译】MongoDB指南/CRUD操作(二)

    [原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(二) 主要内容: 更新文档,删除文档,批量写操作,SQL与MongoDB映射图,读隔离(读关 ...

  5. 【翻译】MongoDB指南/CRUD操作(一)

    [原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(一) 主要内容:CRUD操作简介,插入文档,查询文档. CRUD操作包括创建.读取.更新和删 ...

  6. CRL快速开发框架系列教程十二(MongoDB支持)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  7. MongoDB系列(二):C#应用

    前言 上一篇文章<MongoDB系列(一):简介及安装>已经介绍了MongoDB以及其在window环境下的安装,这篇文章主要讲讲如何用C#来与MongoDB进行通讯.再次强调一下,我使用 ...

  8. MongoDB系列(一):简介及安装

    什么是MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为应用提供可扩展的高 ...

  9. [原]分享一下我和MongoDB与Redis那些事

    缘起:来自于我在近期一个项目上遇到的问题,在Segmentfault上发表了提问 知识背景: 对不是很熟悉MongoDB和Redis的同学做一下介绍. 1.MongoDB数组查询:MongoDB自带L ...

  10. 用MongoDB分析合肥餐饮业

    看了<从数据角度解析福州美食>后难免心痒,动了要分析合肥餐饮业的念头,因此特地写了Node.js爬虫爬取了合肥的大众点评数据.分析数据库我并没有采用MySQL而是用的MongoDB,是因为 ...

随机推荐

  1. BZOJ2934 : [Poi1999]祭坛问题

    对于每个祭坛,算出每条线段阻碍它的角度区间,然后排序求并看看是否有空位即可,时间复杂度$O(n^2\log n)$. 这题在Main上官方时限是0.2S,因此需要几个常数优化: $1.$为了避免用at ...

  2. BZOJ 2038 小z的袜子 & 莫队算法(不就是个暴力么..)

    题意: 给一段序列,询问一个区间,求出区间中.....woc! 贴原题! 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过 ...

  3. Android入门第八篇之GridView(九宫图)

    本文来自http://blog.csdn.net/hellogv/ GridView跟ListView都是比较常用的多控件布局,而GridView更是实现九宫图的首选!本文就是介绍如何使用GridVi ...

  4. 纯JavaScripst的全选、全不选、反选 【转】

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. ACM Minimum Inversion Number 解题报告 -线段树

    C - Minimum Inversion Number Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d &a ...

  6. 30秒修复Ubuntu菱形乱码问题

    将语言改为英文,我是按照第三种方式进行的,成功.参考博客: http://blog.sina.com.cn/s/blog_a126a955010180b8.html

  7. BZOJ4499: 线性函数

    Description 小C最近在学习线性函数,线性函数可以表示为:f(x) = kx + b.现在小C面前有n个线性函数fi(x)=kix+bi ,他对这n个线性函数执行m次操作,每次可以: 1.M ...

  8. Makefile学习

    makefile中常用的函数: http://linux.chinaunix.net/techdoc/develop/2009/07/09/1122854.shtml SRC = $(wildcard ...

  9. Java中的super与this解析

    好了,现在开始讨论this&super这两个关键字的意义和用法. 在Java中,this通常指当前对象,super则指父类的.当你想要引用当前对象的某种东西,比如当前对象的某个方法,或当前对象 ...

  10. php随笔(一)

    之前的开发一直用的都是Thinkphp框架,对原生的php很不了解,近日打算把以前的项目拿一个出来用原生php再重写一次,顺便再把TP框架拆开好好分析分析. 之前的android开发虽说对面向对象的思 ...