WINDOWS2008R2系统MongoDB环境搭建手册

来源:互联网 发布:tgp深度优化原理 编辑:程序博客网 时间:2024/05/16 02:43

   自己根据网上前辈们的资料根据自身实践,整理出了MongoDB在windows2008R2服务器上安装的方法,希望给广大朋友提供一点帮助。

 

1.MongoDB安装和试运行

2.1 MongoDB安装

  1. 解压mongodb-win32-x86_64-2008plus-2.2.3(该版本适用windows2008)至C:\mongodb2.2.3(你可以按照自己的路径来,路径中最好不要有空格,要不然麻烦)。
  2. 新建文件夹C:\DATA\DB。
  3. 进入CMD,运行命令
  1. C:\mongodb2.2.3\bin\mongod.exe -dbpath C:\DATA\DB, MongoDB已经安装成功并已经在运行中了,你将会看到如下:

此时是mongoDB的运行状态,你可以按Ctrl+C结束运行状态或者直接关掉CMD结束运行。

2.2 MongoDB试运行

保持mongod命令窗口的运行状态,再新开一命令窗口
输入C:\mongodb2.2.3\bin\mongo,出现

>show dbs
OK
,连接成功。
1. show dbs 显示数据库列表
2. use Northwind 进入Northwind数据库,大小写敏感
3. show collections 显示数据库中的集合
4. db 用于查看当前所在的数据库
5. db.Customer.count() 查看集合Customer的记录总数
6. db.Customer.findOne({"_id":"1"}) 查看CustomerId=1的记录

新增数据
1. use MyTest,这个数据库不存在,无所谓,mongo会创建,
MongoDB在使用前,并不要求您事先创建好相应的数据库,设计数据表结构!
在MongoDB中,没有【表】的概念,取而代之的是【集合】,也没有【数据记录】的概念,取而代之的是【文档】,我们可以把【文档】理解成一个【对象】,任意的对象,甚至可以有复杂的嵌套层次。
因此,我们不用再写代码从【数据表字段】到C#类的【属性,字段】的转换了,现在直接就可以读写整个对象了。
而且MongoDB不支持Join操作,所以,如果有【关联】操作,就需要你自己来处理
2. item={"Key":"1","text":"wokao","number":3}
3. db.table1.insert(item)
,mongo将建立集合table1,并将item插入,完成了新增加数据库的工作
4. db.table1.find()显示table1中的数据,MongoDB的文档使用的是一种称为BSON格式的对象,与Javascript中的JSON类似
5. 额外的,输入item1={"Id":5,"str":"asdfasdf"},再插入db.table1.insert(item1),再用find()命令看,也插入成功了~,注意到结构和item不一样!但不建议这样做。
注意到:【每个文档有一个名为 "_id" 的成员】,我可没有定义啊。
其实,MongoDB会为每个文档都创建这样一个文档成员,我们指定的 "key", "id" 对于MongoDB来说:它们并不是【文档的主键】,MongoDB只认 "_id",你可以指定,但如果不指定,MongoDB就自动添加。

修改数据

1. var t=db.table1.findOne({"Id":5}),获取一条记录

2. t.str="wokao"

3. db.table1.update({"Id":5},t)

删除数据

db.table1.remove({"Id":5})

查找数据

上面已经有find和findOne命令,即用于查询
db.table1.find()

MongoDB的查询条件中,并没有 >, <, >= , <= 这些运算符,而是使用 "$lt", "$lte", "$gt", "$gte"

新建表

db.MyTest.table2.save({})

删除表

db.table1.drop()或db.runCommand({"drop","table1"})

删除数据库

db.runCommand({"dropDatabase": 1}),此命令只能删除当前数据库

获取服务端状态信息

db.runCommand({"serverStatus" : 1})

 

2. MongoDB服务器安装

3.1 副本集+仲裁服务器

2.1.1.启用三台服务器:

192.168.57.115:

新建目录,C:\data\replset\r0

新建文件,C:\data\replset\log\r0.log

192.168.57.125:

新建目录,C:\data\replset\r1

新建文件,C:\data\replset\log\r1.log

192.168.57.126:

新建目录,C:\data\replset\r2

新建文件,C:\data\replset\log\r2.log

 

2.1.2.启动MongoDB服务

192.168.57.115:

mongod.exe  --dbpath=/data/replset/r0 --replSet  replset1  --port 28010 --logpath=/data/replset/log/r0.log --logappend  --directoryperdb

192.168.57.125:

mongod.exe  --dbpath=/data/replset/r1 --replSet  replset1  --port 28011 --logpath=/data/replset/log/r1.log --logappend  --directoryperdb

192.168.57.126:

mongod.exe  --dbpath=/data/replset/r2 --replSet  replset1  --port 28012 --logpath=/data/replset/log/r2.log --logappend  --directoryperdb

 

2.1.3.初始化副本集

192.168.57.115:

CMD命令行运行: C:\mongodb2.2.3\binmongo --port 28010

配置命令赋值:

config_replset1 = {

_id:"replset1",

members:

[

{_id:0,host:"192.168.57.115:28010",priority:4},

{_id:1,host:"192.168.57.125:28011",priority:2},

{_id:2,host:"192.168.57.126:28012",arbiterOnly : true}

]

}

配置初始化:rs.initiate(config_replset1);

