日期:2014-05-16  浏览次数:20351 次

Mongodb学习笔记(二)

?

  • 备份
    • 停机拷贝
    • mongodump/mongorestore
    • fsync
? ? ? ? ? ? ? ? ? ?> use admin
> db.runCommand({"fsync":1,"lock":1})
{
??????? "info" : "now locked against writes, use db.fsyncUnlock() to unlock",
??????? "seeAlso" : "http://dochub.mongodb.org/core/fsynccommand",
??????? "ok" : 1
}
锁定后所有对数据库的写操作全部被会阻塞,读取操作不会受影响,此时可以进行文件拷贝进行备份,完成后执行
> db.$cmd.sys.unlock.findOne();
{ "ok" : 1, "info" : "unlock requested" }
> db.currentOp();
{ "inprog" : [ ] }? ? ??
解锁,写入正常。
    • 修复
? ? ? ? ? ? ? ? ? ? 未正常停止重后启应该修复,使用--repair参数进行启动
? ? ? ? ? ? ? ? ? ? 运行中数据库的修复,db.repairDatabase(),使用程序{"repairDatabase":1}
  • 复制
    • 主从复制
? ? ? ? ? ? ? ? ? ? 新版本已经不在推荐,
    • ? 复制集(Replica Sets)
? ? ? ? ? ? ? ? ? ? ? 副本集没有主从节点之分,在同一时间多个节点总有一个活跃节点和多个备份节点,当其中一个节点出故障时,有其它的节点会自动升为活跃节点。
? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? test环境复制集部署
      1. 创建不同的实例目录
? ? ??????????????????????????mkdir -p /data/rs/rs0-0 /data/rs/rs0-1 /data/rs/rs0-2
      1. 分别带参数启动实例rs.initiate()
? ? ??????????????????????????./mongod --port 27017 --dbpath /data/rs/rs0-0 --replSet rs0
? ? ??????????????????????????./mongod --port 27018 --dbpath /data/rs/rs0-1 --replSet rs0
? ? ??????????????????????????./mongod --port 27019 --dbpath /data/rs/rs0-2 --replSet rs0

? ? ? ? ? ? ? ? ? ? ? ? ? ? 注意:操作系统主机名一定要在/etc/hosts里加入对应的配置,否则下面的操作会报错
      1. 初始化主复制
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?使用mongo连接到其中一个实例,执行
???????????????????????????????rs.initiate()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?查看一下状态
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?rs.status()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?加入其它成员
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?rs.add("host:27018")
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?rs.add("host:27019")
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?查看状态? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
      1. 测试
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 在此时,只有一个是活动节点,其它是备份节点,在活动节点执行db.test.insert({"x":1}),但是此的备份节点是不能读写的,连接其中备份节点,执行
? ? ? ? ? ? db.slaveOk(),然后执行db.test.find(),刚才插入的文档能找出来,ok,基本完成。

? ? ?????????????????????
  • 增加节点
? ? ?????????????????????通过oplog增加节点?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?mkdir -p /data/rs/rs0-3
? ? ???????????????????????????????./mongod --port 27020 --dbpath /data/rs/rs0-3 --replSet