专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Go

MongoDB 的配置项在配置文件中开展配置和数据库的备份与恢复

发布时间:2011-06-29 18:25:11 文章来源:www.iduyao.cn 采编人员:星星草
MongoDB 的配置项在配置文件中进行配置和数据库的备份与恢复

一、mongoDB命令行启动选项配置

mongodb的命令行启动时我们可以选择一些选项来改变配置,具体的选项如下:

1、--dbpath: 每一个mongodb进行就需要一个独立的数据存放目录,如果你在不同的端口启动了多个mongodb进行但是数据存放目录相同就会报错:

 

 

 

2、--port :就是程序的不同监听口,默认是27017

 --port=27017 修改不同的端口来启动多个mongdb进程

 


 

3、--fork: 创建守护mongodb进程

4、--logpath: 指定日志写出的路劲

--logpath="mongodb.log"默认放在mongodb安装的/bin目录下

5、--config: 配置文件

--config='配置文件路劲以及配置文件'

(1)、使用配置文件会简化启动,因为一次配置多次使用,在目录创建一个配置文件,配置文件建立实例如下:

#  “#”其注释作用

dbpath=E:\DB\mongodb\data

port=27017

fork=true

logpath=mongdb.log

logappend=true

// 默认情况下日志是会将之前的日志清除,在写,如果要追加则可以使用logappend=true

配置之后启动进程:

 

6、关闭服务:db.shutdownServer()

 

二、数据的备份 恢复:

mongo 数据库备份恢复

1.     文件备份(冷备)

直接备份mongodb的数据目录。需要停止mongo server 拷贝数据目录进行完整有效的备份。

2.     工具备份(热备)

 mongodump 是将数据以二进制形式导出,

而 mongoexport导出的数据格式为 csv 或 json 格式; mongodump 可以导出一个数据库,或者整个 MongoDB 服务上的所有数据库,因此 mongodump是更大范围的备份工具。

(1)、mongodump 备份一个数据库

mongodump -h 127.0.0.1 -d test -o E:\DB\mongodb\data\testdump.dmp


//从日志看出,mongodump 的结果会生成一个目录,第一层目录为数据库名,再下一层为每个集合对应的备份文件。


(2)、备份数据库中的一个集合

 mongodump-h 127.0.0.1 -d test  -c mytest -o E:\DB\mongodb\data.dmp

 

// mongodump 加上-c(全称:collection)  参数则可备份指定集合。


(3)、备份整个实例

mongodump -h 127.0.0.1 -o E:\DB\mongodb\data.dmp

//mongodump 如果不指定 -d 参数,刚会备份整个 MongoDB 实例。在目录 data.dmp下产生了和mongo实例中数据库个数相同的目录,目录名分别对应 MongoDB 上实例上的数据库名。

 

恢复:使用mongorestore 命令

(1)、恢复一个数据库

 mongorestore-d dbname E:\DB\mongo\data

  -d 使用的数据库名称

   后面直接加你刚才导出的目录,这样是直接恢复所有表

   如果-c 是恢复一个表

例:mongorestore  -d resdb E:\DB\mongodb\data\dump.dmp\test

//就是将指定目录下的数据导入到resdb这个数据库中,如果没有则会自动建立


//导入成功之后我们登录产看数据库:show dbs

 


(2)、恢复一个集合

 mongorestore -d dbname -ccollectinname   E:\DB\mongo\data

例:mongorestore  -h 127.0.0.1 -d test -c restesss E:\DB\mongodb\data\test\mytest.bson

// 将指定目录下的导出的集合mytest.bson导入到test数据库下的restesss集合中

 

// 导入之后我们在登录产看test这个数据库下的所有集合:db.getCollectionNames(),我们发现有导入的集合

 

三、导出导入

1、导出工具mongoexport

Mongodb中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件。可以通过参数指定导出的数据项,也可以根据指定的条件导出数据。mongoexport具体用法如下所示:

(1)、mongoexport --help    // 查看mongoexport工具使用方式

参数说明:

-h:指明数据库宿主机的IP

-u:指明数据库的用户名

-p:指明数据库的密码

-d:指明数据库的名字

-c:指明collection的名字

-f:指明要导出那些列

-o:指明到要导出的文件名

-q:指明导出数据的过滤条件

 

实例:test库中存在着一个students集合:

文档中存在着3个字段:classid、age、name

(2)、mongoexport -d test -c students -o students.dat  

命令执行完后查看,发现目录下生成了一个students.dat的文件

参数说明:

-d:指明使用的库,本例中为test

-c:指明要导出的集合,本例中为students

