MongDB 分片+副本集

mongodb分片+副本集搭建方法

http://www.lanceyan.com/tech/arch/mongodb_shard1.html

MongDB 分片+副本集_第1张图片


#====    config   ======
mongod --configsvr --dbpath /data/MongoDB-Cluster/config/data --port 21000 --logpath /data/MongoDB-Cluster/config/log/config.log --fork

#=====  mongos  ========
mongos --configdb 127.0.0.1:21000  --port 20000 --logpath /data/MongoDB-Cluster/mongos/log/mongos.log --fork

#========= shard =========
#在每个机器里分别设置分片1服务器shard1
mongod --shardsvr --replSet shard1 --port 22001 --dbpath /data/MongoDB-Cluster/shard1/data  --logpath /data/MongoDB-Cluster/shard1/log/shard1.log --fork --nojournal  --oplogSize 10

#在每个机器里分别设置分片2服务器shard2
mongod --shardsvr --replSet shard2 --port 22002 --dbpath /data/MongoDB-Cluster/shard2/data  --logpath /data/MongoDB-Cluster/shard2/log/shard2.log --fork --nojournal  --oplogSize 10

#在每个机器里分别设置分片3服务器shard3
mongod --shardsvr --replSet shard3 --port 22003 --dbpath /data/MongoDB-Cluster/shard3/data  --logpath /data/MongoDB-Cluster/shard3/log/shard3.log --fork --nojournal  --oplogSize 10


#=====================================================
#设置第一个分片副本集
mongo  127.0.0.1:22001
#使用admin数据库
use admin
#定义副本集配置
config = { _id:"shard1", members:[
                     {_id:0,host:"127.0.0.1:22001"}
                ]
         }
#初始化副本集配置
rs.initiate(config);

#=====================================================
#设置第二个分片副本集
mongo  127.0.0.1:22002
#使用admin数据库
use admin
#定义副本集配置
config = { _id:"shard2", members:[
                     {_id:0,host:"127.0.0.1:22002"}
                ]
         }
#初始化副本集配置
rs.initiate(config);

#=====================================================

#设置第三个分片副本集
mongo    127.0.0.1:22003

#使用admin数据库
use admin

#定义副本集配置
config = { _id:"shard3", members:[
                     {_id:0,host:"127.0.0.1:22003"}
                ]
         }
      
#
#config = { _id:"shard3", members:[
#                     {_id:0,host:"127.0.0.1:22003"},
#                     {_id:1,host;"127.1.0.2:22003"}
#                ]
#         }
#初始化副本集配置
rs.initiate(config);
#=====================================================


#连接到mongos服务器,串联路由服务器与分配副本集
mongo 127.0.0.1:20000
use admin
db.runCommand( { addshard : "shard1/127.0.0.1:22001"});#配置不同节点的分片1  db.runCommand( { addshard : "shard1/127.0.0.1:22001,127.1.0.2:22001"})
db.runCommand( { addshard : "shard2/127.0.0.1:22002"});#配置不同节点的分片2  db.runCommand( { addshard : "shard1/127.0.0.1:22002,127.1.0.2:22002"})
db.runCommand( { addshard : "shard3/127.0.0.1:22003"});#配置不同节点的分片3  db.runCommand( { addshard : "shard1/127.0.0.1:22003,127.1.0.2:22003"})

#查看副本分片值
db.runCommand( { listshards : 1 } );

#指定分片的数据库生效
db.runCommand( { enablesharding :"test"});
#指定数据库里需要分片的集合和片键
db.runCommand( { shardcollection : "test.table1",key : {id: 1} })

#插入测试数据
for (var i = 1; i <= 100000; i++)  db.top.save({id:i,"test1":"testval1"});
db.table1.stats();

MongDB 分片+副本集_第2张图片

                          MongoDB分片结构图

 


MongoDB分片Spring配置

Spring集成

<!-- replica-set 设置成mongos服务器的ip地址,可以是多个   -->
<mongo:mongo id="mongo" replica-set="127.0.0.1:20000">
		<mongo:options connections-per-host="100"
			threads-allowed-to-block-for-connection-multiplier="100"
			connect-timeout="60000" max-wait-time="30000" auto-connect-retry="true"
			socket-keep-alive="false" socket-timeout="60000" slave-ok="true"
			write-number="1" write-timeout="0" write-fsync="true" />
	</mongo:mongo>

	<mongo:db-factory id="mongoDbFactory" dbname="test"
		mongo-ref="mongo" />

	<mongo:mapping-converter id="mongoConverter" />
	<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
		<constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
		<constructor-arg name="mongoConverter" ref="mongoConverter" />
	</bean>
	<bean id="gridFsTemplate" class="org.springframework.data.mongodb.gridfs.GridFsTemplate">
		<constructor-arg ref="mongoDbFactory" />
		<constructor-arg ref="mongoConverter" />
	</bean>


  Java动态注入,然后操作

	 
//MongoDB操作对象动态注入
@Autowired
protected MongoOperations mongo;
	 
//GridFs 文件操作对象
@Autowired
protected GridFsOperations gridFs;

附录:

     MongoDB单机Spring配置

<bean id="mongoClientURI" class="com.mongodb.MongoClientURI">
	<constructor-arg value="${mongodb.uri}" />
</bean>
<bean id="mongoDbFactory"
	class="org.springframework.data.mongodb.core.SimpleMongoDbFactory">
        <constructor-arg ref="mongoClientURI" />
</bean>
<mongo:mapping-converter id="converter" />
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
	<constructor-arg ref="mongoDbFactory" />
	<constructor-arg ref="converter" />
</bean>
<bean id="gridFsTemplate" class="org.springframework.data.mongodb.gridfs.GridFsTemplate">
	<constructor-arg ref="mongoDbFactory" />
	<constructor-arg ref="converter" />
</bean>

     MongoDB  =====> URL的地址

mongodb.uri=mongodb://127.0.0.1:27017/test



你可能感兴趣的:(MongDB 分片+副本集)