在mongodb的启动时,在数据目录下,会生成一个mongod.lock文件。如果在正常退出时,会清除这个mongod.lock文件,若要是异常退出,在下次启动的时候,会禁止启动,从而保留一份干净的一份副本数据。有人可能会想到删除这个文件,

建议请不要这么做。如果这么做,我们也不知道数据文件是否会损坏,如果mongod.lock文件阻止mongod的启动,请对数据文件进行修复,而不是简单的删除该文件。而这里的mongod.lock文件存放的是:启动mongod的进程号.

这里提到了"正常退出",详细介绍如下:

MongoDB 提供几种关闭服务的命令,具体为以下:

一 使用 Crtl+C 关闭

 [mongo@redhatB data]$ mongod --dbpath=/database/mongodb/data/ --logpath=/var/applog/mongo_log/mongo.log --logappend --port=27017 --journal > start_mongo.log 2>&1
光标:键入 Crtl+C 关闭

备注:如果以前台方式启动 MongoDB 服务,使用“Crtl+C” 服务会关闭,这种关闭方式会等待
              当前进行中的的操作完成,所以依然是干净的关闭方式。

二 使用数据库命令关闭
--2.1 开启服务

 [mongo@redhatB data]$ mongod -f /database/mongodb/data/mongodb_27017.conf
forked process: 18155
all output going to: /var/applog/mongo_log/mongo.log
child process started successfully, parent exiting

--2.2 登陆数据库

 [mongo@redhatB data]$ mongo
MongoDB shell version: 2.2.1
connecting to: test

--2.3 关闭 MongoDB 服务

 > use admin;
switched to db admin

db.shutdownServer();
Wed Nov 14 06:07:33 DBClientCursor::init call() failed
Wed Nov 14 06:07:33 query failed : admin.$cmd { shutdown: 1.0 } to: 127.0.0.1:27017
server should be down...
Wed Nov 14 06:07:33 trying reconnect to 127.0.0.1:27017
Wed Nov 14 06:07:33 reconnect 127.0.0.1:27017 failed couldnt connect to server 127.0.0.1:27017

三 使用 mongod 命令关闭

 [mongo@redhatB data]$ mongod  --shutdown  --dbpath /database/mongodb/data/
killing process with pid: 17747

备注:mongod 命令的 shutdown 选项能干净的关闭 MongoDB 服务。

四 使用 kill 命令
--4.1 查看 mongo 相关进程

 [mongo@redhatB data]$ ps -ef | grep mongo
root     17573 14213  0 05:10 pts/1    00:00:00 su - mongo
mongo    17574 17573  0 05:10 pts/1    00:00:00 -bash
mongo    18288     1  0 06:12 ?        00:00:00 mongod -f /database/mongodb/data/mongodb_27017.conf
mongo    18300 17574  6 06:13 pts/1    00:00:00 ps -ef
mongo    18301 17574  0 06:13 pts/1    00:00:00 grep mongo

--4.2 kill mongo 服务进程

 [mongo@redhatB data]$ kill 18288

[mongo@redhatB data]$ ps -ef | grep pmon
mongo    18304 17574  0 06:13 pts/1    00:00:00 grep pmon

备注:可以使用操作系统的 kill 命令,给 mongod 进程发送 SIGINT 或 SIGTERM 信号,
             即 "kill -2 PID," 或者 “kill -15 PID“。
      
            建议不要使用 ”kill -9 pid“,因为如果 MongoDB 运行在没开启日志(--journal)的情况下,
            可能会造成数据损失。

  在mongo库中,oplog是数据存放和数据主从同步的,而在本地库local中,$ show collections 下,有个oplog.rs 的collection,解释下其中的字段:

     { ts : ..., op: ..., ns: ..., o: ... o2: ...  }

上面就是一条oplog信息,复制机制就是通过这些信息来进行节点间的数据同步并维护数据一致性的,其中:


    ts:8字节的时间戳,由4字节unix timestamp + 4字节自增计数表示。
        这个值很重要,在选举(如master宕机时)新primary时,会选择ts最大的那个secondary作为新primary。
    op:1字节的操作类型,例如i表示insert,d表示delete。
    ns:操作所在的namespace。
    o:操作所对应的document,即当前操作的内容(比如更新操作时要更新的的字段和值)
    o2: 在执行更新操作时的where条件,仅限于update时才有该属性

其中op,可以是如下几种情形之一:


     "i": insert
     "u": update
     "d": delete
     "c": db cmd
     "db":声明当前数据库 (其中ns 被设置成为=>数据库名称+ '.')
     "n":  no op,即空操作,其会定期执行以确保时效性 

转载自:https://www.cnblogs.com/unqiang/p/4113161.html