完成后可以通过:rs.status()命令来查看配置状态。这样全部搭建成功。如下图状态显示:

2.1.4.外部访问接口

外部访问接口为:"192.168.57.115:28010","192.168.57.125:28011"

2.1.5.一般访问查询命令

#设置从库可读(从库上执行)
 
>rs.slaveOk();
查看副本集状态
 
>rs.status()
>user local;
>rs.isMaster()
>db.system.replset.find()
查看当前主库:
 
>;db.$cmd.findOne({ismaster:1});

3.2 Replica Set+Sharding(集群+分片)

3.2.1. 集群设置

* 使用Replica Sets,确保每个数据节点都具有备份、自动容错转移、自动恢复能力。

* 使用3个配置服务器,确保元数据完整性

* 使用3个路由进程,实现负载平衡,提高客户端接入性能

统一对外接口:三个路由进程都是单独的对外接口,每个接口都可以通过三个配置服务控制副本集shard1和shard2。

3.2.2.   集群设置图

3.2.3.   启用三台服务器:

192.168.57.115:

新建目录,C:\data\shard1_1;C:\data\shard2_1;C:\data\config

新建文件,C:\data\shard1_1\shard1_1.log;C:\data\shard2_1\shard2_1.log

192.168.57.125:

新建目录,C:\data\shard1_2;C:\data\shard2_2;C:\data\config

新建文件,C:\data\shard1_2\shard1_2.log;C:\data\shard2_2\shard2_2.log

192.168.57.126:

新建目录,C:\data\shard1_3;C:\data\shard2_3;C:\data\config

新建文件,C:\data\shard1_3\shard1_3.log;C:\data\shard2_3\shard2_3.log

3.2.4.   启动MongoDB服务

192.168.57.115:

1. 配置shard1所用到的Replica Sets

mongod.exe -shardsvr -replSet shard1 -port 27017 -dbpath C:\data\shard1_1 -logpath C:\data\shard1_1\shard1_1.log –logappend

2. 配置shard2所用到的Replica Sets

mongod.exe -shardsvr -replSet shard2 -port 27018 -dbpath C:\data\shard2_1 -logpath C:\data\shard2_1\shard2_1.log -logappend

 

192.168.57.125:

1. 配置shard1所用到的Replica Sets

mongod.exe -shardsvr -replSet shard1 -port 27017 -dbpath C:\data\shard1_2 -logpath C:\data\shard1_2\shard1_2.log –logappend

2. 配置shard2所用到的Replica Sets

mongod.exe -shardsvr -replSet shard2 -port 27018 -dbpath C:\data\shard2_2 -logpath C:\data\shard2_2\shard2_2.log -logappend

192.168.57.126:

1. 配置shard1所用到的Replica Sets

mongod.exe -shardsvr -replSet shard1 -port 27017 -dbpath C:\data\shard1_3 -logpath C:\data\shard1_3\shard1_3.log –logappend

2. 配置shard2所用到的Replica Sets

mongod.exe -shardsvr -replSet shard2 -port 27018 -dbpath C:\data\shard2_3 -logpath C:\data\shard2_3\shard2_3.log -logappend

 

3.2.5.   配置初始化

3.2.5.1 shard配置初始化

1. 初始化shard1

下执行

mongo --port 27017

config={_id:'shard1',members:[{_id:0,host:'192.168.57.115:27017'},{_id:1,host:'192.168.57.125:27017'},{_id:2,host:'192.168.57.126:27017'}]}

rs.initiate(config)

2. 初始化shard2

下执行

    mongo.exe -port 27018

    config={_id:'shard2',members:[{_id:0,host:'192.168.57.115:27018'},{_id:    1,host:'192.168.57.125:27018'},{_id:2,host:'192.168.57.126:27018'}]}

 rs.initiate(config)

3.2.6.   启用配置服务

    在192.168.57.115、192.168.57.125、192.168.57.126上分别执行命令:

   下执行

    mongod.exe -configsvr -dbpath C:\data\config -port 20000 -logpath     C:\data\config\config.log –logappend

    配置服务启动成功。

3.2.7 启用路由服务器

    在192.168.57.115、192.168.57.125、192.168.57.126上分别执行命令:

   下执行

   mongos.exe -configdb     192.168.57.115:20000,192.168.57.125:20000,192.168.57.126:20000 --port     30000 --chunkSize 1 -logpath C:\data\mongos.log –logappend

    路由服务配置成功。

3.2.8 配置shard cluster

   连接其中一台机器的端口30000的mongos进程,并切换到admin数据库做以下配置:

./mongo --port 30000

>use admin

>db.runCommand({addshard:"shard1/192.168.57.115:27017,192.168.57.125:27017,192.168.57.126:27017"});

>db.runCommand({addshard:"shard2/192.168.57.115:27018,192.168.57.125:27018,192.168.57.126:27018"});

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

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

 

至此,集群和分片安装完毕。可以通过rs.status()查看当前服务器的状态。

3.2.9 外部访问集群数据库接口

任何一台实现了第二章节的mongodb的安装,都可以通过目录下执行mongos 192.168.57.115.2000来访问集群数据库。或者mongos 192.168.57.125.2000来访问集群数据库。或者mongos 192.168.57.126.2000来访问集群数据库。

原创粉丝点击