MongoDB 安装文档

(不知道为何,这里有很多图没有复制进来,需要完整文档的话请在https://download.youkuaiyun.com/download/xiaobai11as/10930623下载,毕竟辛苦4整天才完成的)

一、windows下MongoDB的安装.. 1

1.下载安装包.. 1

2.安装MongoDB. 2

3:配置环境变量.. 3

4:创建文件夹与文件:.. 3

5: 启动mongod服务.. 4

二、MongoDb基本操作.. 5

1.库级操作命令.. 5

2.表级别操作命令.. 5

3:更多操作:.. 7

三、MongoDB在CentOS下的安装.. 8

1:下载.. 9

2:解压.. 9

3:移动.. 9

4:配置路径.. 10

5:创建文件夹与文件.. 10

6:启动mongodb. 10

7:客户端连接.. 11

四、MongoDB集群架构.. 12

1.框架介绍:.. 13

五、MongoDB在Windows下本地分布式部署.. 17

1:建立服务器本地路径.. 17

2:配置文件.. 18

3:安装windows服务.. 20

4:启动服务.. 21

6:启动配置服务.. 22

7:启动配置路由服务器.. 22

 

 

 

 

一、windows下MongoDB的安装

1.下载安装包

下载地址:https://www.mongodb.com/download-center#community 

 

2.安装MongoDB

MongoDB的安装非常简单,大部分步骤一直点下一步就行。

除了安装路径,还有取消勾选左侧的Install MongoDB Copmpass”选项 外。

 

3:配置环境变量

   右击我的电脑—>属性--->高级属性设置—>环境变量

   MONGO_HOME = C:\Program Files\MongoDB\Server\3.4\bin

Path = %MONGO_HOME%

然后检测是否成功:输入mongod --help ,出现如下界面:

 

 

4:创建文件夹与文件:

在 D盘的根目录下新建一个名为 mongodb 的文件夹

然后新建一个名为data 和一个名为 log 的文件夹,

最后在 log 文件夹下建立一个名为 mongodb.log 的文件

 

注意:启动mongodb服务之前必须创建数据库文件的存放文件夹,否则命令不会自动创建,而且不能启动成功。

5: 启动mongod服务

mongod --dbpath d:/mongodb/data --logpath d:/mongodb/log/mongodb.log --fork --port 27017

参数解释:

--dbpath 数据存储目录

--logpath 日志存储位置

--port 运行端口(默认27017)

--fork 后台进程运行

 

注意:这种启动是在本地windows“服务”中,是没有配置上mongodb 服务的,可以打开“服务”看下

配置服务:

新建配置文件data 文件夹下建立mongo.config 文件

用记事本打开mongo.config,并输入:

dbpath=D:\mongodb\data\db

logpath=D:\mongodb\data\log\mongo.log

用管理员身份打开cmd:(C:\Windows\System32\ccmd.exe)

mongod --config "D:\software\Mongodb\mongo.config" --install --serviceName "MongoDB"

本地windows“服务”就会出现mongodb 服务,省去了手开启服的繁

net start MongoDB

 

 

二、MongoDb基本操作

1.库级操作命令

查看库

show dbs;

创建库

use shop;(隐式创建)

删除库

db.dropDatabase();

查看表

show collections;

创建表

db.goods.insert({name:'zhangsan', age:'25'});(隐式创建)

删除表

db.goods.drop();

 

 

2.表级别操作命令

(CURD  create/update/read/delete)

增 insert 主要针对json格式

db.students.insert({_id:002, name:'xiaoming', age:'28'})

如果没有写 _id, 系统会自动添加一个 _id

 

删 remove 查询(条件)表达式

db.stu.remove({sn:'001'}); 删除stu表中,sn属性值为 001 的文档

db.stu.remove(); 全部collection删除

dn.stu.remove({sn:'002', true});只删除一行sn属性值为 002 的数据

 

改 update 新文档替换就文档(相当于替换文档)

update({查谁},{改成什么样},{可选参数})

改谁, 查询表达式

改成什么样。新值或者复制表达式

//修改整个文档

db.stu.update({sn:'001'},{sn:'0001'}); 修改整个文档

 

//修改文档某一列

$set   修改某列

  db.stu.update({sn:'001'},{$set:{sn:'002'}}); 修改某列的值 

  $unset 删除某列

  $rename 重命名某列

  $inc 增长某列

  $setOnInsert  当upsert为true时。并且发生了insert操作,可以补充的字段

db.stu.update({sn:'004'},{$set:{sn:'0004'}},{$setOnInsert:{gender:'meal'}, {upsert:true}};

/*

db.stu.update({name:'kong'},

{

$set:{name:'king'},   修改

$uset:{jinggu:1}, 删除

$rename:{sex:'gender'}, 重命名

$inc:{age:14} 自增长

})

*/

//第三个参数

//修改时的额外参数

mulit 对符合条件的所有数据产生影响

  注意:就算查询表达式命中多行,也只能改一行。如果要全部修改。使用multi:true 或者mulit:1 全部修改

db.stu.update({name:'zhangsan'},{$set{name:'lisi'}}, {multi:true}); //把全部的张三改成李四

upsert 如果存在符合条件的文档则修改。如果不存在,则添加

db.stu.update({name:'wuyong'}, {$set{name:'junshiwuyong'}}, {upsert:true});

 

查 find (查询表达式,查询的列)

//查询所有文档所有内容

db.stu.find();  

//查询所有文档的gender属性,(_id属性默认显示)

db.stu.find({},{gender:1}) 

//查询文档的gender属性,并且不显示 _id 属性 

db.stu.find({},{gender:1, _id:0}) 

//查询所有gender为meal的name属性,并且不显示 _id 属性

db.stu.find({gender:'meal'},{name:1, _id:0})

 

3更多操作:

https://blog.youkuaiyun.com/xiao_tommy/article/details/53187498

https://blog.youkuaiyun.com/zhanghongzheng3213/article/details/51556436

 

 

 

三、MongoDB在CentOS下的安装

 

1:下载

官网地址http://www.mongodb.org/downloads

下载安装包版本:rhel70-3.0.0链接为:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.0.0.tgz

 

注意:如果是windows下载好后,复制到虚拟机里(不可复制时点击 编辑à装载wmware..)查看压缩包的完整性,有时文件夹会复制不完全。

2:解压

tar -zxvf mongodb-linux-x86_64-rhel70-3.0.0.tgz

出现一下界面

3:移动

一般我们将安装的软件安装在/usr/local目录下,所以将解压后的文件移至/usr/local目录,并重命名,如下

[root@clinton software]# mv mongodb-linux-x86_64-rhel70-3.0.0 /usr/local/mongodb

4:配置路径

MongoDB 的可执行文件位于 bin 目录下,所以可以将其添加到 PATH 路径中:

这里通过修改profile文件:
vim /etc/profile
找到/export PATH /行,添加export PATH=/usr/local/mongodb/bin:$PATH

5:创建文件夹与文件

[root@clinton mongodb]# mkdir data

[root@clinton mongodb]# mkdir log

[root@clinton mongodb]# cd log/

[root@clinton log]# touch mongodb.log

6:启动mongodb

mongod --port 10001 --dbpath data/ --fork --logpath=log/mongodb.log

 

注意:通过浏览器访问 需要加上参数—httpinterface ,然后浏览器输入网址:http://localhost:11001/(端口号需要加上1000

7:客户端连接

mongo localhost:10001

然后可以进行操作数据库。

 

 

 

 

 

 

 

 

 

四、MongoDB集群架构

 

1.框架介绍:

运用MongoDB的复制集(Replica Sets)+分片(Sharding)就能实现MongoDB分布式高可用的集群。 分片(sharding)能够增加更多的机器来应对不断增加的负载和数据,也不影响应用。 复制集(Replica Sets)能确保每个分片节点都具有自动备份、自动故障恢复能力。

 

1)集群组件——副本集(Replica sets)

 

副本集通常由至少3个节点组成。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。

mongodb各个节点常见的搭配方式为:一主多从(正常情况下至少3个节点组成副本集)。

主节点记录在其上的所有操作,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。

 

https://i-blog.csdnimg.cn/blog_migrate/85d1e515252a8db3db464af3ce4f83b5.png

 

2)集群组件——分片(Sharding)

 

