MongoDB学习记录11-分片-副本集(mongodb3.2版本以后)
来源:互联网 发布:人工智能猜出眉毛 编辑:程序博客网 时间:2024/05/16 23:35
结构图
配置分片A
1 新建如下目录
2 分别启动分片A的三个节点
[root@localhost bin]# ./mongod --port 30001 --shardsvr --replSet shard-a --dbpath /usr/local/mongodb-linux-x86_64-3.4.4/shard/shard-a-1/ --logpath /usr/local/mongodb-linux-x86_64-3.4.4/shard/shard-a-1/1.log --fork --nojournal[root@localhost bin]# ./mongod --port 30002 --shardsvr --replSet shard-a --dbpath /usr/local/mongodb-linux-x86_64-3.4.4/shard/shard-a-2/ --logpath /usr/local/mongodb-linux-x86_64-3.4.4/shard/shard-a-2/1.log --fork --nojournal[root@localhost bin]# ./mongod --port 30003 --shardsvr --replSet shard-a --dbpath /usr/local/mongodb-linux-x86_64-3.4.4/shard/shard-a-3/ --logpath /usr/local/mongodb-linux-x86_64-3.4.4/shard/shard-a-3/1.log --fork --nojournal
3 配置分片A这个副本集
连接mongo 30001这个节点
[root@localhost bin]# ./mongo --port 30001
初始化副本集
rs.initiate( { "_id":"shard-a", "members":[ { "_id":0, "host":"192.168.7.127:30001" } ] } );
添加从节点
rs.add("192.168.7.127:30002")
添加仲裁节点
rs.add("192.168.7.127:30003",{arbiterOnly:true})
配置分片B
1 新建如下目录
2 分别启动分片B的三个节点
[root@localhost bin]# ./mongod --port 40001 --shardsvr --replSet shard-b --dbpath /usr/local/mongodb-linux-x86_64-3.4.4/shard/shard-b-1/ --logpath /usr/local/mongodb-linux-x86_64-3.4.4/shard/shard-b-1/1.log --fork --nojournal[root@localhost bin]# ./mongod --port 40002 --shardsvr --replSet shard-b --dbpath /usr/local/mongodb-linux-x86_64-3.4.4/shard/shard-b-2/ --logpath /usr/local/mongodb-linux-x86_64-3.4.4/shard/shard-b-2/1.log --fork --nojournal[root@localhost bin]# ./mongod --port 40003 --shardsvr --replSet shard-b --dbpath /usr/local/mongodb-linux-x86_64-3.4.4/shard/shard-b-3/ --logpath /usr/local/mongodb-linux-x86_64-3.4.4/shard/shard-b-3/1.log --fork --nojournal
3 配置分片A这个副本集
连接mongo 40001这个节点
[root@localhost bin]# ./mongo --port 40001
初始化副本集
rs.initiate( { "_id":"shard-b", "members":[ { "_id":0, "host":"192.168.7.127:40001" } ] } );
添加从节点
rs.add("192.168.7.127:40002")
添加仲裁节点
rs.add("192.168.7.127:40003",{arbiterOnly:true})
启动配置服务器
1 先建立如下文件夹
2 分别启动配置服务器
[root@localhost bin]# ./mongod --configsvr --port 20001 --replSet cfgReplSet --dbpath /usr/local/mongodb-linux-x86_64-3.4.4/shard/conf1/ --logpath /usr/local/mongodb-linux-x86_64-3.4.4/shard/conf1/l.log --fork[root@localhost bin]# ./mongod --configsvr --port 20002 --replSet cfgReplSet --dbpath /usr/local/mongodb-linux-x86_64-3.4.4/shard/conf2/ --logpath /usr/local/mongodb-linux-x86_64-3.4.4/shard/conf2/l.log --fork[root@localhost bin]# ./mongod --configsvr --port 20003 --replSet cfgReplSet --dbpath /usr/local/mongodb-linux-x86_64-3.4.4/shard/conf3/ --logpath /usr/local/mongodb-linux-x86_64-3.4.4/shard/conf3/l.log --fork
3 配置 配置服务器这个副本集
连接mongo 20001这个节点
[root@localhost bin]# ./mongo --port 20001
初始化副本集
rs.initiate( { "_id":"cfgReplSet", "members":[ { "_id":0, "host":"192.168.7.127:20001" } ] } );
添加从节点
rs.add("192.168.7.127:20002")
添加从节点 (注意这里没有仲裁节点)
rs.add("192.168.7.127:20003")
启动路由
1 先建立如下文件夹
/usr/local/mongodb-linux-x86_64-3.4.4/shard/route
2 启动路由
[root@localhost bin]# ./mongos --port 10000 --configdb cfgReplSet/192.168.7.127:20001,192.168.7.127:20002,192.168.7.127:20003 --logpath /usr/local/mongodb-linux-x86_64-3.4.4/shard/route/l.log --fork
配置集群
1 连接路由节点
[root@localhost bin]# ./mongo --port 10000
2 添加分片
添加分片A (这里没有添加仲裁节点)
mongos> sh.addShard("shard-a/192.168.7.127:30001,192.168.7.127:30002")
添加分片B
mongos> sh.addShard("shard-b/192.168.7.127:40001,192.168.7.127:40002")
3 查看数据库
输入命令
mongos> show dbs
输出结果
admin 0.000GBconfig 0.000GB
会发现有两个数据库 查看一下config数据库中的表
mongos> use configmongos> show collections
输出结果
actionlogchangelogchunksdatabaseslockpingslocksmongossettingsshardssystem.indexesversion
可以发现config数据库就存放了分片的信息
测试分片
目标:通过Java 驱动的方式写入到 数据库 cloud-users的表 user一千条数据
1 开启 cloud-uses 数据库分片,不管这个数据库是否存在
mongos> sh.enableSharding("cloud-users")
2 开启表 user的 分片,不管表是否存在直接执行命令即可 , 分片键 由 age 和 id组合而成
sh.shardCollection("cloud-users.user",{"age":1,"_id":1})
3 Java驱动执行代码
coll = new MongoClient( "192.168.7.127", 10000).getDatabase("cloud-users").getCollection("user");for(int i = 0 ; i < 1000 ; i ++){ Document doc = new Document(); User u = User.initUser(); doc.put("address", u.getAddress()); doc.put("age", u.getAge()); doc.put("email", u.getEmail()); doc.put("height", u.getHeight()); doc.put("job", u.getJob()); doc.put("nickname", u.getNickname()); doc.put("phone", u.getPhone()); doc.put("school", u.getSchool()); doc.put("sex", u.getSex()); doc.put("hoby", u.getHoby()); Document dog = new Document(); dog.put("name", u.getDog().getName()); dog.put("age", u.getDog().getAge()); doc.put("dog", dog); coll.insertOne(doc);}
0 0
- MongoDB学习记录11-分片-副本集(mongodb3.2版本以后)
- MongoDB学习记录10-分片-副本集(mongodb3.2版本以前)
- MongoDB学习记录09-分片-单节点(mongodb3.2版本以前)
- MongoDB副本集分片集搭建记录
- mongodb 副本集+分片
- mongodb 副本集+分片
- CentOS mongodb 副本集分片
- Mongodb分片+副本集配置
- mongodb 分片 副本集 集群
- mongoDB副本集与分片
- mongodb 分片与副本集
- (学习笔记)MongoDB 分布式搭建 --- 副本集分片
- MongoDB3.2副本集配置
- MongoDB学习记录08-复制(副本集)
- Mongodb的副本集+分片部署
- 搭建mongodb集群(副本集+分片)
- 搭建mongodb集群(副本集+分片)
- MongoDB的安装(单机,副本集,分片)
- ldap初始化DSCC默认实例时报错:Failed to find a free port number !
- 51nod 1050 循环数组最大子段和(基础dp)
- JQuery实现简单的服务器轮询效果
- tomcat启动失败常见问题
- VisualVM 远程连接服务器
- MongoDB学习记录11-分片-副本集(mongodb3.2版本以后)
- 自定义view
- CentOS 6.8下利用Rsyslog+LogAnalyzer+MySQL部署日志服务器
- 如何使用Valgrind memcheck工具进行C/C++的内存泄漏检测
- 分布式架构学习之持续集成:009--SVN版本管理系统的安装和使用(CentOS+Subversion+Apache+Jsvnadmin)
- Jmeter+jvisualvm压力测试和性能调优
- 常用激活函数比较
- Oracle修改表,提示“资源正忙,要求指定NOWAIT”
- 详解Node.js API系列 Crypto加密模块