MongoDb是一个新的文档型数据库,但是因为它有点新,所以还是需要手动配置一些东西的。
甚至在特别简单易用的宝塔面板,都没有mongodb做自动备份适配,这里就来大概说一下mongodb的备份方式。
手动备份
mysql的备份是通过使用mysqldump导出指定数据库来实现,mongodb也提供了mongodump作为导出数据的方法。
命令格式:mongodump --host 主机名 --port mongo端口 --out 输出路径
如果提示找不到该命令,则需要手动安装一下,此处不做多赘述。
尝试使用一下命令:mongodump –host localhost –port 27017 –out /root/mongo_dump
接着在/root/mongo_dump目录下我们就看到了备份文件。
自动备份思路&脚本编写
可以写一个bash,每天执行一次,将文件输出到/tmp/mongo_backup底下。
利用上一篇文章提到的rclone,就可以实现每日将备份上传到OneDrive了。
#!/bin/bash
echo "正在备份...."
rm -rf /tmp/mongo_backup # 删除该目录,防止出bug
echo "正在导出mongo数据库...."
mongodump --host localhost --port 27017 --out /tmp/mongo_backup
echo "压缩导出后的文件...."
cur_date="`date +%Y-%m-%d,%H:%m:%s`"
tar -zcvf "/tmp/$cur_date.tar.gz" /tmp/mongo_backup
echo "完成压缩,正在上传到OD...."
mv /tmp/$cur_date.tar.gz /mnt/od/
echo "上传完成,删除残留文件..."
rm -rf /tmp/mongo_backup # 删除该目录,防止出bug
echo "任务完成..."
可以根据需要修改备份路径,备份的服务器等,将该文件保存到任意路径。接着添加计划任务:
输入 crontab -e 打开编辑界面
另起一行,粘贴:0 1 * * * [脚本路径] > /dev/null 2>&1 &
大功告成,最后手动执行一次脚本测试即可。
还原数据
将备份文件下载下来,使用 tar -zxvf 压缩文件名.tar.gz 解压压缩包,使用 mongorestore [解压出来的路径] 命令即可完成恢复。
建议在恢复前清空一下数据库,在恢复前的清空操作再次使用mongodumo命令备份。
进阶参考
mongorestore/dump的详细用法:https://www.mongodb.com/docs/database-tools/mongorestore/