docker/普通数据库备份

  • 针对docker的情况
# 保留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脚本
  • 可能备份为空的情况

    1.找到mysqldump所在的路径,linux命令:find / -name mysqldump
    2.将msqldump超链接至:/usr/bin目录下,linux命令:ln -fs /usr/local/mysql/bin/mysqldump /usr/bin即可。
    以上路径因安装路径不同而不同,到时候替换就行。

# docker   mysql 

评论

渣男 : 456
三群的弟弟 : 123
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×