码迷,mamicode.com
首页 > 数据库 > 详细

MongoDB基础2 之 复制集篇

时间:2018-07-15 11:12:00      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:自动   ++   proc   var   copy   host   for   vpd   image   

接着上篇接续
在单台服务器资源充分的情况下,可以使用多实例,以便充分使用服务器资源
由于我在虚拟机中做的所以恢复了快照
开启服务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)  //结束进程 但是不会退出数据库释放到当前进程 

技术分享图片
技术分享图片
技术分享图片
技术分享图片

复制集

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 之 复制集篇

标签:自动   ++   proc   var   copy   host   for   vpd   image   

原文地址:http://blog.51cto.com/13660858/2142623

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!