mongoDB副本集和分片
MongoDB的副本集是一组维护相同数据集的MongoDB服务器。副本集有一个主节点(primary)和多个从节点(secondary),从节点可以自动提升为新的主节点。分片是将数据分散到不同服务器的过程,用于支持非常大的数据集和高吞吐量的操作。
副本集配置示例(假设有三个服务器,地址分别为mongodb1.example.net, mongodb2.example.net, mongodb3.example.net):
- 在每个服务器上启动mongod实例,指定
--replSet
参数。
mongod --port 27017 --dbpath /srv/mongodb/db0 --replSet rs0
mongod --port 27017 --dbpath /srv/mongodb/db1 --replSet rs0
mongod --port 27017 --dbpath /srv/mongodb/db2 --replSet rs0
- 连接到其中一个服务器,初始化副本集。
rs.initiate()
- 添加副本集成员。
rs.add("mongodb2.example.net:27017")
rs.add("mongodb3.example.net:27017")
分片配置示例(假设有三个分片服务器,地址分别为shard1.example.net, shard2.example.net, shard3.example.net):
- 配置分片服务器。
mongod --shardsvr --port 27017 --dbpath /srv/mongodb/db0 --replSet shard0
mongod --shardsvr --port 27017 --dbpath /srv/mongodb/db1 --replSet shard1
mongod --shardsvr --port 27017 --dbpath /srv/mongodb/db2 --replSet shard2
- 启动配置服务器。
mongod --configsvr --port 27017 --dbpath /srv/mongodb/configdb
- 启动路由服务器。
mongos --port 27017 --configdb shard1.example.net:27017
- 将分片服务器添加到副本集。
rs.initiate()
rs.add("shard2.example.net:27017")
- 通过mongos将分片添加到集群。
sh.addShard("shard1/shard1.example.net:27017")
sh.addShard("shard2/shard2.example.net:27017")
- 对集合启用分片。
sh.enableSharding("database_name")
- 为集合指定分片键。
sh.shardCollection("database_name.collection_name", {"shard_key": 1})
这些命令只是配置副本集和分片的基本步骤,实际配置可能需要考虑更多的配置选项,如安全性、网络配置等。
评论已关闭