最近学习了下MongoDB,也在网上看了别人的博客,也买了书看了下,自己只有windows系统,就在自己的电脑上玩了下,现在把过程写下来记录下,当然也希望能帮到他人。
一、下载安装就不用说了吧,从官网下载下来直接解压出来就可以用了。
二、分片集群说明:
1、在一台电脑上模拟集群,就无所谓用哪个盘了,我全部用的E盘
2、一个mongos这个是入口,所以一般是默认的端口:27017
一个config服务器:端口也用默认的:27019
2个分片,每个分片3个备份:shard1/127.0.0.1:27018,127.0.0.1:27028,127.0.0.1:27038 和 shard2/127.0.0.1:27020,127.0.0.1:27030,127.0.0.1:27040
备份要用奇数个数的服务器,所以最少要弄3个备份服务器。用两个的话跟一个一样,只要挂掉一个这个分片就不能用了
三、进入正题
1、按上面说明创建mongo日志目录,在e:/data/db/下依次创建27018,27028,27038,27020,27030,27040,27019文件夹
2、启动,依次执行下面命令,启动分片、备份、config、mongos,命令行shell启动方法:打开mongodb的安装解压目录,按住左shift键点击鼠标右键,选择“在此处打开命令窗口”,就可以直接运行下面的命令了,下面每条命令都需要一个新的命令窗口
mongod.exe --port 27018 --dbpath e:/data/db/27018 --replSet shard1 --shardsvr
mongod.exe --port 27028 --dbpath e:/data/db/27028 --replSet shard1 --shardsvr
mongod.exe --port 27038 --dbpath e:/data/db/27038 --replSet shard1 --shardsvr
mongod.exe --port 27020 --dbpath e:/data/db/27020 --replSet shard2 --shardsvr
mongod.exe --port 27030 --dbpath e:/data/db/27030 --replSet shard2 --shardsvr
mongod.exe --port 27040 --dbpath e:/data/db/27040 --replSet shard2 --shardsvr
mongod.exe --port 27019 --dbpath e:/data/db/27019 --configsvr
mongos.exe --port 27017 --configdb 127.0.0.1:27019
3、上面只是创建了mongodb实例,分配备份集群
1)打开新的命令窗口执行命令:
mongo.exe 127.0.0.1:27018/admin
进入到分片1某一个实例的admin数据库,进到一个实例就好,随便找一个就行,不用每个都进,然后执行命令:
config = {_id:"shard1",members:[{_id:0,host:"127.0.0.1:27018"},{_id:1,host:"127.0.0.1:27028"},{_id:2,host:"127.0.0.1:27038"}]}
接着执行:
rs.initiate(config)
上面这个命令执行时间可能会久一点,要耐心等待下,执行完会有{"ok":1}出现
2)打开新的命令窗口执行命令:
mongo.exe 127.0.0.1:27020/admin
进入到分片2某一个实例的admin数据库,进到一个实例就好,随便找一个就行,不用每个都进,然后执行命令:
config = {_id:"shard2",members:[{_id:0,host:"127.0.0.1:27020"},{_id:1,host:"127.0.0.1:27030"},{_id:2,host:"127.0.0.1:27040"}]}
接着执行:
rs.initiate(config)
上面这个命令执行时间可能会久一点,要耐心等待下,执行完会有{"ok":1}出现
4、备份集群搞好后,在mongos执行命令确定分片实例及分片的数据库及集合
打开新的命令窗口执行命令:
mongo.exe 127.0.0.1:27017/admin
进入到mongos,然后执行命令确定要分片的mongodb实例
db.runCommand({addShard:"shard1/127.0.0.1:27018,127.0.0.1:27028,127.0.0.1:27038"})
db.runCommand({addShard:"shard2/127.0.0.1:27020,127.0.0.1:27030,127.0.0.1:27040"})
确定启用分片的数据库为jason及集合为jason库中的user集合,以及分用分片的字段为name:
db.runCommand({"enableSharding":"jason"})
db.runCommand({"shardCollection":"jason.user","key":{"name":1}})
注意:命令中使用了”数据库名.集合名“,而非直接”集合名“
5、已经完成,可以使用了,启用新窗口,执行命令:mongo.exe 127.0.0.1:27017/jason,可以在user集合中进行增删查改操作了
四、关于备份
要删除或者增加备份服务器,只需要连接备份服务器的master服务器(备份服务器中的一个,非mongos服务器),并用命令rs.add()或者rs.remove()操作即可