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 文件,以及需要恢复的行号执行即可,这里就不多说了

 

  

 

posted @ 2021-07-12 10:57  林诺欧巴  阅读(601)  评论(0编辑  收藏  举报