首页 > 编程笔记 > MySQL笔记 阅读:13

MongoDB数据备份的2组命令(非常详细)

在 MongoDB 中,有两组命令可以实现数据的备份,它们分别是 mongoexport 和 mongoimport、mongodump 和 mongorestore。

MongoDB mongoexport和mongoimport命令

mongoexport 是数据导出命令,可以将数据库中的集合导出为指定的文件格式(如 JSON、CSV),实现数据的备份。该命令可使用的参数可以借助下面的命令查看:
mongoexport --help
mongoexport 命令的参数很多,下表整理了一些常用的参数:

表:mongoexport 命令常用的参数
参数 参数描述
-h 数据库所在服务器主机
--port 监听的端口号
-u 数据库授权的用户
-p 用户的密码
--authenticationDatabase 认证用户的数据库,存储了用户的授权证书
-d 指定具体的数据库
-c 指定数据库中具体的集合
-f 导出的字段,多个字段用逗号分隔
--type 导出的文件格式
-o 导出的文件名
-q 导出数据的查询条件

下面我们通过一个案例,展示 mongoexport 如何进行数据备份:
代码如下:
root@master:~# mongo --host my_router --port 27017
mongos> show dbs;
admin   0.000GB
config  0.002GB
people  0.000GB
mongos> use admin;
switched to db admin
mongos> db.createUser({user:"admin",pwd:"admin",roles:[{role:"root",db:"admin"}
]})
Successfully added user: {
    "user" : "admin",
    "roles" : [
        {
            "role" : "root",
            "db" : "admin"
        }
    ]
}
mongos> exit
root@master:~# mongoexport --host my_router --port 27017 -u admin -p admin
--authenticationDatabase admin -d people -c records --type csv -f name,age -o
people_records.csv
2023-08-14T12:20:30.806+0800 connected to: mongodb://my_router:27017/
2023-08-14T12:20:30.961+0800 exported 4 records
root@master:~# ls
Downloads  people_records.csv  temp

接下来我们使用 mongoimport 命令从 JSON 或 CSV 文件中将数据导入 MongoDB。案例代码如下:
root@master:~# mongoimport --host my_router --port 27017 -u admin -p admin
--authenticationDatabase admin -d people -c testImport --type csv --headerline
--file people_records.csv --drop
2023-08-14T13:02:45.181+0800 connected to: mongodb://my_router:27017/
2023-08-14T13:02:45.181+0800 dropping: people.testImport
2023-08-14T13:02:45.197+08005 document(s) imported successfully. 0 document(s)
failed to import.
如果指定数据库或者集合不存在,那么 MongoDB 会自动创建该数据库或集合。

我们列出了一些 mongoimport 命令常用的参数,如下表所示:

表:mongoimport 命令常用的参数
参数 参数描述
-h 数据库所在服务器主机
--port 监听的端口号
-u 数据库授权的用户
-p 用户的密码
-d 指定具体的数据库
-c 指定数据库中具体的集合
-f 指定导入的字段,多个字段用逗号分隔
--file 导入的文件名
--type 导入的文件格式 JSON/CSV
--headerline 第一行作为字段列表,此时不能再用 -f
--authenticationDatabase 认证用户的数据库,存储了用户的授权证书
--drop 导入前先删除集合

MongoDB mongodump和mongorestore命令

mongodump 命令导出数据的参数,其功能和 mongoexport 命令差不多;mongorestore 命令导入数据的参数,其功能和 mongoimport 命令差不多,读者在使用时可以通过 --help 命令来查看具体的帮助信息。

下面我们通过一些案例来说明 mongodump 和 mongorestore 命令的使用方法。

将 people 数据库备份到当前目录,并进行压缩,代码如下:
root@master:~# mongodump --host my_router --port 27017 -u admin -p admin
--authenticationDatabase admin -d people -o ./ --gzip
2023-08-14T13:20:52.827+0800 writing people.records to people/ reco-rds
bson.gz
2023-08-14T13:20:52.828+0800 writing people.testImport to people/te-st
Import.bson.gz
2023-08-14T13:20:52.837+0800 done dumping people.records (4 docs)
2023-08-14T13:20:52.837+0800 done dumping people.testImport (5 docs)
上述代码备份的是整个 people 数据库。若要备份单个集合,则通过 -c 参数指定具体的集合名称即可。

将刚备份的 people 数据库恢复到 people2 数据库中,原来的 people2 数据库则被删除,代码如下:
root@master:~# mongorestore --host my_router --port 27017 -u admin -p admin
--authenticationDatabase admin -d people2 --drop --dir people/ --gzip

若要恢复单个集合,则将 --dir 参数值指定为具体的备份文件即可,代码如下:
root@master:~# mongorestore –host my_router –port 27017 –u admin –p admin
–authentication Database admin –d people2 –c records –drop
--dir people/record-s. bson.gz –gzip
以上两组命令都可以进行数据的备份和恢复,那么它们之间有什么区别呢?具体对比如下表所示:

表:两组命令的对比
MongoDB 工具 作用 特点
mongoexport / mongoimport 导入 / 导出 JSON 文件 不受 MongoDB 版本影响;
可读性强、体积较大;
只保留数据部分,不保留索引等元数据
mongodump / mongorestore 导入 / 导出 BSON 文件 可读性差、体积小;
受 MongoDB 版本影响;
二进制文件

相关文章