mongodb备份与恢复

  • Post author:
  • Post category:其他



Mongodb


备份与恢复


&


备份


1、


整个库备份


# mongodump  -uhuoqiu -phuoqiuapp  -h 127.0.0.1:27017  -d saturn  –gzip –archive=/root/data/saturn_`date +%F_%H-%M-%S`.gz


!-u :指定用户,用于备份的用户必须对数据库有读的权限。
!-p: 指定用户密码
!-h:指定数据库服务器ip和端口,例如:ip:port
!-d: 指定要备份的数据库名称,
!--gzip: 启动gzip压缩功能
!--archive:指定备份的文件,使用方法 --archive=/root/data/saturn_`date +%F_%H-%M-%S`.gz



@


用于备份的目录必须要在一个大的磁盘上,一面空间不够影响使用。



2、


备份整个


collection


1)


备份为


bson


格式的文件,使用命令


mongodump



#/data/mongodb/bin/mongodump  -uhqms -phqms123 -h 10.10.111.192:27017  -c users –db saturn -o /data/mongodata/

!-u :指定用户,用于备份的用户必须对数据库有读的权限。
!-p: 指定用户密码
!-h:指定数据库服务器ip和端口,例如:ip:port
!-db: 指定数据库名称
!-c: 指定要备份的collection的名称
!-o:指定输出的文件,


2





mongoexport


默认导出为


json


格式的文件。


#mongoexport -uhuoqiu -phuoqiuapp -h 127.0.0.1:27017 -d saturn -c mycol  -o /root/data/mycol-`date +%F_%H-%M-%S`.json


!-u :指定用户,用于备份的用户必须对数据库有读的权限。
!-p: 指定用户密码
!-h:指定数据库服务器ip和端口,例如:ip:port
!-d: 指定数据库名称
!-c: 指定要备份的collection的名称
!-o:指定输出的文件,
!--type: 指定输出类型,默认为json格式。



3


、备份某个


collection


里面的某个字段




例如导出


mycol


里面的


id


字段,导出为


csv


文件


#mongoexport -uhuoqiu -phuoqiuapp -h 127.0.0.1:27017 -d saturn -c mycol –type csv -f “id”   -o /root/data/mycol-`date +%F_%H-%M-%S`.csv

! -d     数据库名

! -c     collection名

! -o     输出的文件名

! –type 输出的格式,默认为json

! -f     输出的字段,如果–type为csv,则需要加上 -f “字段名”

!-q     过滤某个条件:例如:-q ‘{“function” : “test100”}’


#mongoexport -h127.0.0.1:27017 -uhuoqiu -phuoqiuapp -d saturn -c mycol –csv -f id,function -q ‘{“function” : “test100”}’  -o /root/data/oplog.rs-`date +%F_%H-%M-%S`.csv



@


恢复


1、


整个库恢复


#mongorestore -uhuoqiu -phuoqiuapp –host 127.0.0.1:27017 -d saturn –gzip –archive=/root/data/saturn_2017-07-13_22-02-15.gz



2、


基于


collection


的恢复


!使用


mongoimport


导入,具体参数如下:



1.1,还原整表导出的非csv文件

mongoimport -h IP –port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 –upsert –drop 文件名

重点说一下–upsert,其他参数上面的命令已有提到,–upsert 插入或者更新现有数据

1.2,还原部分字段的导出文件

mongoimport -h IP –port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 –upsertFields 字段 –drop 文件名

–upsertFields根–upsert一样

1.3,还原导出的csv文件

mongoimport -h IP –port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 –type 类型 –headerline –upsert –drop 文件名

!!!慎用—drop选项。

1.1恢复整个表

!使用mongorestore恢复表:


#mongorestore  -h 192.168.1.12:27017 -uhuoqiu -phuoqiuapp -c mycol -d saturn  /data/mongodata/saturn/mycol.bson

! 如果需要整表替换的,执行如下命令:


#mongoimport -h 192.168.1.12:27017 -uhuoqiu -phuoqiuapp -d saturn -c mycol –upsert –drop  /root/data/mycol_2017-07-14_18-00-35.json

!如果是插入或者更新现有的表,执行如下命令:


#mongoimport -h 192.168.1.12:27017 -uhuoqiu -phuoqiuapp -d saturn -c mycol –upsert   /root/data/mycol_2017-07-14_18-00-35.json


!如果是还原部分字段,执行如下命令:

#

mongoimport -h 192.168.1.12:27017 -uhuoqiu -phuoqiuapp -d saturn -c mycol –upsertFields user,name   /root/data/mycol_2017-07-14_18-00-35.json


!还原csv文件


# mongoimport -h 192.168.1.12:27017 -uhuoqiu -phuoqiuapp -d saturn -c mycol –type  csv  –headerline –upsert –drop  /root/data/mycol_2017-07-14_18-00-35.csv

3、将数据库进行重命名

连接到mongo上面

切换到需要操作的库上面

>db.adminCommand({



renameCollection

:

“<source_namespaces>”

,

to

:

“<target_namespace>” ,dropTarget:true|false})







dropTarget:有两个值:true和false,source_namespace是源库名.collection名,target_namespace是目标库名.目标collection名

>db.adminCommand({



renameCollection

:

“test.orders”

,

to

:

“test.orders2014”








})

test是库名,orders、orders2014是collection名。如果target  source的库不存在,那么会将source 的collection全部copy过去。如果目标库是存在的,则需要加上dropTarget:true

>db.adminCommand({



renameCollection

:

“test.orders”

,

to

:

“dxhy.orders” })















上面的这个语句就是将test库里面的orders拷贝到新的库dxhy里面。只要将test库里面所有的collection都执行一次上面的命令就完成了数据库的重命名。








转载于:https://www.cnblogs.com/cuishuai/p/7193356.html