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