分片是将一个集合的数据分别存储在不同的shard节点上减轻单机压力

Shard Keys 的选择很重要,MongoDB主要根据Shard Keys来划分数据,Shard Keys可以由文档的一个或者多个物理键值组成,对于分片Key的选定直接决定了集群中数据分布是否均衡、集群性能是否合理。

https://i-blog.csdnimg.cn/blog_migrate/6d4d0b4e7b74e382c402d9d6ebede3be.png

 

3)集群组件——路由服务器(mongos)

 

路由服务器负责把对应的数据请求请求转发到对应的shard服务器上

mongos,数据库集群请求的入口,所有的请求都通过mongos进行协调,不需要在应用程序添加一个路由选择器,mongos自己就是一个请求分发中心,它负责把对应的数据请求请求转发到对应的shard服务器上。在生产环境通常有多mongos作为请求的入口,防止其中一个挂掉所有的mongodb请求都没有办法操作。

https://i-blog.csdnimg.cn/blog_migrate/05f53c8975b79e87cbd7ecbd5bdfe4ed.jpeg

4)集群组件——配置服务器(mongos)

 

存储所有数据库元信息(路由、分片)的配置。mongos本身没有物理存储分片服务器和数据路由信息,只是缓存在内存里,配置服务器则实际存储这些数据。

