https://www.mongodb.com/try/download/database-tools
选择对应的下载包,比如:
https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel70-x86_64-100.9.5.tgz
解压出来即可使用。
如果安装错误可能会报错: cannot execute binary file…
一. mongodump/mongorestore
MongoDB的备份(mongodump)
MongoDB提供了mongodump命令用于备份数据库,同时也可以使用mongorestore命令将备份数据恢复到MongoDB。mongodump命令可以备份整个数据库或者指定集合,可以指定备份的文档的查询条件,支持压缩备份等选项。
mongosh --host=127.0.0.1 --port=27107
mongodump命令的选项:
-h, –host:指定MongoDB服务器地址,默认为localhost。
-port, –port:指定MongoDB服务器端口,默认为27017。
-u, –username:MongoDB服务器的用户名。
-p, –password:MongoDB服务器的密码。
-db, –db:备份指定的数据库。
-c, –collection:备份指定的集合。
-q, –query:备份指定的文档查询条件,例如:‘{ age: { $gt: 30 } }’。
-o, –out:指定备份文件的输出路径。
–gzip:使用gzip压缩备份文件。
示例:
mongodump -h 192.168.2.70:27107 -u root -p pasword -o /data/backup/mongodb/
备份整个数据库:
mongodump --host localhost --port 27017 --out /data/backup/mongodb/
mongodump --host 192.168.2.70 --port 27107 --out /data/backup/mongodb/
备份指定数据库:
mongodump -h 192.168.2.70:27107 -d mydb --out /data/backup/mongodb/
备份指定集合:
mongodump -h 192.168.2.70:27107 -d mydb -c mycollection --out /data/backup/mongodb/
备份指定文档:
mongodump -h 192.168.2.70:27107 -d mydb -c mycollection -q ‘{ name: { $eq: “wy”} }’ --out /data/backup/mongodb/
压缩备份文件:
mongodump -h 127.0.0.1:27107 -d mydb -c mycollection --out /data/backup/mongodb/ --gzip
在使用mongodump时,需要注意以下几个方面:
mongodump需要在执行时指定主机和端口号,以便连接到MongoDB实例。
mongodump默认会备份所有的数据库,如果只需要备份指定数据库,需要使用–db选项指定。
mongodump默认会备份所有的集合,如果只需要备份指定集合,需要使用–collection选项指定。
mongodump默认将备份文件保存在当前工作目录下的dump文件夹中,可以使用-o选项来指定备份文件保存的目录。
mongodump备份的数据是二进制格式的,不能直接进行查看和编辑,如果需要恢复数据,需要使用mongorestore命令。
mongodump备份的数据包括数据以及索引信息,如果备份文件较大,需要考虑使用–gzip选项进行压缩,以减少备份文件的大小。
mongodump备份的数据在备份时是一个快照,不能保证数据的一致性,在进行数据恢复时需要特别注意。
mongodump备份的数据并不包括用户和角色等安全信息,如果需要备份这些信息,需要使用mongodump的–users和–authenticationDatabase选项。
mongodump备份的数据并不包括oplog,如果需要备份oplog,需要使用mongodump的–oplog选项。
总的来说,使用mongodump备份数据时需要考虑备份的范围、备份文件的大小、备份文件的保存位置以及数据恢复的问题。
备份的数据可以用mongorestore工具进行恢复,具体操作方法可参考MongoDB官方文档。建议使用mongodump进行备份操作,以确保数据的完整性和一致性。
当环境是docker容器部署,全备:
docker exec mongo-single bash -c ‘mongodump --host 127.0.0.1:27107 -uroot -p12345 -d yhgm -o /data/backup/mongodb/ --gzip’
备份某集合:
docker exec mongo-single bash -c ‘mongodump --host 127.0.0.1:27107 -uroot -p12345 -d yhgm -c yhsessions -o /data/backup/mongodb/ --gzip’
MongoDB的恢复(mongorestore)
MongoDB中的恢复指的是通过mongorestore命令将备份数据恢复到MongoDB数据库中。mongorestore是MongoDB自带的命令行工具,可以将备份数据从备份文件或归档文件中恢复到MongoDB中。
MongoDB的恢复(mongorestore)是一个命令行工具,用于从备份文件中还原数据库。以下是mongorestore命令的选项和示例:
选项:
–help:显示命令行帮助信息。
–host:指定MongoDB服务器的主机地址。
–port:指定MongoDB服务器的端口。
–username:指定MongoDB服务器的用户名。
–password:指定MongoDB服务器的密码。
–authenticationDatabase:指定用于身份验证的数据库。
–db:还原到指定的数据库。
–collection:还原到指定的集合。
–drop:在还原之前删除现有的集合。
–gzip:使用Gzip格式的备份文件。
示例:
还原整个数据库
以下命令还原整个数据库:
mongorestore /path/to/backup/directory
mongorestore -h 127.0.0.1:27017 --dir/data/backup/mongodb/
这将还原备份目录中的所有数据库。
还原指定数据库
以下命令还原指定的数据库:
mongorestore -d test --dir /data/backup/mongodb/test
mongorestore -h 127.0.0.1:27017 -d test --dir test /data/backup/mongodb/test
这将还原备份目录中的test数据库。
还原指定集合
以下命令还原指定的集合:
mongorestore --db test --collection users /data/backup/mongodb/test/users.bson
这将还原备份目录中test数据库中的users集合。
还原到不同的数据库
以下命令将备份文件中的数据库还原到不同的数据库中:
mongorestore --nsFrom ‘old_db.‘ --nsTo ‘new_db.‘ /data/backup/mongodb/
这将备份文件中的old_db数据库还原到new_db数据库中。
使用Gzip格式的备份文件
如果备份文件是Gzip格式的,请使用以下命令进行恢复:
mongorestore --gzip /data/backup/mongodb/
这将还原备份目录中的所有数据库,同时将使用Gzip格式的备份文件。
使用mongorestore命令,可以从备份文件中还原MongoDB数据库。可以使用选项来指定还原的数据库、集合、服务器地址和身份验证等信息。此外,还可以通过使用Gzip格式的备份文件来压缩备份数据。
一旦mongorestore命令开始运行,它将从备份文件中读取数据,并将其恢复到指定的目标数据库和集合中。这可能需要一些时间,特别是对于大型数据集。
完成恢复后,可以使用MongoDB的命令行工具或图形界面验证数据是否恢复成功。同时也可以使用mongodump命令进行备份验证。
需要注意的是,使用mongorestore命令恢复数据时,如果目标数据库和集合已经存在,则mongorestore将覆盖它们中的数据。因此,在运行mongorestore命令之前,请确保备份数据不会覆盖现有的数据。
Docker环境:
docker exec mongo-single bash -c ‘mongorestore --host 127.0.0.1:27107 -uroot -p12345 -d yhgm --dir /data/backup/mongodb/yhgm --gzip --drop’
docker exec mongo-single bash -c ‘mongorestore --host 127.0.0.1:27107 -uroot -p12345 -d yhgm -c yhsessions /data/backup/mongodb/yhgm/ yhsessions.bson.gz --gzip --drop ’
二.Mongoexport/mongoimport
mongoexport是一个数据导出的工具,使用的时候类似mysql中的select into outfile语法,可以将某个数据库中的数据以json或者csv的格式导出来。
我们可以通过直接连接mongos或者连接mongod来导出数据。如果你的集群是分片集群,连接mongos会导出所有分片上这个集合的相关数据。
常用参数
-h:指明数据库宿主机的IP
-u:指明数据库的用户名
-p:指明数据库的密码
-d:指明数据库的名字
-c:指明collection的名字
-f:指明要导入那些列
–type:默认是json类型,可以导出csv类型
-o:指明要导出的文件名称,如果不指定,则导出到标准输出
-q:查询过滤器,可以输入一个json,从而导出查询后的结果
上面的常用参数还有对应的长参数选项,例如-h也可以输入–host代替。参数的详细介绍,可以通过mongoexport –help获取到。
默认是导出json格式:
mongoexport -h 127.0.0.1:27017 -u “root” -p “123456” --authenticationDatabase “admin” -d test -c test1 -o /data/backup/mongodb/test1.json
导出csv格式:
mongoexport -h 127.0.0.1:27017 -u root -p 123456 --authenticationDatabase admin -d test -c test1 --type=csv -f “uid,Sname” -o /data/backup/mongodb/test1.json
mongoimport 数据导入:
参数说明:
· -h:指明数据库宿主机的IP
· -u:指明数据库的用户名
· -p:指明数据库的密码
· -d:指明数据库的名字
· -c:指明collection的名字
· -f:指明要导入那些列
· -type:指明要导入的文件格式
· -headerline:指明第一行是列名,不需要导入
· -file:指明要导入的文件
可以将mongoexport导出的数据导入到mongodb数据库中,下面是一个mongoimport的命令:
mongoimport --port=27017 -uroot -p 123456 --authenticationDatabase admin -d test -c test1 --type=csv --file /data/test1.dat
[root@localhost mongodb]# ./bin/mongoimport -d test -c students --type csv --headerline --file students_csv.dat
mongoimport -h 127.0.0.1:27017 -u root -p 123456 --authenticationDatabase admin -d test -c test1 --type=csv --headerline --file /data/backup/mongodb/test_csv.dat
-headerline:指明第一行是列名,不需要导入