docker中mysql数据定时备份_Linux定时备份Docker的MySQL数据库

8876c51bc9157b7faeb9b38bebc8ff44.png

论备份的重要性

最近遇到了好几个网友出现MySQL数据库勒索事件,本人前两天也遇到,事情大概这样子的:

大早上起来,打开网站,发现500错误,这就很尴尬了,感觉查看日志发现怪事,数据库找不到了(PS:心里很慌,原因之前就想着备份,一直给忘了)打开数据库真的不见了,多了一个不知道的库,里面有一张WARNING表,内容全是英文(PS:额,看不懂),去翻译,彻底惊呆了!比特币勒索(PS:心里一万个小马跑过)

d22523364a04ff89e2a0e614d525903f.png

9865822c9c7263f5601da23314f404b6.png

接着百度发现在17年的时候又一波比特币勒索事件,好多数据库都被黑了,要求花钱赎回......

这件事情让我认识到数据库备份的重要性,哎,赶紧重新搞一套出来,幸亏博文都有备份,哈哈...

解决

由于本人使用的是docker部署的MySQL,所以去百度命令

docker exec -it mysql mysqldump -uroot -p123456 databases > /backup/data_`date +%Y%m%d%H%M%S`.sql;

拿着命令去跑了下,可以备份,完美

定时备份

想着不能每天手动处理吧,然后就做了一个定时任务,每天备份一次,不说了,上操作:

新建脚本mysql_bak.sh,将以下命令粘贴;

# mysql 为安装mysql的docker

#!/bin/bash

docker_name=mysql

data_dir="/data/backup/mysql/"

docker exec -it $docker_name mysqldump -uroot -p123456 --all-databases > "$data_dir/solo_`date +%Y%m%d%H%M%S`.sql"

# 删除7天以前的备份

find $data_dir -mtime +7 -name 'solo_*.sql' -exec rm -rf {} \;

备注

docker_name:MySQL容器名称

data_dir:保存路径

--all-databases:表示所有的数据库都备份,可以备份固定的数据库,直接替换就可以了

-mtime +7: 按照文件的更改时间来查找文件,+7表示文件更改时间距现在7天以前;如果是 -mmin +7表示文件更改时间距现在7分钟以前

*-exec rm -rf {}; 表示执行一段shell命令,exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个,最后是一个分号

2.在定时任务中添加新的任务规则,crontab -e,将下面命令写入并报存:wq

0 0 * * * /bin/sh /data/mysql_bak.sh >> /data/logs/mysql_bak.log 2>&1

PS:/data/logs/mysql_bak.log :输出日志

结束

学习是一种进步态度,笔记是一种成长的动作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值