mongodb mongod.lock文件及oplog文件的更多相关文章

  1. mongodb的mongod.lock文件及oplog文件

    在mongodb的启动时,在数据目录下,会生成一个mongod.lock文件.如果在正常退出时,会清除这个mongod.lock文件,若要是异常退出,在下次启动的时候,会禁止启动,从而保留一份干净的一 ...

  2. 实验mongodb使用gridfs存放一个大文件

    1.启动mongoDB 2.使用gridfs存放大文件 3.观察fs.chunks和fs.files的情况 命令 db.fs.chunks.find()查到的是一些二进制文件:

  3. 【荐】PHP操作MongoDB GridFS 存储文件,如图片文件

    GridFS是MongoDB的一个内置功能,它提供一组文件操作的API以利用MongoDB存储文件,GridFS的基本原理是将文件保存在两个Collection中,一个保存文件索引,一个保存文件内容, ...

  4. mongodb mongod 启动参数

    我们可以通过mongod --help查看mongod的所有参数说明,以下是各参数的中文解释. 基本配置 –quiet# 安静输出 –port arg# 指定服务端口号,默认端口27017 –bind ...

  5. 源码 mongod.lock shutdown

    https://github.com/mongodb/mongo/blob/master/src/mongo/db/db.cpp 1. 退出原理 /proc/" << pid 判 ...

  6. Error starting mongod. /var/run/mongodb/mongod.pid exists.启动mongodb报错

    linux上安装mongodb,启动时报上面的错,解决如下: 解决方法: 1.删除mongod.pid文件 rm -rf /var/run/mongodb/mongod.pid 2.修改/tmp/mo ...

  7. mongodb mongod 参数解释

    基本配置----------------------------------------------------------------------------------quiet # 安静输出-- ...

  8. [问题解决] initAndListen: 10309 Unable to create/open lock file: /data/db/mongod.lock

    错误: 在linux下开启mongoDB的 $ >bin: ./mongod 时报错:initAndListen: 10309 Unable to create/open lock file: ...

  9. 深入理解linux关闭文件和删除文件

    背景介绍 最近看了linux系统编程(linux system programming)一书,结合深入理解linux内核(understanding the linux kernel)一书,深入理解了 ...

随机推荐

  1. P1308(字符串类,处理字符串查找)

    题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给 ...

  2. FireDAC 如何按整型(Byte)读取 MySQL TinyInt(1) 类型字段?

    最近使用 MySQL 发现 FireDAC 中查询 TinyInt(1) 字段结果是 Boolean 类型,这并不是我想要的结果,而TinyInt(1)的范围是-128-127之间,如何按整型读取呢? ...

  3. 1144: 零起点学算法51——数组中删数(C语言)

    题目: 题目来源WUSTOJ 源代码: #include<stdio.h> int main() { int n, m, i, a[20]; while (scanf("%d&q ...

  4. Golang高并发抓取HTML图片

    Golang高并发抓取HTML图片 使用准备 1.安装Golang 2.下载爬虫包 go get -v github.com/hunterhug/marmot/util go get -v githu ...

  5. Spring Cloud Alibaba学习笔记(2) - Nacos服务发现

    1.什么是Nacos Nacos的官网对这一问题进行了详细的介绍,通俗的来说: Nacos是一个服务发现组件,同时也是一个配置服务器,它解决了两个问题: 1.服务A如何发现服务B 2.管理微服务的配置 ...

  6. js 遍历树的层级关系的实现

    1.遍历树的层级关系 1)先整理数据 2)找到id和数据的映射关系 3)然后找到父节点的数据,进行存储 test() { const list = [ { id: ", parentId: ...

  7. mysql database和schema区别

    在MySQL的语法操作中(MySQL5.0.2之后),可以使用CREATE DATABASE和CREATE SCHEMA来创建数据库,两者在功能上是一致的.在使用MySQL官方的MySQL管理工具My ...

  8. 【转载】 C#通过File类实现文件拷贝复制的功能

    在Windows系统的使用过程中,一个较常使用的功能就是文件的复制拷贝操作,其实在C#开发中,也可以使用File类库中的Copy方法来实现文件的拷贝,支持设定原文件地址,以及拷贝复制后的文件存放路径. ...

  9. thinkphp中 select() 和find() 方法的区别

    $about=M('document'); $abouts=$about->where('id=2')->select(); $abouts2=$about->where('id=2 ...

  10. cmd中for的用法

    在cmd窗口输入for /?后的原文,被我自己“翻译”了一下,更像人话了. 推荐去https://www.cnblogs.com/cbugs/p/8992059.html这篇部落格里去看看,讲的更好. ...