数据库MySQL(三) 备份数据库,保留7天

数据库MySQL(三) 备份数据库,保留7天

使用场景:Linux下实现MySQL数据库定时备份,仅保留7天的数据

操作系统:CentOS 7

数据库:Mysql 5.7

工具:crontab (CentOS 7 系统自带)

1、创建备份目录

# 本文这里放在目录local下
cd /usr/local/mysql
# 创建备份目录
mkdir backupdata

2、修改MySQL配置文件my.cnf

# 编辑 /etc/my.cnf 文件地址可能与本文不同,自行切换即可
vim /etc/my.cnf

#添加 mysqldump 配置
[mysqldump]
user = root      # mysql用户名
password = xxxx  # mysql密码

# 开启 binlog
[mysqld]
server_id = 18   # ip最后两位
log_bin = mysql-bin
binlog_format = ROW
expire_logs_days = 30

3、重启MySQL数据库

# 重启数据库
systemctl restart mysql.service
# 查看数据库状态
systemctl status mysql.service
# 查看 binlog 日志是否正常开启
show variables like 'log_%'

4、新建 shell 脚本

# 在 mysql目录下创建备份脚本
vim DBbackup.sh

#脚本内容如下
#!/bin/bash
/usr/local/mysql/bin/mysqldump Database_name | gzip > /usr/local/mysql/backupdata/Database_name_$(date +%Y%m%d).sql.gz

# 删除7天前的备份数据
find /usr/local/mysql/backupdata -name "Database_name_*.sql.gz" -type f -mtime +7 -exec rm {} \; > /dev/null 2>&1

5、DBbackup.sh 添加可执行权限

# 修改文件权限
chmod u+x DBbackup.sh
# 执行脚本看是否有错
./DBbackup.sh

6、使用crontab添加定时计划任务

# 首先检查是否安装了crontab 
rpm -qa | grep crontab

# 安装 crontab
yum install crontab

# 已安装,则执行下方命令,类似vi/vim命令
crontab -e

# 输入定时语句内容并保存,每天23:59备份数据  
# crontab格式: 分 时 日 月 星期 要执行的文件路径
59 23 * * *  /usr/local/mysql/DBbackup.sh

# 查看当前定时任务
crontab -l

7、数据恢复 (恢复定时备份的数据)

# 解压 gz 文件
gzip -d database_name_20230111.sql.gz

# 导入数据库
mysql -uroot -p database_name < database_name_20230111.sql
# 然后输入数据库的密码即可
# 此时已经恢复定时备份的数据,再打开binlog日志。恢复定时备份期间至数据丢失的数据即可

8、打开binlog日志,恢复定时备份期间数据丢失时的数据

# 登录MySQL
mysql -uroot -p

# 查看binlog
show master logs;

# 根据相应的log文件,以及需要恢复的行号执行即可
# 查看二进制日志内容
mysqlbinlog /filename.number
# 使用二进制日志还原数据库
mysqlbinlog mysql-bin.00001 | mysql -uroot -p

9、使用mysqlbinlog命令可能遇到的问题

# 使用mysqlbinlog命令时,可能会报错 -bash: mysqlbinlog: command not found
# 原因:由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,就会找不到这个命令爆出提示
# 要想解决此问题,我们需要做的就是映射一个链接到/usr/bin目录下,相当于建立一个链接文件,类似给mysqlbinlog添加一个环境变量一样

# 首先我们可以用which命令查看是不是这个原因(which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置)
which mysqlbinlog

# 搜索到命令所在路径之后,进入到需要映射该命令的路径下,这里进入
cd /usr/local/bin

# 接着,把mysqlbinlog安装目录/usr/local/mysql/bin/mysqlbinlog 映射到/usr/local/bin目录下,/usr/local/mysql/bin/mysqlbinlog 这个路径一定要是你自己的mysqlbinlog安装路径哦,不要直接复制
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xzh_2022

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值