目 录CONTENT

文章目录

基于Docker 实现 Mysql 自动备份

小张的探险日记
2022-02-10 / 0 评论 / 0 点赞 / 467 阅读 / 718 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-02-10,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

背景

测试环境数据库 被黑客入侵,导致数据库数据清空。(原因,之前的服务器调整 同事把服务器暴露到了公网上),花了两天总算把数据恢复。

image.png

安全防范

1.数据库开启 binlog 日志

2.利用 shell脚本 定时备份 数据。利用 mysqldump 命令

mysqldump是mysql用于转存储数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等。

编写 shell 命令,通过 docker exec 执行容器内的 mysql 的 mysqldump 命令,这里备份所有数据库,根据时间生产sql 名称,如果失败发送 邮件到 管理员的邮箱,此处发送邮件 使用了系统的 mail 插件,需要配置后才能使用

image.png

这是我利用 crontab 形成的定时任务,使用方式 crontab -e 添加,这里我每8小时 自动备份一次

[root@localhost home]# crontab -l
0 */8 * * * /home/mysql_dumps.sh
[root@localhost home]#

# 定时备份脚本

#!/bin/bash
docker exec -it mysql mysqldump -uroot -p密码 --all-databases > "/home/mysqldata/data_`date +%Y%m%d%H`.sql"
if [ $? -ne 0 ];then
    # 任务失败,发送邮件
    echo -e "测试环境备份失败,请求人工接入!" | mail -s '测试环境备份失败' xxxxx@163.com
    exit -1
fi
find /home/mysqldata -mtime +7 -name 'data_[1-9].sql' -exec rm -rf {} \;







0

评论区