- 脚本
将开发库的所有库数据和表结构导出到sql,并压缩成zip文件。备份文件保留7天,在执行时要删除7天前的备份文件。
#!/bin/bash
# 年月日,路径
export name=db_`date +%Y%m%d%H%M%S`
export path=/data/mysql/backup/
# 数据库地址、端口,数据库、账号、密码
echo "删掉之前的数据,只保留7天..."
# 删掉之前的数据,按修改时间只保留7天
find $path -type f -name "*.zip" -mtime +7 -exec rm -rf {} \;
echo "开始备份,文件生成路径:$path..."
# -h地址 -P端口 -u账号 -p密码 数据库
# 常用命令:
# --no-create-db, -n/--no-create-info, -t 只导出数据,而不添加CREATE TABLE 语句
# --no-data, -d 不导出任何数据,只导出数据库表结构
# --routines, -R 导出存储过程以及自定义函数
# --events, -E 导出事件
docker exec mysql sh -c 'exec mysqldump -uroot -p"xxx" --all-databases -R -E --force' > ${path}/${name}.sql
cd $path
zip ${name}.zip ${name}.sql
rm -rf ${name}.sql
echo "备份完成!"
- cron
设置定时任务定期执行备份脚本,传入一个目录用于保存备份的数据库文件。
0 1 * * * bash /xx/mysql/backup/backup.sh >> /data/xx/backup/backup.log 2>&1