# 保留10天数据,
# mysqldocker 为安装mysql的docker
docker exec -i mysqldocker bash<<'EOF'
# 判断目录是不是已经存在,如果不存在则创建
if [ ! -d "/backups/mysql" ]; then
mkdir -p /backups/mysql
fi
# backups 为数据库的名称
mysqldump backups > /backups/mysql/backups_$(date +%Y%m%d).sql
#删除超过10天的数据
rm -f /backups/mysql/backups_$(date -d -10day +%Y%m%d).sql
exit
EOF
# 判断目录是不是已经存在,如果不存在则创建
if [ ! -d "/backups/mysql" ]; then
mkdir -p /backups/mysql
fi
# 将docker中的备份的数据拷贝到宿主机上。
docker cp mysqldocker:/backups/mysql/backups_$(date +%Y%m%d).sql /backups/mysql
#删除超过10天的数据
rm -f /backups/mysql/backups_$(date -d -10day +%Y%m%d).sql
#!/bin/bash
#保存备份个数,备份31天数据
number=31
#备份保存路径
backup_dir=/lixinjia/mysqlbak
#日期
dd=`date +%Y-%m-%d-%H-%M-%S`
#备份工具
#tool=mysqldump
#用户名
username=xxx
#密码
password=xxx
#将要备份的数据库
database_name=xxx
#如果文件夹不存在则创建
if [ ! -d $backup_dir ];
then
mkdir -p $backup_dir;
fi
#简单写法 mysqldump -u root -p123456 users > /root/mysqlbackup/users-$filename.sql
$tool -u$username -p$password $database_name > $backup_dir/$database_name-$dd.sql
#写创建备份日志
echo "create $backup_dir/$database_name-$dd.dupm" >> $backup_dir/log.txt
#找出需要删除的备份
delfile=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | head -1`
#判断现在的备份数量是否大于$number
count=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | wc -l`
if [ $count -gt $number ]
then
#删除最早生成的备份,只保留number数量的备份
rm $delfile
#写删除文件日志
echo "delete $delfile" >> $backup_dir/log.txt
fi
crontab -e
1 0 * * * sh /shell/backups.sh 每天凌晨12点01分执行
(第二种)
第一步:写cron脚本文件,命名为mysqlRollBack.cron。
15,30,45,59 * * * * echo "xgmtest....." >> xgmtest.txt 表示,每隔15分钟,执行打印一次命令
第二步:添加定时任务。执行命令 “crontab crontest.cron”。搞定
第三步:"crontab -l" 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本