现在的位置: 首页 > 关系型数据库 > 备份恢复 > 正文

mysql 数据库自动备份

时间:2013年12月25日 | 分类:备份恢复 | 评论:0 条 | 浏览:1,815 次

在数据库的管理过程中,经常涉及到数据库的备份问题,我们往往是采用脚本自动备份,下面演示一下备份相关问题

1.创建备份脚本,指定备份的数据库,用户密码等等

  1. [root@client100 ~]# vim backup.sh  
  2. # 备份脚本如下:  
  3.   
  4. #! /bin/bash  
  5.   
  6. # 进入mysqldump命令目录  
  7. cd /usr/bin/  
  8.   
  9. # 设置备份的时间,备份信息存放文件,备份路径,压缩路径,备份的用户,密码,主机,端口,数据库  
  10. DD=`date +%y-%m-%d==%H:%M:%S`  
  11. LOGFILE=/var/lib/mysql/mysqlbackup.log  
  12. backup_dir=/var/lib/mysql/dbbackup/  
  13. zip_dir=/var/lib/mysql/zipdir/  
  14. dbusername=backup  
  15. dbpassword=kongzhong  
  16. host=127.0.0.1  
  17. port=3306  
  18. # port2=3307  
  19. database1=login  
  20. # database2=  
  21. # database3=  
  22.   
  23. # 指定生成备份的文件名,压缩后的文件名  
  24. DumpFile="$database1"$(date +%y%m%d).dump  
  25. NewFile="$database1"$(date +%y%m%d).tgz  
  26.   
  27. # 查看备份的目录是否存在,不存在建立,并修改为mysql权限,并将相应输出信息写入日志文件  
  28. echo "check directory..." >> $LOGFILE  
  29. if [ ! -d $backup_dir ] ;then  
  30.   mkdir -p $backup_dir  
  31.   chown mysql:mysql $backup_dir  
  32. fi  
  33. echo $DD " backup start..." >> $LOGFILE  
  34. echo $DD >>$LOGFILE  
  35. echo "backup "$database1" ..." >> $LOGFILE  
  36.   
  37. # 备份数据库  
  38. ./mysqldump -h$host -P$port -u$dbusername -p$dbpassword  $database1 > $backup_dir$DumpFile  
  39.   
  40. # 进入数据备份目录,压缩备份的文件,压缩完后删除dump文件  
  41. cd $backup_dir  
  42. tar czvf $NewFile $DumpFile >> $LOGFILE 2>&1  
  43. rm -rf $DumpFile  
  44.   
  45. # 判断压缩存放目录是否存在,不存在,建立,修改权限,并将压缩过的备份文件移送到压缩目录  
  46. echo "moving zipfiles ..." >> $LOGFILE  
  47. cd $backup_dir  
  48. if [ ! -d $zip_dir ] ;then  
  49.   mkdir -p $zip_dir  
  50.   chown mysql:mysql $zip_dir  
  51. fi  
  52.  mv *.tgz  $zip_dir  
  53.   
  54. # 删除3天前的备份  
  55. #remove before 3 days  
  56. echo "remove before 3 days..." >> $LOGFILE  
  57. find $zip_dir -type f -mtime +3 -exec rm -f {} \;  
  58. echo "remove before 3 days OK" >>$LOGFILE  
  59.   
  60. echo "backup over" >> $LOGFILE  

2.给备份文件执行的权限

[root@client100 ~]# chmod +x backup.sh

3.先执行脚本测试,是否报错

[root@client100 ~]# ./backup.sh

4.如果测试正常,切换到mysql用户目录下,建立计划任务(假设每天凌晨3点备份)

[root@client100 ~]# su - mysql

# 下面就是建立计划任务(分 时 日 月 周 执行脚本的路径文件名)

[mysql@client100 ~]#crontab -e

0 3 * * * ./tmp/backup.sh

# 如果计划任务建好后,使用下面命令可以看到

[mysql@client100 ~]#crontab -l

5.现在备份计划就做好了,下面就可以正式测试了[如果备份有错误,可以查看刚才设置的备份日志,看输出信息排错]

 

×