`
xiaoshan5634
  • 浏览: 74125 次
  • 性别: Icon_minigender_1
  • 来自: 东莞
社区版块
存档分类
最新评论

MongoDB

阅读更多

Mongo

适合场景:

网站数据:适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制 及高度伸缩性。

缓存:适合作为信息基础设施的缓存层。在系统重启之后,由Mongo搭建的持久化缓存层可 以避免下层的数据源过载。

大尺寸,低价值的数据:使用传统的关系型数据库存储一些数据时可能会比较昂贵。

高伸缩性的场景:适合由数十或数百台服务器组成的数据库。Mongo的路线图中已经包含 对MapReduce引擎的内置支持。

用于对象及JSON数据的存储:Mongo的BSON数据格式非常适合文档化格式的存储及查询。

启动参数

  1. 使用下面命令可以查看服务的启动参数
 mongod --help  或者mongod -h 
  1. 其他命令参数
 * 基本配置 

 --quiet                          # 安静输出 
 --port arg                       # 指定服务端口号,默认端口27017 
 --bind_ip arg                    # 绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定默认本地所有IP 
 --logpath arg                    # 指定MongoDB日志文件,注意是指定文件不是目录 
 --logappend                      # 使用追加的方式写日志 
 --pidfilepath arg                # PID File 的完整路径,如果没有设置,则没有PID文件 
 --keyFile arg                    # 集群的私钥的完整路径,只对于Replica Set 架构有效 
 --unixSocketPrefix arg           # UNIX域套接字替代目录,(默认为 /tmp) 
 --fork                           # 以守护进程的方式运行MongoDB,创建服务器进程 
 --auth                           # 启用验证 
 --cpu                            # 定期显示CPU的CPU利用率和iowait 
 --dbpath arg                     # 指定数据库路径 
 --diaglog arg                    # diaglog选项 0=off 1=W 2=R 3=both 7=W+some reads 
 --directoryperdb                 # 设置每个数据库将被保存在一个单独的目录 
 --journal                        # 启用日志选项,MongoDB的数据操作将会写入到journal文件夹的文件里 
 --journalOptions arg             # 启用日志诊断选项 
 --ipv6                           # 启用IPv6选项 
 --jsonp                          # 允许JSONP形式通过HTTP访问(有安全影响) 
 --maxConns arg                   # 最大同时连接数 默认2000 
 --noauth                         # 不启用验证 
 --nohttpinterface                # 关闭http接口,默认关闭27018端口访问 
 --noprealloc                     # 禁用数据文件预分配(往往影响性能) 
 --noscripting                    # 禁用脚本引擎 
 --notablescan                    # 不允许表扫描 
 --nounixsocket               	   # 禁用Unix套接字监听 
 --nssize arg (=16)               # 设置信数据库.ns文件大小(MB) 
 --objcheck                       # 在收到客户数据,检查的有效性, 
 --profile arg                    # 档案参数 0=off 1=slow, 2=all 
 --quota                          # 限制每个数据库的文件数,设置默认为8 
 --quotaFiles arg                 #  number of files allower per db, requires --quota 
 --rest                           # 开启简单的rest API 
 --repair                         # 修复所有数据库run repair on all dbs 
 --repairpath arg                 # 修复库生成的文件的目录,默认为目录名称dbpath 
 --slowms arg (=100)              # value of slow for profile and console log 
 --smallfiles                     # 使用较小的默认文件 
 --syncdelay arg (=60)            # 数据写入磁盘的时间秒数(0=never,不推荐) 
 --sysinfo                        # 打印一些诊断系统信息 
 --upgrade                        # 如果需要升级数据库 
 * Replicaton 参数 

 --fastsync                      # 从一个dbpath里启用从库复制服务,该dbpath的数据库是主库的快照,可用于快速启用同步 
 --autoresync                    # 如果从库与主库同步数据差得多,自动重新同步, 
 --oplogSize arg                 # 设置oplog的大小(MB) 
 * 主/从参数 

 --master                        # 主库模式 
 --slave                         # 从库模式 
 --source arg                    # 从库 端口号 
 --only arg                      # 指定单一的数据库复制 
 --slavedelay arg                # 设置从库同步主库的延迟时间 
  
 * Replica set(副本集)选项: 

 --replSet arg                   # 设置副本集名称 
 * Sharding(分片)选项 

 --configsvr                    # 声明这是一个集群的config服务,默认端口27019,默认目录/data/configdb 
 --shardsvr                     # 声明这是一个集群的分片,默认端口27018 
 --noMoveParanoia               # 关闭偏执为moveChunk数据保存? 

 

# 上述参数都可以写入 mongod.conf 配置文档里例如:

dbpath = /data/mongodb

logpath = /data/mongodb/mongodb.log

logappend = true

port = 27017

fork = true

auth = true

 

监控(mongostat)

Use the mongostat utility to quickly view statistics on a running mongod instance.

Run mongostat --help for help.

Fields:
   insert       - # of inserts per second (* means replicated op)
   query        - # of queries per second
   update       - # of updates per second
   delete       - # of deletes per second
   getmore      - # of get mores (cursor batch) per second
   command      - # of commands per second (on a slave, it's local|replicated)
   flushes      - # of fsync flushes per second
   mapped       - amount of data mmaped (total data size) megabytes
   vsize        - virtual size of process in megabytes
   res          - resident size of process in megabytes
   faults       - # of pages faults/sec (linux only)
   locked       - percent of time in global write lock
   idx miss     - percent of btree page misses (sampled)
   qr | qw      - queue lengths for
 clients waiting (read|write)
   ar | aw      - active clients (read|write)
   netIn        - network traffic in - bits 
   netOut       - network traffic out - bits
   conn         - number of open connections
   set          - replica set name 
   repl         - replication type 
                    M    - master
                    SEC  - secondary 
                    REC  - recovering
                    UNK  - unknown
                    SLV  - slave

multiple servers:

mongostat --host a,b,c

find all connected servers (added in 1.7.2):

mongostat --discover (--host optional)

 

 

备份( mongodump

 用法 :

[root@web3 3]# mongodump --help

options:

--help produce help message

-v [ --verbose ] be more verbose (include multiple times for more

verbosity e.g. -vvvvv)

-h [ --host ] arg mongo host to connect to ("left,right" for pairs)

-d [ --db ] arg database to use

-c [ --collection ] arg collection to use (some commands)

-u [ --username ] arg username

-p [ --password ] arg password

--dbpath arg directly access mongod data files in the given path,

instead of connecting to a mongod instance - needs

to lock the data directory, so cannot be used if a

mongod is currently accessing the same path

--directoryperdb if dbpath specified, each db is in a separate

directory

-o [ --out ] arg (=dump) output directory

 


例子:

[root@web3 ~]# mongodump -h 192.168.1.103 -d citys -o /backup/mongobak/3

connected to: 192.168.1.103

DATABASE: citys to /backup/mongobak/3/citys

citys.building to /backup/mongobak/3/citys/building.bson

13650 objects

citys.system.indexes to /backup/mongobak/3/citys/system.indexes.bson

1 objects

 

备份出来的数据是二进制的,已经经过压缩。

 

恢复( mongorestore

[root@web3 3]# mongorestore --help

usage: mongorestore [options] [directory or filename to restore from]

options:

--help produce help message

-v [ --verbose ] be more verbose (include multiple times for more

verbosity e.g. -vvvvv)

-h [ --host ] arg mongo host to connect to ("left,right" for pairs)

-d [ --db ] arg database to use

-c [ --collection ] arg collection to use (some commands)

-u [ --username ] arg username

-p [ --password ] arg password

--dbpath arg directly access mongod data files in the given path,

instead of connecting to a mongod instance - needs to

lock the data directory, so cannot be used if a

mongod is currently accessing the same path

--directoryperdb if dbpath specified, each db is in a separate

directory

--drop drop each collection before import

--objcheck validate object before inserting

 

--drop 参数可以在导入之前把 collection 先删掉。


例子:

[root@web3 3]# mongorestore -h 127.0.0.1 --directoryperdb /backup/mongobak/3/

connected to: 127.0.0.1

/backup/mongobak/3/citys/building.bson

going into namespace [citys.building]

13667 objects

/backup/mongobak/3/citys/system.indexes.bson

going into namespace [citys.system.indexes]

1 objects

 

另外 mongodb 还提供了 mongoexport mongoimport 这两个命令来导出或导入数据,导出的数据是 json 格式的。也可以实现备份和恢复的功能。

例:

mongoexport -d mixi_top_city_prod -c building_45 -q '{ "uid" : "10832545" }' > mongo_10832545.bson

mongoimport -d mixi_top_city -c building_45 --file mongo_10832545.bson

 

关闭

kill -9 可能导致瘫痪

建议 killall mongod

 

修复
首先停止 mongod 服务,删除 mongodb.log ,也可以备份一下
# rm -rf /data/mongodb/mongodb.log

删除 mongodb 进程文件
# rm -rf /mongodb/mongod.lock

进行修复
# mongod --repair --dbpath /data/mongodb --repairpath /data/mongodb_repair --port=27017

这时 mongodb 进程会在 /mongodb/repair/ 目录下储存临时的修复数据库文件,文件目录为“ $tmp_repairDatabase_0” 所以此目录空间要足够大。
生产环境数据库为 100G ,修复进行了大约 3 个半小时,在“ /mongodb/repair /$tmp_repairDatabase_0" 目录下产生了近 30G 的数据库临时文件,修复完成后数据库临时文件自动清除。

主从同步

启动主服务器( 192.168.61.200

./mongod -dbpath /data/jobcnresume -port 5555 -master

 

启动从服务器

./mongod -slave -source=192.168.61.200:5555 -dbpath=/data/db2 -port 6666 -slavedelay 5

./mongod -slave -source=192.168.61.200:5555 -dbpath=/data/db3 -port 7777 -slavedelay 5

参数:

--source 主服务器 ip 和端口

--autoresync 当发现从服务器的数据不是最新时,开始从主服务器请求同步数据

--slavedelay 同步延迟,单位:秒

分享到:
评论

相关推荐

    Linux安装mongodb客户端

    sudo vim /etc/yum.repos.d/mongodb-org-4.2.repo 写入: [mongodb-org-4.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/ gpgcheck=1 enabled=1 gpg...

    mongodb安装包和compass

    MongoDB是一款开源、分布式、高性能的NoSQL数据库,它不使用传统的表格和列式结构来存储数据,而是采用键值对、文档、集合和图形数据模型。这种设计使得MongoDB在处理非结构化和半结构化数据时表现出色,特别适合大...

    mongodb-测试数据

    MongoDB是一种流行的开源、分布式文档数据库,常被用于构建高性能、可扩展的应用程序。这个“mongodb-测试数据”压缩包显然包含了一些用于测试MongoDB功能的样例数据集,特别是针对增、删、改、查(CRUD)操作的学习...

    linux安装mongodb教程

    /usr/local/mongodb/mongodb-linux-2.0.7/bin/mongod --dbpath=/usr/local/mongodb/data/db --logpath=/usr/local/mongodb/mongodb-linux-2.0.7/logs/mongodb.log --logappend --port=27017 --fork 知识点 6:配置...

    spring-data使用mongodbTemplate对MongoDB进行读写操作

    Spring Data MongoDB是一个强大的Java库,它为开发人员提供了一种简单的方式来访问和操作MongoDB数据库。这个库是Spring Data框架的一部分,旨在简化数据访问层的实现,尤其在使用NoSQL数据库如MongoDB时。MongoDB...

    MongoDB实验 - .docx

    MongoDB 实验报告 本实验报告旨在详细介绍 MongoDB 的安装、配置和基本操作步骤,本报告基于 CentOS 7 系统,通过一步一步的截图和文字说明,帮助读者快速掌握 MongoDB 的使用。 一、安装 MongoDB 首先,我们需要...

    MongoDB之conf配置文件详解

    MongoDB之conf配置文件详解 MongoDB的配置文件是服务器的核心组件之一,它控制着MongoDB服务器的各种设置和行为。在本文中,我们将详细介绍MongoDB的配置文件的各个部分,并解释每个设置的作用和意义。 一、数据库...

    mongodb c#驱动最新驱动mongodb.driver.dll 版本2.12.0-beta1

    MongoDB 是一个流行的开源、基于分布式文件存储的数据库系统,主要设计用于处理大量数据的分布式环境。C# 驱动是 MongoDB 提供的一种客户端库,允许 .NET 开发者与 MongoDB 数据库进行交互。标题提到的是 MongoDB 的...

    mongodb.dll 下载.zip

    MongoDB是一个开源、分布式、高性能的NoSQL数据库,以其灵活性、可扩展性和高可用性而闻名。`mongodb.dll`是MongoDB数据库系统在Windows平台上运行所必需的一个动态链接库(DLL)文件,它包含了MongoDB客户端和...

    geoserver发布mongodb矢量数据地图服务.docx

    Geoserver发布MongoDB矢量数据地图服务 Geoserver是一款功能强大且开源的地理信息系统(GIS)服务器,能够实现空间数据的存储、处理和发布。MongoDB是一款NoSQL数据库,能够存储大量的矢量数据。本文将介绍如何使用...

    MongoDB应用设计模式

    资源名称:MongoDB应用设计模式内容简介:无论是在构建社交媒体网站,还是在开发一个仅在内部使用的企业应用程序,《MongoDB应用设计模式》展示了MongoDB需要解决的商业问题之间的连接。你将学到如何把MongoDB设计...

    MongoDB(mongodb-org-server_5.0.4_amd64.deb)

    MongoDB Community Server(mongodb-org-server_5.0.4_amd64.deb)适用于适用于Debian10 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是...

    mongodb数据库jar包

    MongoDB是一个流行的开源、分布式文档型数据库,设计用于处理大量数据并提供高可用性和高性能。在Java应用程序中,为了与MongoDB进行交互,我们需要使用Java MongoDB驱动程序。这个压缩包包含的就是Java连接MongoDB...

    MongoDB4.2.21 Linux版本安装包

    MongoDB是一款高性能、无模式的分布式文档型数据库,被广泛应用于大数据分析、内容管理系统、物联网(IoT)、实时应用程序和地理位置数据存储等场景。在Linux环境下安装MongoDB 4.2.21版本,是许多系统管理员和开发者...

    MongoDB Community(mongodb-linux-aarch64-ubuntu1804-5.0.8.tgz)

    MongoDB Community Server(mongodb-linux-aarch64-ubuntu1804-5.0.8.tgz)适用于Ubuntu 18.04 Arm芯片, MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决...

    MongoDB(mongodb-src-r5.0.4.tar.gz)

    MongoDB Community Server(mongodb-src-r5.0.4.tar.gz)源代码 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非...

    MongoDB c#驱动 dll

    MongoDB是一种流行的开源、分布式文档型数据库,以其灵活性、高性能和可伸缩性而闻名。在C#开发环境中,MongoDB提供了专门的C#驱动程序,使得开发者能够方便地与MongoDB进行交互。本篇文章将深入探讨MongoDB的C#驱动...

    Mongodb基础知识详解(值得珍藏).pdf

    MongoDB 是一个高性能的NoSQL数据库,以分布式文件存储为基础,提供灵活的数据模型和高效的查询操作。MongoDB 不同于传统的关系型数据库,它采用面向集合的存储方式,支持无模式的数据模型,允许数据自由组织,这...

    Mongodb for Ubuntu 18.04 ARM 64

    MongoDB 是一个流行的开源文档型数据库,被广泛用于存储、管理和检索非结构化或半结构化数据。在本文中,我们将深入探讨如何在基于ARM架构的Ubuntu 18.04系统上安装和使用MongoDB。 一、ARM架构与Ubuntu 18.04 ARM...

    MongoDB Days 2015 深圳 PPT 共享

    MongoDB是一种分布式文档数据库,以其灵活性、高性能和可伸缩性而闻名,尤其适用于处理大量半结构化和非结构化数据。MongoDB Day 2015 深圳活动显然是一个专门针对MongoDB技术的研讨会或会议,旨在深入探讨和分享...

Global site tag (gtag.js) - Google Analytics