mongodb 2.6 升级 4.0 数据备份迁移

1. 在服务器中安装mongo4.0.6

在官网中下载需要的mongo版本
https://www.mongodb.com/download-center/community

2. 安装mongo4.0.6

自行查询相关安装配置,可参考:图文详解Linux系统安装MongoDB4.0过程

3. 数据备份恢复

数据备份:

(1)整库备份:mongodump -h {ip} --port 27017 -d {testdb} -o /data/temp
说明:-h 后为数据库所在服务器; --port 后为端口; -d后为指定库名;-o后为存储位置

(2)collection备份:mongodump -h {ip} -d {testdb} -c {test} -o /data/temp
说明:-c后为具体collection名

数据恢复:

(1)整库恢复:mongorestore -h {ip} -d {testdb} /data/temp

(2)collection恢复:mongorestore -h {ip} -d {testdb} -c {test} /data/temp/{testdb}/{test}.bson
说明:恢复时只需要指定到bson文件即可

4. mongo冗余数据清理

问题:数据备份恢复后所占内容降低,原库中存在冗余数据,怎么通过指令清理冗余数据?

mongodb不会自动释放已经占用的硬盘空间,即使删除collection也不行,除非删除database;

  1. 数据量小的时候可以通过备份恢复的方式清理mongo中占用的硬盘空间
  2. 通过执行db.repairDatabase()进行释放
    原理:压缩数据库中所有的collections,等同于分别在每个collection上进行压缩命令。减少了磁盘中数据文件的总大小,并且重建了数据库中的所有索引。修复过程中,其他所有操作都无法执行,直到修复完成。

5. 离线备份(shell脚本并通过crontab执行)

#!/bin/sh
DUMP=/home/mongodb/bin/mongodump             # mongodump备份文件执行路径
OUT_DIR=/data/mongodb_bak/mongodb_bak_file   # 文件备份目录
TAR_DIR=/data/mongodb_bak/mongodb_bak_zip    # 文件压缩后备份存放路径
DATE=`date -d "today" +"%Y-%m-%d-%H-%M-%S"`  # 获取当前系统时间,作为文件名的一部分
DAYS=7                                       # 只保留最近7天的备份
TAR_BAK="mongodb_bak_$DATE.tar.gz"           # 最终保存的数据库备份文件名
cd $OUT_DIR
rm -rf $OUT_DIR/
mkdir -p $OUT_DIR/$DATE
mkdir -p $TAR_DIR/
$DUMP -o $OUT_DIR/$DATE                      # 备份全部数据库(根据需求修改)
tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE   # 压缩为.tar.gz格式
find $TAR_DIR/ -mtime +$DAYS -delete         # 删除7天前的备份文件
scp $TAR_DIR/$TAR_BAK {
     ip}:/home/data/mongodb_bak/$TAR_BAK  # 通过 scp 发送至另一台服务器

文件传输问题处理:
在进行服务器间数据传输时通过scp方式进行,传输时需要输入服务器密码,可通过ssh(ssh-keygen -t rsa)生成id_rsa.pub文件(/root/.ssh/),如果另一台服务器中root/.ssh/下没有id_rsa.pub文件则复制过去并改名为authorized_keys,如果存在authorized_keys则只需将id_rsa.pub文件中内容附加其中即可。
传输文件指令:scp mongo_bak {ip}:/data/

原文参考:
[1]: https://www.iteye.com/blog/ysj5125094-2128157
[2]: https://blog.csdn.net/Ginny_2017/article/details/88886262
[3]: https://blog.csdn.net/jochen_M/article/details/84074097

你可能感兴趣的:(mongodb,mongodb)