配置服务器相当与集群大脑,存储所有数据库元信息(路由、分片)的配置。mongos本身没有物理存储分片服务器和数据路由信息,只是缓存在内存里,配置服务器则实际存储这些数据。mongos第一次启动或者关掉重启就会从 config server 加载配置信息,以后如果配置服务器信息变化会通知到所有的 mongos 更新自己的状态,这样 mongos 就能继续准确路由。在生产环境通常有多个 config server 配置服务器,因为它存储了分片路由的元数据,这个可不能丢失!就算挂掉其中一台,只要还有存货, mongodb集群就不会挂掉。

https://i-blog.csdnimg.cn/blog_migrate/5bb64bec2537852c24bcd0e0e66f698c.png

5)集群组件——集群架构

https://i-blog.csdnimg.cn/blog_migrate/d4a5950d9bac0aeba84056242baf5538.jpeg

客户端程序感觉不到集群的存在,他只需要知道mongos服务器的ip和连接方式,至于它有多少个集群ip 都不需要关注,mongos 会自动选择。

 

注意:每一个shard包括一个或多个服务和存储数据的mongod进程(mongod是MongoDB数据的核心进程),典型的每个shard开启多个服务来提高服务的可用性

 

 

五、MongoDB在Windows下本地分布式部署

1:建立服务器本地路径

D:\mongo\shard11\data

D:\mongo\shard12\data

D:\mongo\shard13\data

D:\mongo\shard11\log\shard11.log

D:\mongo\shard12\log\shard12.log

D:\mongo\shard13\log\shard13.log

D:\mongo\shard11\shard11.conf

D:\mongo\shard12\shard12.conf

D:\mongo\shard13\shard13.conf

 

D:\mongo\shard21\data

D:\mongo\shard22\data

D:\mongo\shard23\data

D:\mongo\shard21\log\shard21.log

D:\mongo\shard22\log\shard22.log

D:\mongo\shard23\log\shard23.log

D:\mongo\shard21\shard21.conf

D:\mongo\shard22\shard22conf

D:\mongo\shard23\shard23conf

 

