1. 备份Mongodb(使用dump备份,一般导出到远程服务器用备份的数据,不然直接导出的话,你本地数据就全被导出了,用完还得导入)
mongodump -h RuiyIp -d dataname -o /direname
mongodump mongo 导出数据库命令 mongodump --help 可以查看该命令下所有的帮助 -h 导出源 -d 要导出的数据库名称 -o 数据库要导出的位置 在终端滚过N行之后,数据库导出完成,可以去/home/aa/dev/mongodb/data 目录下查看导出的文件,bson格式的(我导出后没有马上就看到文件,等了一会才出现的,原因不明)。
例子:我有个数据库叫we_teach
现在导出它。
1.首先打开powershell输入:
mongodump -h 127.0.0.1:27017 -d we_teach -o C:UsershmyDesktopmongoDB-database
运行贴图:
2.再压缩一下,因为要上传服务器,所以压缩格式:
tar -zcvf filename.tar.gz dirname/
例子:
目录是这样的:
tar -zcvf we_teachdb.tar.gz ./we_teach
运行贴图:
3.然后我使用xftp上传到服务器:
4.然后我使用xshell连接远程服务器进行解压:
可以看到那个红色的就是我上传的,使用tar -xzvf 文件名(direname)解压
解压结果:
5.然后ls查看当前目录的解压后有没有多了文件,的确多了下面那个绿色高亮区域的文件
2. 恢复使用:mongorestore 命令
mongorestore -h dbhost -d dbname --dir dbdirectory 参数说明: -h: MongoDB所在服务器地址 -d: 需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2 –dir: 恢复数据所在位置,例如:/home/mongodump/itcast/ –drop: 恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用!
我的数据库叫we_teach,放在我的we_teachdb下
所以我上传到服务器的文件使用语法:
mongorestore -h 127.0.0.1 -d we_teach --dir we_teachdb/we_teach
意思就是,恢复我的本机电脑,数据库叫we_teach,使用当前目录下名为we_teachdb/we_teach下的数据进行导入恢复
注:若你本机电脑没有we_teach数据库,mongo会自动创建。
开始解压:
结果非常漂亮,不得不说写这玩意的大神真牛逼。
进入mongo可以看到我的数据库已经成功导入:
唉,其实导入这个数据还不难,难的是之前配置环境对我这个小白挺难受的,最后mongodb安装卸载了好多遍,我觉得有一个原因应该是我的宝塔之前安装过,现在手动安装,然后再手动配置,最后搞得端口冲突,把宝塔的mongo卸载了还不能用,最后搞得两边都不能用了,直接重置服务器。
官方版主文档:
[root@localhost mongodb]# ./bin/mongorestore --help
usage: ./bin/mongorestore [options] [directory or filename to restore from]
options:
--help produce help message
-v [ --verbose ] be more verbose (include multiple times for more
verbosity e.g. -vvvvv)
--version print the program s version and exit
-h [ --host ] arg mongo host to connect to ( <set name>/s1,s2 for sets)
--port arg server port. Can also use --host hostname:port
--ipv6 enable IPv6 support (disabled by default)
-u [ --username ] arg username
-p [ --password ] arg password
--dbpath arg directly access mongod database files in the given
path, instead of connecting to a mongod server -
needs to lock the data directory, so cannot be used
if a mongod is currently accessing the same path
--directoryperdb if dbpath specified, each db is in a separate
directory
--journal enable journaling
-d [ --db ] arg database to use
-c [ --collection ] arg collection to use (some commands)
--objcheck validate object before inserting
--filter arg filter to apply before inserting
--drop drop each collection before import
--oplogReplay replay oplog for point-in-time restore
--keepIndexVersion don't upgrade indexes to newest version
详细参数说明: -h:指明数据库宿主机的IP -u:指明数据库的用户名 -p:指明数据库的密码 -d:指明数据库的名字 -c:指明collection的名字 -o:指明到要备份的文件名 -q:指明备份数据的过滤条件
3. 导入(一般指定用于指定导入的表)
mongoimport -d my_mongodb -c user user.dat
参数说明: -d 指明使用的库, 本例中为” my_mongodb” -c 指明要导入的表, 本例中为”user” 可以看到导入数据的时候会隐式创建表结构
但是我使用以上命令导入json文件时出错,
需要使用以下命令才可以导入:
mongoimport -d we_teach -c article_agrees --jsonArray --file article_agrees.json
4. 导出(这个我还没用过)
mongoexport -d my_mongodb -c user -o user.dat
参数说明: -d 指明使用的库, 本例中为” my_mongodb” -c 指明要导出的表, 本例中为”user” -o 指明要导出的文件名, 本例中为”user.dat” 从上面可以看到导出的方式使用的是JSON 的样式
先记录到这里吧!
C:UsershmyDesktopmongoDB-database