MongoDB集群配置:副本集与分片详解
作者:手机用户2502857113 | 来源:互联网 | 2024-12-27 08:02
本文详细介绍了如何在MongoDB中配置副本集(ReplicaSets)和分片(Sharding),并提供了具体的步骤和命令,帮助读者理解并实现高可用性和水平扩展的MongoDB集群。
### 环境准备 为了搭建一个完整的MongoDB集群,首先需要准备三台服务器,并确保它们之间可以相互通信。 #### 配置副本集1 (shard1) 我们将为第一个分片配置一个包含三个节点的副本集。每个节点将运行在不同的服务器上,并使用相同的端口27017。 - **Server A**: ```bash /app/mongo/mongodb/bin/mongod --shardsvr --replSet shard1 --port 27017 --dbpath /app/mongo/data/shard1_1 --logpath /app/mongo/data/shard1_1/shard1_1.log --logappend --fork ``` - **Server B**: ```bash /app/mongo/mongodb/bin/mongod --shardsvr --replSet shard1 --port 27017 --dbpath /app/mongo/data/shard1_2 --logpath /app/mongo/data/shard1_2/shard1_2.log --logappend --fork ``` - **Server C**: ```bash /app/mongo/mongodb/bin/mongod --shardsvr --replSet shard1 --port 27017 --dbpath /app/mongo/data/shard1_3 --logpath /app/mongo/data/shard1_3/shard1_3.log --logappend --fork ``` 接下来,连接到任意一台机器的27017端口,初始化副本集shard1。 ```bash /app/mongo/mongodb/bin/mongo --port 27017 ``` 在Mongo shell中执行以下命令来初始化副本集配置: ```Javascript cOnfig= {_id: 'shard1', members: [{_id: 0, host: '132.42.33.212:27017'}, {_id: 1, host: '132.42.33.213:27017'}, {_id: 2, host: '132.42.33.214:27017'}]} rs.initiate(config) ``` #### 配置副本集2 (shard2) 同样的方法,为第二个分片配置另一个包含三个节点的副本集,但这次使用端口27018。 - **Server A**: ```bash /app/mongo/mongodb/bin/mongod --shardsvr --replSet shard2 --port 27018 --dbpath /app/mongo/data/shard2_1 --logpath /app/mongo/data/shard2_1/shard2_1.log --logappend --fork ``` - **Server B**: ```bash /app/mongo/mongodb/bin/mongod --shardsvr --replSet shard2 --port 27018 --dbpath /app/mongo/data/shard2_2 --logpath /app/mongo/data/shard2_2/shard2_2.log --logappend --fork ``` - **Server C**: ```bash /app/mongo/mongodb/bin/mongod --shardsvr --replSet shard2 --port 27018 --dbpath /app/mongo/data/shard2_3 --logpath /app/mongo/data/shard2_3/shard2_3.log --logappend --fork ``` 同样地,连接到任意一台机器的27018端口,初始化副本集shard2。 ```bash /app/mongo/mongodb/bin/mongo --port 27018 ``` 在Mongo shell中执行以下命令来初始化副本集配置: ```Javascript cOnfig= {_id: 'shard2', members: [{_id: 0, host: '132.42.33.212:27018'}, {_id: 1, host: '132.42.33.213:27018'}, {_id: 2, host: '132.42.33.214:27018'}]} rs.initiate(config) ``` #### 配置配置服务器 (Config Servers) 配置服务器用于存储集群的元数据信息。 ```bash /app/mongo/mongodb/bin/mongod --configsvr --dbpath /app/mongo/data/config --port 20000 --logpath /app/mongo/data/config/config.log --logappend --fork ``` #### 配置路由进程 (Route Processes) 路由进程负责将客户端请求分发到适当的分片。 ```bash /app/mongo/mongodb/bin/mongos --configdb 132.42.33.212:20000,132.42.33.213:20000,132.42.33.214:20000 --port 30000 --chunkSize 1 --logpath /app/mongo/data/mongos.log --logappend --fork ``` #### 配置分片集群 通过连接到任意一台机器的30000端口,进入Mongo shell并切换到admin数据库,开始配置分片环境。 ```bash /app/mongo/mongodb/bin/mongo --port 30000 use admin ``` 添加分片: ```Javascript db.runCommand({addShard: 'shard1/132.42.33.212:27017,132.42.33.213:27017,132.42.33.214:27017'}) db.runCommand({addShard: 'shard2/132.42.33.212:27018,132.42.33.213:27018,132.42.33.214:27018'}) ``` 启用分片功能: ```Javascript db.runCommand({enableSharding: 'test'}) db.runCommand({shardCollection: 'test.users', key: {_id: 1}}) ``` #### 验证分片 最后,验证分片是否正常工作。连接到任意一台机器的30000端口,进入Mongo shell并切换到test数据库。 ```bash use test ``` 插入一些测试数据: ```Javascript for(var i = 1; i <= 200000; i++) { db.users.insert({id: i, addr_1: 'beijing', addr_2: 'shanghai'}) } ``` 检查集合的状态: ```Javascript db.users.stats() ```
推荐阅读
本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ...
[详细]
蜡笔小新 2024-12-27 13:14:08
本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ...
[详细]
蜡笔小新 2024-12-27 19:10:10
Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ...
[详细]
蜡笔小新 2024-12-28 09:44:49
本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ...
[详细]
蜡笔小新 2024-12-27 15:06:12
本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ...
[详细]
蜡笔小新 2024-12-27 11:26:39
本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ...
[详细]
蜡笔小新 2024-12-27 10:18:13
作为一名新手,您可能会在初次尝试使用Eclipse进行Struts开发时遇到一些挑战。本文将为您提供详细的指导和解决方案,帮助您克服常见的配置和操作难题。 ...
[详细]
蜡笔小新 2024-12-27 09:57:58
nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ...
[详细]
蜡笔小新 2024-12-28 13:00:24
本文详细介绍了 GWT 中 PopupPanel 类的 onKeyDownPreview 方法,提供了多个代码示例及应用场景,帮助开发者更好地理解和使用该方法。 ...
[详细]
蜡笔小新 2024-12-28 10:07:27
本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ...
[详细]
蜡笔小新 2024-12-28 09:46:23
Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ...
[详细]
蜡笔小新 2024-12-28 08:54:34
本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ...
[详细]
蜡笔小新 2024-12-27 19:31:05
ImmutableX is set to spearhead the evolution of Web3 gaming, with its innovative technologies and strategic partnerships driving significant advancements in the industry. ...
[详细]
蜡笔小新 2024-12-27 08:55:17
本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ...
[详细]
蜡笔小新 2024-12-26 19:14:29
在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ...
[详细]
蜡笔小新 2024-12-26 16:16:06
手机用户2502857113
这个家伙很懒,什么也没留下!