Windows Server 下使用批处理定时备份 MongoDB

去年开始大量使用 MongoDB 数据库和 Navicat GUI,发现使用 Navicat 时,如果修改了数据库中的数据,一旦失去焦点或切换焦点,则数据就会被自动保存。感觉这下面有点安全隐患。

无论如何,需要一个自动备份 MongoDB 的程序。

奈何 Navicat 的自动运行好像不支持 MongoDB(目前只发现了 PostgreSQL?),所以我准备使用批处理文件搞定这个事情。

先贴批处理代码:

@echo off

set path=%path%; "C:\Program Files\MongoDB\Server\3.4\bin\"

echo %path%

mongodump --username xxxx --password xxxxxxxx --host xx.xx.xx.xx:xxxx -o "C:\Program Files\MongoDB\Server\3.4\AutoBackup\Source"

"C:\Program Files\Bandizip\Bandizip.exe" a "C:\Program Files\MongoDB\Server\3.4\AutoBackup\%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.zip" "C:\Program Files\MongoDB\Server\3.4\AutoBackup\Source"

Forfiles /p "C:\Program Files\MongoDB\Server\3.4\AutoBackup\" /d -31 /m *.zip /c "cmd c/ del /q /f @path"

大概解释一下这些语句的意思吧。

@echo off 就不解释了。

set path 行:定位到目录,相当于 cmd 里的 cd。目的是找到 MongoDump 应用程序。

echo %path% 行:输出一下路径,没什么实际意义。

mongodump 行:使用 MongoDump 执行备份。--username 跟用户名,--password 跟密码,--host 跟主机地址和端口,-o 跟备份目标位置。其实也可以写 -d 跟数据库名,我这个是备份所有数据库,所以就没写。

“C:\Program Files\...... 行:我是使用 Bandizip 软件进行压缩的。所以这里需要首先指定 Bandizip.exe 的位置。然后,通过 a 跟压缩文件的位置和需要被压缩的文件的位置。(中间的一堆%是时间变量,我是为了区分不同备份文件的时间。代码中的变量生成的时间格式为 20200521163424 这个样子。)

最后一行 Forfile 为遍历文件。/p 跟需要遍历文件的文件夹(代码中意为将 C:\Program Files\MongoDB\Server\3.4\AutoBackup\ 路径下的文件都遍历一遍以执行命令),/d 跟天数(代码中意为 31 天之前的数据),/m 跟文件的格式,/c 表示执行完批处理之后将 cmd 窗口关闭。/del 表示删除文件命令。/q 表示静默模式。/f 表示强制删除只读文件。

 

将批处理写好之后,保存为 .bat 文件。

接着,运行 Windows 自带的任务计划程序(直接按 Win 键输入任务计划就可找到)。

新建基本任务,将该输入的输入进去,选择执行脚本时,选择保存的 .bat 文件即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值