标签:
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}
>
MongoDB 的配置项在配置文件中进行配置和数据库的备份与恢复
标签:
原文地址:http://blog.csdn.net/qh_java/article/details/42810065