D:\mongo\config\data

D:\mongo\config\log\config.log

D:\mongo\config\config.conf

 

D:\mongo\route\data

D:\mongo\route\log\route.log

D:\mongo\route\route.conf

 

 

2:配置文件

注意:仲裁者(Arbiter),是复制集中的一个MongoDB实例,它并不保存数据。为了确保复制集中有奇数的投票成员(包括primary),需要添加仲裁节点做为投票,否则primary不能运行时不会自动切换primary。简单来说  不存储数据,只参与选举 。

分片服务器配置示例:

dbpath = D:\mongo\shard11\data  

port = 10011

auth = false

bind_ip = 0.0.0.0

directoryperdb = true

logpath = D:\mongo\shard11\log\shard11.log

shardsvr=true

replSet=set1

oplogSize=2048

 

配置服务器配置示例:

dbpath = D:\mongo\config\data

port = 30000

auth = false

bind_ip=0.0.0.0

directoryperdb = true

logpath = D:\mongo\config\log\config.log

configsvr=true

oplogSize=2048

replSet=conf

 

路由服务器示例:

port = 40000

logpath = D:\mongo\route\log\route.log

configdb=conf/127.0.0.1:30000

 

注意:configdb属性务必于配置服务器对应  配置服务器副本集名称(replSet)/ip地址:端口:

3:安装windows服务

//分片1(副本集)

D:\mongo\bin\mongod --config D:\mongo\shard11\shard11.conf  --serviceName "shard11" --serviceDisplayName "shard11" --install

D:\mongo\bin\mongod --config D:\mongo\shard12\shard12.conf  --serviceName "shard12" --serviceDisplayName "shard12" --install

D:\mongo\bin\mongod --config D:\mongo\shard13\shard13.conf  --serviceName "shard13" --serviceDisplayName "shard13" --install

//分片2(副本集)

D:\mongo\bin\mongod --config D:\mongo\shard21\shard21.conf  --serviceName "shard21" --serviceDisplayName "shard21" --install

D:\mongo\bin\mongod --config D:\mongo\shard22\shard22.conf  --serviceName "shard22" --serviceDisplayName "shard22" --install

D:\mongo\bin\mongod --config D:\mongo\shard23\shard23.conf  --serviceName "shard23" --serviceDisplayName "shard23" --install

 

//配置服务器

D:\mongo\bin\mongod --config D:\mongo\config\config.conf  --serviceName "config" --serviceDisplayName "servesconfig" --install

//路由服务器

D:\mongo\bin\mongos --config D:\mongo\route\route.conf  --serviceName "route" --serviceDisplayName "serveroute" –install

 

4:启动服务

启动分片服务

net start  shard11

net start  shard12

net start  shard13

net start  shard21

net start  shard22

net start  shard23

5:初始化副本集

如副本集1

进入10001

 mongo --port 10001

设置配置变量   config={_id:'rs1',members:[{_id:0,host:'127.0.0.1:10001'},{_id:1,host:'127.0.0.1:10002'},{_id:2,host:'127.0.0.1:10003',arbiterOnly:true}]}

初始化配置

rs.initiate(config)

查询配置状态

rs.status()

6:启动配置服务

开启服务

net start  config

进入30000

mongo --port 30000

config={_id:'conf',members:[{_id:0,host:'127.0.0.1:30000'}]}

rs.initiate(config)

7:启动配置路由服务器

管理员启动cmd

开启服务

net start  route

进入路由服务器

mongo –port 40000

添加分片

db.runCommand({addshard:’rs1/127.0.0.1:10001,127.0.0.1:10002,127.0.0.1:10003’})

db.runCommand({addshard:’rs2/127.0.0.1:20001,127.0.0.1:20002,127.0.0.1:20003’})

开启分片数据库 

db.runCommand({enablesharding:”testdb”}) 

开启分片集合 

db.runCommand({enablesharding:”testcollect”}) 

 

配置结束,可以测试了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值