MongoDB备份与恢复
文章目录
- MongoDB备份与恢复
- 1.备份恢复工具
- 2.备份工具区别
- 3.mongoexport导出工具命令
- 4.导出MongoDB的表
- 4.1.创建备份的目录
- 4.2.登录数据库
- 4.3.查询表和表中数据
- 4.4.导出数据为json格式
- 4.5.导出数据为csv格式
- 5.mongoimport导入工具
- 5.1.恢复json格式数据
- 5.2.登录数据库查看恢复情况
- 5.3.导入csv格式的
- 5.4查询导入的数据
- 6.csv格式可以用windows系统实用excel打开
- 7.整个数据库备份
- 7.1.mongodump和mongorestore
- 7.2.命令参数
- 7.3.备份整个库
- 7.4.压缩的方式备份整个库
- 7.5.备份单个数据库
- 7.6.压缩的方式备份单个库
- 8.恢复数据库
- 8.1.删除db库
- 8.2.使用备份恢复db库
- 8.3.恢复成功再次使用命令报错
1.备份恢复工具
(1) mongoexport / mongoimport
(2) mongodump / mongorestore
2.备份工具区别
应用场景总结:
1.异构平台迁移 mysql的数据可以迁移到MOngoDB
2.同平台,跨大版本:mongodb2 ----> mongodb 3
mongoexport / mongoimport 可以到出格式为 json csv
日常备份恢复时使用
mongodump / mongorestore
3.mongoexport导出工具命令
mongoexport语法
mongoexport --help 帮助
参数说明:
-h:指明数据库宿主机的IP
-u:指明数据库的用户名
-p:指明数据库的密码
-d:指明数据库的名字
-c:指明colletion(表)的名字
-f:指明要导出那些列
-o:指明要导出的文件名
-q:指明导出数据的过滤条件
4.导出MongoDB的表
下面我们来举例导出操作
4.1.创建备份的目录
[root@localhost mongo_clusetr]# mkdir backup
4.2.登录数据库
[root@localhost mongo_clusetr]# mongodb/bin/mongo db:28017
4.3.查询表和表中数据
可以看到test库下的te表示有数据的
dba1:PRIMARY> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
test 0.000GB
dba1:PRIMARY> use db
switched to db db
dba1:PRIMARY> use test
switched to db test
dba1:PRIMARY> db
test
dba1:PRIMARY> show tables
te
test
dba1:PRIMARY> db.te.find()
{ "_id" : ObjectId("636f63745a73f86992679cef"), "name" : "zhang", "age" : 10 }
{ "_id" : ObjectId("636f63be5a73f86992679cf0"), "name" : "gao", "age" : 11 }
4.4.导出数据为json格式
举例:
可以看到已经可以查到数据了
[root@localhost mongo_clusetr]# mongodb/bin/mongoexport --port 28017 -d test -c te -p backup/te.json
[root@localhost mongo_clusetr]# ll backup/
total 4
-rw-r--r--. 1 root root 138 Nov 23 21:37 log.json
4.5.导出数据为csv格式
举例:
-f是指定需要导出那些字段 --type指定格式
[root@localhost mongo_clusetr]# mongodb/bin/mongoexport --port 28017 -d test -c te --type=csv -f name,age -o /opt/mongo_clusetr/backup/log.csv
可以看到已经是查到两条数据了
[root@localhost mongo_clusetr]# ll backup/
total 8
-rw-r--r--. 1 root root 25 Nov 23 21:40 log.csv
-rw-r--r--. 1 root root 138 Nov 23 21:37 log.json
5.mongoimport导入工具
mongoimport --help
参数说明:
-h:指明数据库宿主机的IP
-u:指明数据库的用户名
-p:指明数据库的密码
-d:指明数据库的名字
-c:指明colletion(表)的名字
-f:指明要导入那些列
5.1.恢复json格式数据
可以把刚才导出的数据恢复
可以恢复到别的库中查看一下,不删除原来的数据
将导出格式为jsoon的数据恢复到另一个库中
[root@localhost mongo_clusetr]# mongodb/bin/mongoimport --port 28017 -d gao -c te backup/log.json
5.2.登录数据库查看恢复情况
可以看到已经恢复到了gao的库中
dba1:PRIMARY> show dbs
admin 0.000GB
config 0.000GB
gao 0.000GB
local 0.000GB
test 0.000GB
dba1:PRIMARY> use gao
switched to db gao
@(shell):1:1
dba1:PRIMARY> db
gao
dba1:PRIMARY> show tables
te
dba1:PRIMARY> db.te.find()
{ "_id" : ObjectId("636f63745a73f86992679cef"), "name" : "zhang", "age" : 10 }
{ "_id" : ObjectId("636f63be5a73f86992679cf0"), "name" : "gao", "age" : 11 }
dba1:PRIMARY>
5.3.导入csv格式的
-c 指定表明 -d 库名 --type=csv格式 --file 路径
[root@localhost mongo_clusetr]# mongodb/bin/mongoimport --port 28017 -d db -c te --type=csv -f name,age --file /opt/mongo_clusetr/backup/log.csv
5.4查询导入的数据
dba1:PRIMARY> show dbs
admin 0.000GB
config 0.000GB
db 0.000GB
gao 0.000GB
local 0.000GB
test 0.000GB
dba1:PRIMARY> use db
switched to db db
dba1:PRIMARY> show tables
te
dba1:PRIMARY> db.te.find()
{ "_id" : ObjectId("637e295dc7f5fcd867772ca5"), "name" : "name", "age" : "age" }
{ "_id" : ObjectId("637e295dc7f5fcd867772ca6"), "name" : "zhang", "age" : 10 }
{ "_id" : ObjectId("637e295dc7f5fcd867772ca7"), "name" : "gao", "age" : 11 }
6.csv格式可以用windows系统实用excel打开
下载到本地即可
[root@localhost mongo_clusetr]# cd backup/
[root@localhost backup]# ls
log.csv log.json
[root@localhost backup]# sz log.csv
7.整个数据库备份
7.1.mongodump和mongorestore
mongodump能够在mongdb运行时进行备份,它的工作原理是对运行的MongoDB做查询,然后将所有查到的文档写入磁盘。
但是存在问题时使用mongodb产生的备份不一定是数据库的实时快照,如果我们在备份时对数据库进行了写入操作,则备份出来的文件可能不完全和 Mongodb 实时数据相等。另外在备份时可能会对其它客户端性能产生不利的影响。
7.2.命令参数
mongodump --help
参数说明:
-h:指明数据库宿主机的IP
-u:指明数据库的用户名
-p:指明数据库的密码
-d:指明数据库的名字
-c:指明colletion(表)的名字
-o:指明到要导出的文件名
-q:指明导出数据的过滤条件
7.3.备份整个库
#创建文件目录
[root@localhost mongo_clusetr]# mkdir /data/backup
#备份整个库
[root@localhost mongo_clusetr]# mongodb/bin/mongodump --port 28017 -o /data/backup/
#查询备份结果
[root@localhost mongo_clusetr]# cd /data/backup/
[root@localhost backup]# ls
admin db gao test
7.4.压缩的方式备份整个库
为了防止备份数据过大,MongoDB是支持备份压缩的
mongodb/bin/mongodump --port 28017 -o /data/backup/ --gzip
7.5.备份单个数据库
和备份全库的命令是差不多的
[root@localhost mongo_clusetr]# mongodb/bin/mongodump --port 28017 -d db -o /data
7.6.压缩的方式备份单个库
[root@localhost mongo_clusetr]# mongodb/bin/mongodump --port 28017 -d db -o /data --gzip
8.恢复数据库
删除数据库实验恢复操作
8.1.删除db库
已经删除db库
ba1:PRIMARY> show dbs
dba1:PRIMARY> use db
dba1:PRIMARY> db.dropDatabase()
8.2.使用备份恢复db库
[root@localhost mongo_clusetr]# mongodb/bin/mongorestore --port 28017 -d db -o /data/db/
恢复成功
dba1:PRIMARY> show dbs
admin 0.000GB
config 0.000GB
db 0.000GB
gao 0.000GB
local 0.000GB
test 0.000GB
8.3.恢复成功再次使用命令报错
也可以使用命令后面加–dorp
删除原有数据再次恢复
不过不建议这么使用恢复
[root@localhost mongo_clusetr]# mongodb/bin/mongorestore --port 28017 -d db /data/backup/db/ -dorp