`

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 rs0
                                    mongo 连接到活动节点
                                   rs.add("host:27020")
                                   rs.status(),直接到同步完成
                         通过数据库快照(--fastsync)和 和和 和oplog增加节点
                                   cp -r /data/rs/r0-3 /data/rs0-4(注意,需要在停止服务的时候进行复制)
                                     ./mongod --port 27021 --dbpath /data/rs/rs0-4 --replSet rs0
                                    mongo 连接到活动节点
                                   rs.add("host:27020")
                                   rs.status(),直接到同步完成
                                      
  • 减少节点
                    登录到活动节点,执行rs.remove("host:port"),然后使用rs.status()查看复制集状态




                    
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics