MongoDB基础2 之 复制集篇

本文介绍如何在单台服务器上配置MongoDB多实例,包括数据目录与日志文件的设置,以及通过不同端口运行多个MongoDB实例的方法。此外,还详细讲解了复制集的搭建过程,包括配置文件的修改、复制集节点的初始化、添加和删除等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接着上篇接续

在单台服务器资源充分的情况下,可以使用多实例,以便充分使用服务器资源
由于我在虚拟机中做的所以恢复了快照
开启服务systemctl start mongod.service
netstat -ntap
>show dbs   //查看数据库
admin  0.000GB
local  0.000GB
config  0.000GB
>use school  //进入school 虽然但是有集合了后会自动创建
> for(var i=1;i<=100;i++)db.users.insert({"id":i,"name":"jack"+i})  //先创建100个玩玩
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
school  0.000GB  //就会自动创建
> show collections  //查看集合
users
> show tables   //也是查看集合
users
> db.users.find()  //查看集合内容
{ "_id" : ObjectId("5b49ab2a0bd68f9074b77bb4"), "id" : 1, "name" : "jack1" }
此处省略··········
db.copyDatabase("school","sheare")  //把school 复制成shearer //内容一样
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
school  0.000GB
sheare  0.000GB
克隆对方的集合
创建多实例
mkdir -p /data/mongodb/mongodb2    //创建数据目录
cd /data/mongodb/ 
mkdir logs
touch logs/mongodb2.log    //创建日志文件
cd logs/
chmod 777 *.log     //赋予权限
和前面一样
克隆数据
进入到 mongo --port 27018
> show dbs  //此时完全是独立的数据
admin   0.000GB
config  0.000GB
local   0.000GB
创建多实例-----------
vim mongod2.conf
systemLog:
省略···
path: /data/mongodb/logs/mongodb2.log //手动添加日志文件路径
省略····
storage:
  dbPath: /data/mongodb/mongodb2 //定义数据文件目录
net:
  port: 27018  //修改端口号
mongod -f /etc/mongod2.conf //开启多实例2
netstat -ntap | grep 27018
tcp        0      0 0.0.0.0:27018           0.0.0.0:*               LISTEN      9870/mongod 
> db.runCommand({"cloneCollection":"school.user","from":"192.168.100.20.27017"}) 
//复制 school(数据库中的)uesr(集合)的数据。来自192.168.100.20 27017 里面的数据
--------------进程管理-----------
> db.currentOp()  //当前进程
省略·····
"currentOpTime" : "2018-07-14T23:01:50.596+0800",
            "opid" : 2206,   //进程编号
> db.killOp(2206)  //结束进程 但是不会退出数据库释放到当前进程 

MongoDB基础2 之 复制集篇
MongoDB基础2 之 复制集篇
MongoDB基础2 之 复制集篇
MongoDB基础2 之 复制集篇

复制集
mkdir -p /data/mongodb/mongodb{2,3,4}  //同时创建多个文件数据存放目录
mkdir -p /data/mongodb/logs  //为其创建数据日志文件
touch /data/mongodb/logs/mongodb{2,3,4}.log //同时创建多个数据日志文件
chmod 777 /data/mongodb/logs/*.log  //开放权限
vim /etc/mongod.conf  //修改配置文件开启用户
replication: //开启用户
        replSetName: abc 
mongod -f /etc/mongod.conf --shutdown  //关闭服务  //正对于莫一个实例 在有多实例的情况下 
mongod -f /etc/mongod.conf  //开启服务
 cp -p /etc/mongod.conf /etc/mongod2.conf   //创建多端口实现复制集
 mongod -f /etc/mongod4.conf  //挨个开启实例
 netstat -nata  //查看有没有开启 若有错则检查配置文件日志存放路径以及数据出存放路径
 mongo --port 27018  //挨个测试一下是否能近入
 mongo //进入默认 27017 定义复制集
复制集配置
 cfg={"_id":"abc","members":[{"_id":0,"host":"192.168.10.5:27017"},{"_id":1,"host":"192.168.10.5:27018"},{"_id":2,"host":"192.168.10.5:27019"}]}  //定义复制集 节点数据
 #初始化配置时保证从节点没有数据
> rs.initiate(cfg)
 #添加节点
abc:PRIMARY> rs.add("192.168.10.5:27020")

#删除节点
abc:PRIMARY> rs.remove("192.168.10.5:27019")

------------------故障转移切换-----------------------

ps aux | grep  mongod  //查看当前进程 就有4个
#手动切换
abc:PRIMARY> rs.freeze(30)      //暂停30s不参与选举

abc:PRIMARY> rs.stepDown(60,30)   //交出主节点位置,维持从节点状态不少于60秒,等待30秒使主节点和从节点日志同步

MongoDB基础2 之 复制集篇
MongoDB基础2 之 复制集篇
MongoDB基础2 之 复制集篇
MongoDB基础2 之 复制集篇
MongoDB基础2 之 复制集篇
MongoDB基础2 之 复制集篇
MongoDB基础2 之 复制集篇
MongoDB基础2 之 复制集篇
MongoDB基础2 之 复制集篇
MongoDB基础2 之 复制集篇

转载于:https://blog.51cto.com/13660858/2142623

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值