5.mongodb 备份与恢复
2025/11/4 13:01:23 
来源:https://blog.csdn.net/2302_77503226/article/details/139603682 
浏览: 
次
 
关键词:5.mongodb 备份与恢复
- mongodb备份工具介绍: 
- 1.mongoexport(备份)/mongoimport(恢复) 
- mongoexport是MongoDB提供的一个工具,用于将数据从MongoDB实例导出到JSON或CSV格式的文件中,这个工具对于数据迁移、数据备份或者在不同的数据库之间同步数据非常有用
 
 
 - 2.mongodump(备份)/mongorestore(恢复) 
- mongodump 是 MongoDB 官方提供的一个工具,用于备份 MongoDB 数据库。导出和导入的文件格式为BSON文件格式
 
 
 - 备份工具的区别: 
- mongoexport/mongoimport 导出和导入的是JSON格式或者CSV格式
 
 - mongodump/mongorestore 导入和导出的是BSON格式
 
 - JSON格式可读性较强但是体积较大,BSON则是二进制文件,体积小。
 
 - 在MongoDB不同的版本之间备份和恢复,BSON格式可能会随着版本不同而有所不同,所以不同版本之间使用mongodump/mongorestore备份工具可能不会成功,具体要看版本之间的兼容性。
 
 - 不同版本选择备份时,JSON格式由于其简单、灵活、易读,非常适合用于跨版本软件的备份和恢复工作
 
 - 应用场景: 
- 1.mongoexport/mongoimport:(JSON格式、CSV格式) 
 
 - 2.mongodump/mongorestore:(BSON格式) 
 
 - 导出工具mongoexport:    
- mongoexport具体用法如下所示:           
- --authenticationDatabase admin
 
 
 -    
- tar xf mongodb-database-tools-rhel70-x86_64-100.3.1.tgz
 
 - cd mongodb-database-tools-rhel70-x86_64-100.3.1/bin/
 
  - chown -R mongod.mongod /mongodb/
 
 -   
- 创建一个库和集合,填入数据用于备份测试:  
- db.createCollection("log");
 
 - for(i=0;i<10000;i++){db.log.insert({"uid":i,"name":"mysql","age":6,"date":new Date()})}
 
 
 -   
- 创建一个超级管理员用户(可以管理所有库):      
- roles: [ { role: "root", db: "admin" } ]
 
   
 -   
- 单表备份至JSON格式: 
- mongoexport -uroot -proot123 --port 27017 --authenticationDatabase admin -d hehe -c log -o /mongodb/log.json
 
  
 - 单表备份至CSV格式:  
- mongoexport -uroot -proot123 --port 27017 --authenticationDatabase admin -d hehe -c log --type=csv -f uid,name,age,date -o /mongodb/log.csv
 
 
 - 导入工具mongoimport: 
- 它是mongodb数据库提供的一个工具,用于将数据从外部导入到mongodb集合中,这个工具可以处理JSON\CSV\XML等格式的数据:
 
  -   
- 恢复JSON格式表数据到log1集合: 
- mongoimport -uroot -proot123 --port 27017 --authenticationDatabase admin -d hehe -c log1 /mongodb/log.json
 
 
  - 恢复CSV格式的文件到log2集合: 
- 注意: 
- 1.当CSV格式的文件中,第一行存在列名的话,在导入数据时,需要指定参数:--headerline(导入的信息包含头部信息) 
- (当使用 --headerline 选项时,mongoimport 会将 CSV 文件的第一行作为字段名,并将后续的行作为数据记录导入到 MongoDB 集合中。)
 
 
 - 2.当导入的CSV格式文件中,没有列名时,在导入时可以指定参数-f,后面添加第一行的列名
 
 
 - 开始导入: 
- (1)csv格式的文件头行,有列名字 
- mongoimport -uroot -proot123 --port 27017 --authenticationDatabase admin -d hehe -c log2 --type=csv --headerline --file /mongodb/log.csv
 
 
 - (2)csv格式的文件头行,没有列名字 
