现在的位置: 首页 > 综合 > 正文

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

2018年02月03日 ⁄ 综合 ⁄ 共 3412字 ⁄ 字号 评论关闭

一、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}

>

抱歉!评论已关闭.