Docker部署的Mongodb如何自动备份数据?
最近被脚本攻击了网站的mongodb的数据库
查了一下Log,是被荷兰的ip攻击的
还有删除库的记录
看了一下,别人也遇到这样的情况 。
要解决这个问题
- 屏蔽端口
- 只允许内网访问,外网访问/操作数据要通过程序
- IP绑定
- 数据备份
我们服务器是通过docker进行部署的。
- 端口和绑定IP你可以使用安全策略,或者防火墙
- 那么数据备份怎么做呢?
接下来我们看看如何自动化备份docker部署的mongodb
脚本编写
docker容器内容部备份脚本,其实可以全部写到一个外部脚本里的
这里我就分开写了
然后把这个文件导入到容器中
docker cp 脚本路径名称 容器名称:内部地址
比如说,我放在/home/sunofbeach/docker/mongodb/mongodb_backup_shell.sh
docker cp /home/sunofbeach/docker/mongodb/mongodb_backup_shell.sh sob-mongodb:/home/backup/
复制进去以后,修改成可执行权限
先进到容器里
这种操作,应该都会吧,要不你也不会使用docker来部署了
docker exec -it 容器名称 /bin/bash
进去之后,修改成可执行文件
进到/home/backup目录里
chmod +x mongodb_backup_shell.sh
./mongodb_backup_shell.sh
测试一下,看看有没有备份成功,成功了,再退出去写调用的脚本。
然后退出来,写下一个脚本
这个脚本我们放在外头,负责调用里面的脚本,以及复制备份好的内容到宿主机上。
名字为:call_container_backup_shell.sh
同样改成可执行
编辑定时任务
前面我们有脚本了,测试通过了
就添加定时任务吧,不需要人为地去备份
机器到点了,就自己调用命令执行
- 编辑crontab
crontab -e
第一次编辑会让你选择编辑器,你选择自己熟悉的即可
时间格式
* * * * *
- - - - -
| | | | |
| | | | +----- 星期中星期几 (0 - 7) (星期天 为0)
| | | +---------- 月份 (1 - 12)
| | +--------------- 一个月中的第几天 (1 - 31)
| +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)
比如说我们要每天凌晨3点30分执行脚本
30 3 * * * bash /home/sunofbeach/docker/mongodb/call_container_backup_shell.sh
然后保存退出
重启cron服务
sudo service cron restart
好啦,到这里就可以完成自动化备份了
可以看看测试结果
设置一个临近的时间
如果遇到什么问题,请到问答模块发帖子吧。