- mongoimport -uroot -proot123 --port 27017 --authenticationDatabase admin -d hehe -c log3 --type=csv -f id,name,age,date --file /mongodb/log1.csv
 
 
 
 
 - 不同平台之间数据迁移案列:  
- 1.开启mysql安全路径,用于限制只有指定目录下的数据文件可以被导出和导入   
 
 - 2.提前准备一些数据用于测试:  
- 将数据导出到/tmp下: 
- select * from world.city into outfile '/tmp/city1.csv' fields terminated by ','; 
- 这是一个备份数据的公式,如果库和表名,则直接将上面的修改为自己的库和表名,就可以备份数据了。
 
 
 
 
 -   
- 3.在mongodb数据库中导入刚才备份出来的数据: 
- mongoimport -uroot -proot123 --port 27017 --authenticationDatabase admin -d world -c city --type=csv -f ID,Name,CountryCode,District,Population --file /tmp/city1.csv 
 
 
 -   
- 4.假如mysql中要迁移100张表到mongodb数据库中,以下有一个公式可以直接将导出的命令列出: 
- select concat("select * from ",table_schema,".",table_name ," into outfile '/tmp/",table_schema,"_",table_name,".csv' fields terminated by ',';") from information_schema.tables where table_schema ='world'; 
 
  
 - mongodb日常数据备份: 
- mongodump介绍 
- mongodump可以在mongodb运行时进行备份。
 
 - 它的工作原理是对运行的Mongodb做查询,然后将所有查到的文档写入磁盘、
 
 - 它可以创建 MongoDB 实例或集合的 BSON 文件快照
 
 
 - 参数:           
- ---------------------------------------------
 
 - --authenticationDatabase admin:指定认证库
 
 
 -   
- mongorestore介绍: 
- mongorestore是MongoDB的数据恢复工具,它可以将mongodump创建的备份文件恢复到mongoDB这个实例中
 
 
 -   
- 使用案列: 
- 创建备份目录,将数据备份到以下目录: 
- mkdir /mongodb/backup /mongodb/backup1 /mongodb/backup2 /mongodb/backup3 /mongodb/backup4 /mongodb/backup5
 
 
 - 全库备份(备份所有): 
- mongodump -uroot -proot123 --port 27017 --authenticationDatabase admin -o /mongodb/backup
 
 
 - 备份单库(参数:-d 库名) 
- mongodump -uroot -proot123 --port 27017 --authenticationDatabase admin -d world -o /mongodb/backup1/
 
 
 - 备份指定库下的单个集合:(参数:-d 库名 -c 集合名) 
- mongodump -uroot -proot123 --port 27017 --authenticationDatabase admin -d hehe -c log -o /mongodb/backup2/
 
 
 
 -   
- 压缩备份: 
- 全库备份压缩: 
- mongodump -uroot -proot123 --port 27017 --authenticationDatabase admin -o /mongodb/backup3/ --gzip
 
 
 - 单库压缩备份: 
- mongodump -uroot -proot123 --port 27017 --authenticationDatabase admin -d hehe -o /mongodb/backup4/ --gzip
 
 
 - 单表压缩备份: 
- mongodump -uroot -proot123 --port 27017 --authenticationDatabase admin -d world -c city -o /mongodb/backup5/ --gzip
 
 
 
 -   
- 恢复数据: 
- mongorestore -uroot -proot123 --port 27017 --authenticationDatabase admin -d world /mongodb/backup/world
 
 
 - 压缩还原(--gzip:解压后还原): 
- mongorestore -uroot -proot123 --port 27017 --authenticationDatabase admin -d hehe -c log --gzip /mongodb/backup3/hehe/log.bson.gz
 
 
 - 删除还原: 
- --drop表示恢复的时候把之前的集合drop掉(危险)
 
 - mongorestore -uroot -proot123 --port 27017 --authenticationDatabase admin -d hehe --drop /mongodb/backup/hehe
 
 
 
 
 
 
版权声明:
本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。
我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com