对ubuntu上的MongoDB数据库中的数据进行异地备份,想到异地备份肯定就需要用到网络协议方面的知识点,第一印象想到就是用的比较多的ftp和sftp,想着追求新知识,于是本人使用了没接触过的smb协议。
在上篇文章<mongodb自动备份>的基础上来实现异地备份
-
安装smb服务
- 查看是否安装过smb服务
smbd -V
如未安装,通过以下命令安装
sudo apt-get install samba
此时有可能会出现安装失败的情况,本人在安装过程中就出现了以下错误
感觉像是需要的环境不存在,于是想方设法解决
终于找到了一个报错情况类似的解决方案,按照解决方案上说的,好像是问题出在软件包源上,根据此 repogen.simplylinux.ch 网站对 /etc/apt/sources.list 下面的软件包源进行新增,具体操作如下:
1、打开 repogen.simplylinux.ch 网站,选择内容,生成清单
2、将生成的清单,复制并新增到 /etc/apt/sources.list 中
3、通过执行 source /etc/apt/sources.list 重新加载 sources.list 文件
当然还可以执行以下命令来辅助,更新配置
sudo apt-get update
sudo dpkg --configure -a
上述具体问题参考网址:https://askubuntu.com/questions/767594/samba-wont-install-because-of-broken-packages
解决上述问题后,就可以安装服务了sudo apt-get install samba sudo apt-get install smbclient
- 查看是否安装过smb服务
-
启动 smb 服务
systemctl status smbd -- 查看服务状态 sudo service smbd start -- 启动服务 sudo service smbd stop -- 停止服务 sudo service smbd restart -- 重启服务
-
smbclient命令连接测试
smbclient //server/share -U user --smbclient命令格式 smbclient //server/share -U user%password --smbclient命令格式 #具体本人连接命令示例: smbclient //192.168.3.160/file -U administrator%12345
-
mount 命令,磁盘挂载
sudo mount -t cifs -o username=administrator //192.168.3.160/file/ /mnt/user1/data/file/
出现如上错误解决方案是安装 cifs-utils包sudo apt-get install cifs-utils
-
shell脚本
-
创建shell脚本
cd /usr/data_bak/mongo_bak/ vim mongodb_other_dump.sh
-
编辑shell脚本
# !/bin/bash # backup MongoDB #mongodump命令路径 DUMP=/mnt/user1/data/program/mongodb/bin/mongodump #临时备份目录 OUT_DIR=/mnt/user1/data/program/mongodb_bak_now #备份存放路径 TAR_DIR=/mnt/user1/data/nsfile/mongodb #获取当前系统时间 DATE=`date +%Y_%m_%d` #数据库账号 DB_USER="" #数据库密码 DB_PASS="" #DAYS=150 代表删除150天前的备份,即只保留近15天的备份 DAYS=150 #最终保存的数据库备份文件 TAR_BAK="mongodb_bak_$DATE.tar.gz" cd $OUT_DIR rm -rf $OUT_DIR/* rm -rf $TAR_DIR/* mkdir -p $OUT_DIR/$DATE $DUMP -o $OUT_DIR/$DATE #压缩格式为 .tar.gz 格式 tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE exit
-
对编辑好的shell脚本赋予权限操作
chmod 777 mongodb_other_dump.sh
-
-
添加定时任务,执行上述shell脚本内容
- 添加定时任务
在crontab文件中末尾添加新的定时任务,用于执行MongoDB自动备份vim /etc/crontab
以上表示每周凌晨3点半执行一次具体目录下的MongoDB自动备份shell脚本30 03 */7 * * root /usr/data_bak/mongodb_bak/mongodb_dump.sh
- 添加定时任务
-
重启定时服务
sudo service cron status sudo service cron restart