-o:指明要导出的文件名,本例中为students.dat

//从上面的结果可以看出,我们在导出数据时没有显示指定导出样式,默认导出了JSON格式的数据。如果我们需要导出CSV格式的数据,则需要使用--csv参数,具体如下所示:

 

(3)、mongoexport -d test -c students --csv -f classid,name,age -o students_csv.dat  

参数说明:

-csv:指明要导出为csv格式

-f:指明需要导出classid、name、age这3列的数据

//由上面结果可以看出,mongoexport成功地将数据根据csv格式导出到了students_csv.dat文件中。

 

2、导入工具mongoimport

Mongodb中的mongoimport工具可以把一个特定格式文件中的内容导入到指定的collection中。该工具可以导入JSON格式数据,也可以导入CSV格式数据。具体使用如下所示:

(1)、mongoimport --help  

参数说明:

-h:指明数据库宿主机的IP

-u:指明数据库的用户名

-p:指明数据库的密码

-d:指明数据库的名字

-c:指明collection的名字

-f:指明要导入那些列

 实例:

(2)、mongoimport -d test -c students students.dat   

参数说明:

-d:指明数据库名,本例中为test

-c:指明collection名,本例中为students

students.dat:导入的文件名

//上面演示的是导入JSON格式的文件中的内容,如果要导入CSV格式文件中的内容,则需要通过--type参数指定导入格式,具体如下所示:

再导入之前导出的students_csv.dat文件

(3)、mongoimport -d test -c students --type csv --headerline --file students_csv.dat   

参数说明:

-type:指明要导入的文件格式

-headerline:指明第一行是列名,不需要导入

-file:指明要导入的文件

 

四、将内存中修改的数据刷出到磁盘

1. fsync and lock

 强制刷新所有更改到磁盘,并维护一个全局锁。再进行拷贝数据目录进行备份。刷新期间影响系统性能,锁的过程中阻塞读。


> use admin

switched to db admin

>db.runCommand({"fsync":1,"lock":1});

{

      "info" : "now locked against writes, use db.fsyncUnlock() tounlock",

      "seeAlso" :

      "ok" : 1

}

 

恢复

--repair      mongod 启动选项,mongod异常退出后,可使用repair参数启动。修复的过程:验证所有的数据,忽略损坏的数据,重建所有的索引。同时对数据空间做了整理。

在线修复:

> use db

switched to db db

>db.repairDatabase()

{ "ok" : 1}

>

友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

  • ModernUI课程:定义一个Logo

    ModernUI教程:定义一个Logo ModernWindow的标题栏包含了一块区域用来显示自定义的窗体Logo: 这个窗体logo通过ModernWindow.LogoD...

  • Django忘记管理员账号和密码的解决方法

    Django忘记管理员账号和密码的解决办法 看着Django的教程学习搭建网站,结果忘记第一次创建的账号和密码了。结果搭建成功以后,一直...

  • GO语言小结(1)——基本知识

    GO语言总结(1)——基本知识 1、注释(与C++一样)   行注释://  块注释:/*   ...  */ 2、标识符   可以这么说,除了数字开头...

  • golang 惯用的文件读取方式

    golang 常用的文件读取方式 Golang 的文件读取方法很多,刚上手时不知道怎么选择,所以贴在此处便后速查。 一次性读取 小文件推荐一...

  • 查询深圳市通相关信息

    查询深圳通相关信息 用 HTTP.GET 从开放 API 中查询深圳通信息,然后将 JSON 数据存入结构体中,再格式化输出。 注意:获取的并不是实...

  • Go语言设计模式实践:结合(Composite)

    Go语言设计模式实践:组合(Composite) 关于本系列 这个系列首先是关于Go语言实践的。在项目中实际使用Go语言也有段时间了,一个体会就...

  • 列出索引和遍历目录

    列出目录和遍历目录 获取目录列表用 ioutil.ReadDir(),遍历目录用 filepath.Walk(),使用方法请参考文章示例。 示例代码: package ma...

  • io 包的惯用接口速记

    io 包的常用接口速记 我没有 C/C++ 基础,没有接口的概念,且从 Python 投奔而来,Python 的极简主义(一个结果往往只提供一个方法),让我在...

  • 代理服务扩充

    代理服务扩展 之前自己实现了一个代理服务,当时考虑的是只要支持SOCKS5就好了,因为我经常用CHROME,配合着SwitchySharp,体验还是很棒...

  • 文件的创造与打开

    文件的创建与打开 文件操作是个很重要的话题,使用也非常频繁,熟悉如何操作文件是必不可少的。Golang 对文件的支持是在 os package ...

热门推荐: