mongodb分片集群
第一章
1.mongodb 分片集群解释和目的
一组Mongodb复制集,就是一组mongod进程,这些进程维护同一个数据集合。复制集提供了数据冗余和高等级的可靠性,这是生产部署的基础。
第二章
1.实验环境
centos7 3台服务器
192.168.1.195 2G内存
192.168.1.196 2G内存
192.168.1.197 2G内存
2.初始化环境(三台都操作)
yum -y install ntp
systemctl enable ntpd
systemctl start ntpd
ntpdate -u cn.pool.ntp.org
hwclock --systohc
timedatectl set-timezone Asia/Shanghai
# 关闭防火墙 Selinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
3.系统文件数设置
cat >> /etc/security/limits.conf <<EOF
* soft nofile 102400
* hard nofile 409600
* soft nproc 2048
* hard nproc 4096
EOF
echo never >> /sys/kernel/mm/transparent_hugepage/enabled
echo never >> /sys/kernel/mm/transparent_hugepage/defrag
第三章(三台都需要操作)
1.下载mongodb包
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.6.5.tgz
2.创建mongodb用户
useradd -M -u 8000 -s /sbin/nologin mongo
3.下载文件解压缩
mkdir /data/ 然后解压MongoDB二进制包到/data目录下,并改名为mongo
3-1.配置mongo启动变量
vi /etc/profile
export MONGODB_HOME=/data/mongodb
export PATH=$MONGODB_HOME/bin:$PATH
source /etc/profile
4.配置环境
mkdir -p /data/mongo/config
mkdir -p /data/mongo/data/server
mkdir -p /data/mongo/log/server
mkdir -p /data/mongo/log/mongos
for i in {1..3};do mkdir -p /data/mongo/data/shard$i; done
for i in {1..3};do mkdir -p /data/mongo/log/shard$i; done
5.configsvr配置文件
#不同机器更改bind_ip
cat >> /data/mongo/config/config.conf << EOF
bind_ip=192.168.1.195
dbpath=/data/mongo/data/server
pidfilepath=/data/mongo/mongo.pid
logpath=/data/mongo/log/server/mongodb.log
logappend=true
journal = true
port=27000
fork=true
configsvr=true
logRotate=rename
#副本集名字
replSet=damowang
#最大连接数
maxConns=20000
EOF
6.权限更改
chown -R mongo:mongo /data/mongo
7.启动configsvr
/data/mongo/bin/mongod -f config/config.conf
8.初始化configsvr (单台机器操作)
#登录其中任意一台机器
/data/mongo/bin/mongo --host 192.168.10.203 --port 27000
config = {_id : "damowang", members : [{_id : 0, host : "192.168.1.195:27000"}, {_id : 1, host : "192.168.1.196:27000"}, {_id : 2, host : "192.168.1.197:27000"}]}
#初始化副本集
rs.initiate(config)
第四章 (三台机器都操作)
1.配置shard
cat >> /data/mongo/config/shard1.conf << EOF
#不同机器bind_ip改变
bind_ip=192.168.1.195
#更改为对应shard
dbpath=/data/mongo/data/shard1
pidfilepath=/data/mongo/shard1.pid
logpath=/data/mongo/log/shard1/mongodb.log
logappend=true
journal = true
#更改为对应shard端口
port=27001
fork=true
logRotate=rename
shardsvr=true
#副本集名称
replSet=shard1
#最大连接数
maxConns=20000
EOF
2.权限更改
chown -R mongo:mongo /data/mongo
3.启动shardsvr
/data/mongo/bin/mongod -f config/shard1.conf
4.初始化shardsvr
#登录其中任意一台机器
/data/mongo/bin/mongo --host 192.168.1.195 --port 27001
config = {_id : "shard1", members : [{_id : 0, host : "192.168.1.195:27001"}, {_id : 1, host : "192.168.1.196:27001"}, {_id : 2, host : "192.168.1.197:27001", arbiterOnly: true}]}
rs.initiate(config)
第五章
1.mongos 配置文件初始化
cat >> /data/mongo/config/mongos.conf << EOF
#不同机器更改bind_ip
bind_ip=192.168.1.195
pidfilepath=/data/mongo/mongos.pid
logpath=/data/mongo/log/mongos/mongos.log
logappend=true
logRotate=rename
#mongos监听端口
port=28000
fork=true
#damowang 为 configsvr 的副本集名称
configdb=damowang/192.168.1.195:27000,192.168.1.196:27000,192.168.1.197:27000
#最大连接数
maxConns=20000
EOF
2.权限更改
chown -R mongo:mongo /data/mongo
3.启动mongos
/data/mongo/bin/mongos -f config/mongos.conf
4.启用mongos
#登录其中任意一台机器
bin/mongo --host 192.168.1.195 --port 28000
#进入客户端,切换用户
use admin
#添加分片
sh.addShard("shard1/192.168.1.195:27001,192.168.1.196:27001,192.168.1.197:27001")
sh.addShard("shard1/192.168.1.195:27002,192.168.1.196:27002,192.168.1.197:27002")
sh.addShard("shard1/192.168.1.195:27003,192.168.1.196:27003,192.168.1.197:27003")
#查看集群状态
sh.status()
第六章
1.配置shard分片
#登录任意mongos
bin/mongo --host 192.168.10.203 --port 28000
#切换admin用户
use admin
#对指定库 test1 开启分片
sh.enableSharding("test1")
# 对test库下的 person collection 开启hash模式分片
sh.shardCollection( "test1.person", { "_id": "hashed" } )
# 查看分片状态
sh.status()
#如果分片原有数据,必先建索引,再指定分片键
sh.enableSharding("new2")
use new2
db.user2.createIndex( { "username": 1 } )
sh.shardCollection( "new2.user2", { "username": 1 } )
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构