mogodb 复制集加分片环境搭建

本文详细介绍了如何在特定IP地址布局下规划并实施MongoDB的分片集群与复制集环境,包括目录创建、节点启动、复制集配置及路由服务器设置等关键步骤。
mongodb分片+复制集环境规划:


192.168.0.105、
192.168.0.106、
192.168.0.107、
192.168.0.108、


192.168.0.105   mongod  shard1_1 40000  (rs0-primayr)
               mongod  shard2_3 40005  (rs2-arbiter)
               mongod  config1  50000              
192.168.0.106   mongod  shard1_2 40001  (rs0-secondary)
               mongod  config2  50000
               mongod  mongos1  60000
192.168.0.107   mongod  shard2_1 40003  (rs1-primayr)
               mongod  shard1_3 40002  (rs0-arbiter)
               mongod  mongos2  60000              
192.168.0.108   mongod  shard2_2 40004  (rs1-secondary)
               mongod  config3  50000
               mongod  mongos3  60000


192.168.0.105上创建目录:
mkdir -p /appl/data/shard1_1
mkdir -p /appl/data/shard1_1/log
mkdir -p /appl/data/shard2_3
mkdir -p /appl/data/shard2_3/log
mkdir -p /appl/data/config1
mkdir -p /appl/data/config1/log


192.168.0.106上创建目录:
mkdir -p /appl/data/shard1_2
mkdir -p /appl/data/shard1_2/log
mkdir -p /appl/data/config2
mkdir -p /appl/data/config2/log
mkdir -p /appl/data/mongos


192.168.0.107上创建目录:
mkdir -p /appl/data/shard2_1
mkdir -p /appl/data/shard2_1/log
mkdir -p /appl/data/shard1_3
mkdir -p /appl/data/shard1_3/log
mkdir -p /appl/data/mongos


192.168.0.108上创建目录:
mkdir -p /appl/data/shard2_2
mkdir -p /appl/data/shard2_2/log
mkdir -p /appl/data/config3
mkdir -p /appl/data/config3/log
mkdir -p /appl/data/mongos


复制集rs0启动
192.168.0.105:
/appl/mongo/bin/mongod  --shardsvr  --replSet  rs0  --port  40000  --dbpath /appl/data/shard1_1 --logpath /appl/data/shard1_1/log/shard1_1.log  --logappend --fork 
配置文件
rs0_1.conf
dbpath=/appl/data/shard1_1
logpath=/appl/data/shard1_1/log/shard1_1.log
journal=true
port=40000
replset=rs0
oplogSize = 5000M
fork = true
directoryperdb = true
***************************************************************
dbpath=/appl/data/shard1_1
logpath=/appl/data/shard1_1/log/shard1_1.log
journal=true
port=40000
replSet=rs0
oplogSize = 5000
fork = true
*****************************************************************
/appl/mongo/bin/mongod -f /appl/mongo/rs0_1.conf


192.168.0.106:
/appl/mongo/bin/mongod  --shardsvr  --replSet  rs0  --port  40001  --dbpath /appl/data/shard1_2 --logpath /appl/data/shard1_2/log/shard1_2.log  --logappend --fork 


rs0_2.conf
dbpath=/appl/data/shard1_2
logpath=/appl/data/shard1_2/log/shard1_2.log
journal=true
port=40001
replSet=rs0
oplogSize = 5000
fork = true


/appl/mongo/bin/mongod -f /appl/mongo/rs0_2.conf


192.168.0.107:
/appl/mongo/bin/mongod  --shardsvr  --replSet  rs0  --port  40002  --dbpath /appl/data/shard1_3 --logpath /appl/data/shard1_3/log/shard1_3.log  --logappend --fork 


rs0_3.conf
dbpath=/appl/data/shard1_3
logpath=/appl/data/shard1_3/log/shard1_3.log
journal=true
port=40002
replSet=rs0
oplogSize = 5000
fork = true


/appl/mongo/bin/mongod -f /appl/mongo/rs0_3.conf




