Linux下实现MySQL数据库定时备份,删除7天前的备份
咳~ 咳~ 为了避免数据操作失误、数据丢失、甚至删库跑路,简单做个数据备份吧
1、创建备份目录
# 习惯放在 local 下 cd /usr/local/ # 创建备份目录 mkdir backup cd backup # 在备份目录下创建 sql 文件夹 mkdir sql
2、修改 MySQL 配置文件 my.conf
# 编辑 /etc/my.conf 文件地址可能与我不同,自行切换即可 vim /etc/my.conf # 开启 binlog [mysqld] lob-bin=mysql-bin # 开启二进制日志 server-id=12 # ip后2位 # 添加 mysqldump 配置 [mysqldump] user=root # mysql用户名 password=root # mysql密码
3、重启 MySQL 数据库
systemctl restart mysql
4、创建 shell 脚本
# 在 backup 目录下创建 备份脚本 vim DBbackup.sh # 脚本内容如下: #!/bin/bash /usr/local/mysql/bin/mysqldump bosen_shop | gzip > /usr/local/backup/sql/bosen_shop_$(date +%Y%m%d).sql.gz # 删除7天前的备份数据 find /usr/local/backup/sql -name "bosen_shop_*.sql.gz" -type f -mtime +7 -exec rm {} \; > /dev/null 2>&1
把 bosen_shop 换成自己的数据库名,备份为 gz 文件压缩空间
5、DBbackup.sh 添加可执行权限
chmod u+x DBbackup.sh # 执行脚本看是否有错 ./DBbackup.sh
6、添加定时计划任务
crontab -e
# 就像vi\vim 功能,要先安装 crontab
# 输入下方内容并保存
30 23 * * * /bin/bash /usr/local/backup/DBbackup.sh # 每天 23:30 执行
查看 当前的定时任务
crontab -l
7、数据恢复
# 解压 gz 文件 gzip -d bosen_shop_20210711.sql.gz # 导入数据库 mysql -u root -p bosen_shop < bosen_shop_20210711.sql # 输入数据库的密码即可
此时已经恢复定时备份的数据,再打开 binlog 日志。恢复定时备份期间至数据丢失时的数据即可
# 登录 MySQL mysql -uroot -p # 输入 root密码 # 查看 binlog show master logs; # 根据相应的 log 文件,以及需要恢复的行号执行即可,这里就不多说了