写一个shel脚本 完全备份 然后每天增量备份 以及计划任务 一周 mysql 数据库
首先确保你已安装percona-xtrabackup
,如果未安装,可根据你的操作系统使用相应的包管理工具进行安装,例如在 CentOS 上可以使用yum install percona-xtrabackup
脚本内容如下
bash
#!/bin/bash
# 获取今天是一周中的第几天,1代表星期一,7代表星期日
whichday=$(date +%u)
# 获取今天的日期,格式为YYYY - MM - DD
today=$(date +%F)
# 计算并获取昨天的日期
yesterday=$(date -d '-1 day' +%F)
# 设置备份时使用的MySQL登录信息,包括用户名、密码及不使用时间戳的选项
Login='--user=your_username --password=your_password --no - timestamp'
# 定义函数:执行全量备份
function FULL() {# 使用innobackupex命令执行全量备份,备份存放路径包含今天的日期innobackupex ${Login} /db/full_${today}
}
# 定义函数:执行增量备份
function INCR() {# 使用innobackupex命令执行增量备份,指定增量备份的存储路径和基于哪个目录的增量innobackupex --incremental ${Login} /db/incr_${today} --incremental - basedir=$1
}
# 根据今天是周中的哪一天来决定执行哪种备份
if (${whichday} -eq 7); thenFULL
# 如果是周一,基于上周日的全量备份执行增量备份
elif (${whichday} -eq 1); thenINCR /db/full_${yesterday}
elseINCR /db/incr_${yesterday}
fi
将上述脚本保存为一个文件,例如backup_mysql.sh
,然后使用chmod +x backup_mysql.sh
命令赋予其执行权限。
接下来设置计划任务,让脚本每周日执行完全备份,每天执行增量备份。执行crontab -e
命令,添加以下内容1:
bash
# 每天凌晨2点执行备份脚本
0 2 * * * /path/to/backup_mysql.sh
这样就完成了 MySQL 数据库的每周完全备份和每日增量备份设置,以及相应的计划任务配置。你需要将脚本中的your_username
和your_password
替换为实际的 MySQL 用户名和密码,/db/full_${today}
和/db/incr_${today}
等路径可根据实际需求修改为合适的备份存储路径。