配置复制rs0
config = {_id: 'rs0', members: [
{_id: 0, host: '192.168.0.105:40000'}, 
{_id: 1, host: '192.168.0.106:40001'}, 
{_id: 2, host: '192.168.0.107:40002','arbiterOnly':true}] 

        
 rs.initiate(config)        


复制集rs1启动
192.168.0.107:
/appl/mongo/bin/mongod  --shardsvr  --replSet  rs1  --port  40003  --dbpath /appl/data/shard2_1 --logpath /appl/data/shard2_1/log/shard2_1.log  --logappend --fork 
配置文件
rs1_1.conf
dbpath=/appl/data/shard2_1
logpath=/appl/data/shard2_1/log/shard2_1.log
journal=true
port=40003
replSet=rs1
oplogSize = 5000
fork = true


/appl/mongo/bin/mongod -f /appl/mongo/rs1_1.conf


192.168.0.108:
/appl/mongo/bin/mongod  --shardsvr  --replSet  rs1  --port  40004  --dbpath /appl/data/shard2_2 --logpath /appl/data/shard2_2/log/shard2_2.log  --logappend --fork 
配置文件
rs1_2.conf
dbpath=/appl/data/shard2_2
logpath=/appl/data/shard2_2/log/shard2_2.log
journal=true
port=40004
replSet=rs1
oplogSize = 5000
fork = true


/appl/mongo/bin/mongod -f /appl/mongo/rs1_2.conf




192.168.0.105:
/appl/mongo/bin/mongod  --shardsvr  --replSet  rs1  --port  40005  --dbpath /appl/data/shard2_3 --logpath /appl/data/shard2_3/log/shard2_3.log  --logappend --fork 
配置文件
rs1_3.conf
dbpath=/appl/data/shard2_3
logpath=/appl/data/shard2_3/log/shard2_3.log
journal=true
port=40005
replSet=rs1
oplogSize = 5000
fork = true


/appl/mongo/bin/mongod -f /appl/mongo/rs1_3.conf


配置复制rs1
config = {_id: 'rs1', members: [
{_id: 0, host: '192.168.0.107:40003'}, 
{_id: 1, host: '192.168.0.108:40004'}, 
{_id: 2, host: '192.168.0.105:40005','arbiterOnly':true}] 

rs.initiate(config)  




启动配置节点:
192.168.0.105:


/appl/mongo/bin/mongod  --configsvr  --dbpath  /appl/data/config1  --port  50000  --logpath /appl/data/config1/log/config1.log --logappend --fork
 
config_1.conf
dbpath=/appl/data/config1
logpath=/appl/data/config1/log/config1.log
journal=true
port=50000
oplogSize = 5000
fork = true
configsvr=true


/appl/mongo/bin/mongod -f /appl/mongo/config_1.conf


192.168.0.106:


/appl/mongo/bin/mongod  --configsvr  --dbpath  /appl/data/config2 --port  50000  --logpath /appl/data/config2/log/config2.log --logappend --fork
 
config_2.conf
dbpath=/appl/data/config2
logpath=/appl/data/config2/log/config2.log
journal=true
port=50000
oplogSize = 5000
fork = true
configsvr=true


/appl/mongo/bin/mongod -f /appl/mongo/config_2.conf


192.168.0.108:


/appl/mongo/bin/mongod  --configsvr  --dbpath  /appl/data/config3 --port  50000  --logpath /appl/data/config3/log/config3.log --logappend --fork
 
config_3.conf
dbpath=/appl/data/config3
logpath=/appl/data/config3/log/config3.log
journal=true
port=50000
oplogSize = 5000
fork = true
configsvr=true


/appl/mongo/bin/mongod -f /appl/mongo/config_3.conf


启动路由服务器:


192.168.0.106:


/appl/mongo/bin/mongos  --configdb 192.168.0.105:50000,192.168.0.106:50000,192.168.0.108:50000  --port  60000   --logpath /appl/data/mongos/mongos.log --logappend --fork


mongos_1.conf


logpath=/appl/data/mongos/mongos.log
port=60000
fork = true
configdb=192.168.0.105:50000,192.168.0.106:50000,192.168.0.108:50000


/appl/mongo/bin/mongos -f /appl/mongo/mongos_1.conf


192.168.0.107:


/appl/mongo/bin/mongos  --configdb 192.168.0.105:50000,192.168.0.106:50000,192.168.0.108:50000  --port  60000   --logpath /appl/data/mongos/mongos.log --logappend --fork


mongos_2.conf


logpath=/appl/data/mongos/mongos.log
port=60000
fork = true
configdb=192.168.0.105:50000,192.168.0.106:50000,192.168.0.108:50000


/appl/mongo/bin/mongos -f /appl/mongo/mongos_2.conf


192.168.0.108:


/appl/mongo/bin/mongos  --configdb 192.168.0.105:50000,192.168.0.106:50000,192.168.0.108:50000  --port  60000   --logpath /appl/data/mongos/mongos.log --logappend --fork


mongos_3.conf


logpath=/appl/data/mongos/mongos.log
port=60000
fork = true
configdb=192.168.0.105:50000,192.168.0.106:50000,192.168.0.108:50000


/appl/mongo/bin/mongos -f /appl/mongo/mongos_3.conf


配置 Shard Cluster


连接到其中一台机器的端口 60000 的 mongos 进程,并切换到 admin 数据库做以下配置
db.runCommand({addshard:"rs0/192.168.0.105:40000,192.168.0.106:40001,192.168.0.107:40002"}); 
db.runCommand({addshard:"rs1/192.168.0.107:40003,192.168.0.108:40004,192.168.0.105:40005"});
























































               
               
               





### MongoDB 复制集与分的配置及使用指南 #### 一、复制集(Replica Set) MongoDB 的复制集是一种高可用性和数据冗余机制,它通过多个节点之间的同步来保障数据的安全性。 - **定义** 复制集由一组 mongod 实例组成,其中一个为主节点(Primary),其余为从节点(Secondary)。主节点负责所有的写操作,而从节点则定期从主节点拉取日志并应用到本地副本[^1]。 - **配置步骤** 配置复制集通常涉及以下几个方面: - 安装和启动 MongoDB 实例。假设我们有三个实例分别运行在 `localhost` 上的不同端口:27017, 27018 和 27019。 ```bash mkdir -p /data/rs0 /data/rs1 /data/rs2 mongod --replSet rs0 --port 27017 --dbpath /data/rs0 --bind_ip localhost & mongod --replSet rs0 --port 27018 --dbpath /data/rs1 --bind_ip localhost & mongod --replSet rs0 --port 27019 --dbpath /data/rs2 --bind_ip localhost & ``` - 初始化复制集。连接至任意一个成员并通过 shell 执行初始化命令: ```javascript rs.initiate({ _id: "rs0", members: [ { _id: 0, host: "localhost:27017" }, { _id: 1, host: "localhost:27018" }, { _id: 2, host: "localhost:27019", arbiterOnly: true } // 可选仲裁者 ] }); ``` - 查看状态以确认配置成功与否: ```javascript rs.status(); ``` #### 二、分(Sharding) 分用于水平扩展 MongoDB 数据库的能力,允许将大型集合分布在多个服务器上。 - **基本概念** 分的核心组件包括路由器(mongos)、配置服务器以及实际存储数据的分节点。其中,路由服务接收客户端请求并将查询转发给合适的分;配置服务器保存元数据信息;分则是具体的数据承载单元[^1]。 - **设置流程** - 启动必要的进程和服务。这里需要至少两个 shard 节点加上独立的 config server 进程组。 ```bash # Config Server Setup (Single Node Example) mongod --configsvr --replSet config-rs --dbpath /data/config --port 27019 & # Shard Servers Initialization mongod --shardsvr --replSet shard-rs0 --dbpath /data/shard0a --port 27017 & mongod --shardsvr --replSet shard-rs0 --dbpath /data/shard0b --port 27018 & # Router Service Activation mongos --configdb config-rs/localhost:27019 --port 27020 & ``` - 添加 shards 并启用 sharding 功能于目标 namespace 下面。 ```javascript use admin; db.runCommand({ addShard : "shard-rs0/localhost:27017,localhost:27018" }); db.enableSharding("test"); // 替换 test 为目标 database 名字 db.runCommand({ shardCollection : "test.collectionName", key : { fieldToDistributeOn : 1 } }); ``` #### 总结 以上介绍了如何搭建基础版的 MongoDB 复制集环境及其简单的分架构部署方式。需要注意的是,在生产环境中还需要考虑更多的安全措施如认证授权、SSL 加密通信等额外配置项[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值