一: MongoDB数据备份 在Mongodb中我们使用mongodump命令来备份MongoDB数据。该命令可以导出所有数据到指定目录中。 mongodump命令可以通过参数指定导出的数据量级转存的服务器。1)语法: mongodump命令脚本语法如下:mongodump -h dbhost -d dbname -o dbdirectory 参数说明:-h:MongoDB 所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017 -d:需要备份的数据库实例,例如:test -o:备份的数据存放位置,例如:c:datadump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。 其他参数参考:--db:-d 指定导出的数据库 --collection:指定导出的集合 --excludeCollection:指定不导出的集合 --host :-h 远程ip --username:-u 开启身份验证后,用户的登录名 --password:-p 用户的密码 --out(指定输出目录):-o 如果不使用这个参数,mongodump将输出文件保存在当前工作目录中名为dump的目录中 --archive:导出归档文件,最后只会生成一个文件,注意: archive 与 out 不能一起用 --gzip:压缩归档的数据库文件,文件的后缀名为.gz --authenticationDatabase指定创建User的数据库;在特定的数据库中创建User,该DB就是User的authentication database。 在连接mongo时,使用参数 --authenticationDatabase,会认证 -u 和 -p 参数指定的账户和密码。如果没有指定验证数据库,mongo使用连接字符串中指定的DB作为验证数据块。 2)示例: mongodump -h 127.0.0.1 --port 27017 -u=root -p=123456 -d test -o /dump #备份本地数据库,账户root,密码123456,test数据库,指定到/dump目录 如果没有设置账户密码,或者端口都是默认的27017,则可以省略参数。如:mongodump --archive=test.gz --gzip --db test #将在终端所在的目录下生成一个指定名称(test.gz)的数据库文件,并压缩 二: MongoDB数据还原 mongodb使用 mongorestore 命令来恢复备份的数据。 1)语法: mongorestore命令脚本语法如下:mongorestore -h <:port> -d dbname 参数:--host <:port>, -h <:port>: MongoDB所在服务器地址,默认为: localhost:27017 --db , -d : 需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2 --drop: 恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦! : mongorestore 最后的一个参数,设置备份数据所在位置,例如:/home/mongod/backup/test/ 你不能同时指定 和 --dir 选项,--dir也可以设置备份目录。 --dir: 指定备份的目录,你不能同时指定 和 --dir 选项。 --nsInclude :指定还原的集合,支持通配符(*) --nsExclude:指定不还原的集合,支持通配符(*) --nsFrom:修改集合名称,原来集合的名称,支持使用变量 --nsTo:修改集合名称,修改之后集合的名称,支持使用变量 2)示例: mongorestore -h 10.0.0.152:27017 -uroot -proot -d test --drop /home/mongod/backup/test/ #恢复到10.0.0.152:27017,test数据库,恢复数据库备份位置/home/mongod/backup/test/ 三: 基于docker的MongoDB数据备份还原 例子,此时有一个mongo容器ubuntu@ubuntu:~$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 645ae5ab17b8 mongo:latest "docker-entrypoint.s…" 2 hours ago Up 2 hours 27017/tcp mongo 方法一: 直接进入docker容器,一步一步还原。sudo docker exec -it mongo(容器名称) /bin/bash #进入容器 mongodump --archive=mongo.gz #直接生成一个名字为mongo.gz的备份文件 exit #退出容器 sudo docker cp mongo(容器名称):/mongo.gz /backup/ #将容器备份的数据复制到本地/backup/文件夹中 还原一样,步骤复制本地到容器中,进入容器中,还原复制过来的备份文件。 方法二: 一步到位备份:sudo docker exec mongo(容器名称) sh -c "mongodump --archive" > /var/backup_test/mongo_`date +%F`.gz #将 mongo容器中所有数据,备份并按日期命名单个文件,备份至本地/var/backup_test文件夹。 还原:sudo docker exec -i mongo(容器名称) sh -c "mongorestore --archive" < /var/backup_test/mongo_2022-03-25.gz