shell脚本自动备份MySQL数据库

来源:互联网 发布:java 对象初始化 编辑:程序博客网 时间:2024/05/16 18:36

            为了防止对数据库的误操作,需要每天备份数据库,手动每天备份很麻烦,leader告诉我可以试着写个shell脚本,实现自动备份数据库,正好我来公司刚两周,正在学习这       方面的知识,刚好可以练习一下。把代码贴在下面,不太详细,不过可以提供个思路。

      shell脚本如下:

   

      #!/bin/bash

      BackupPath="/home/www/backup"   #备份目录

      BackupFile=$(date +%y-%m-%d-%H).sql  #日期格式作为备份文件名

      #检查备份目录是否存在


      if !(test -d $BackupPath)
      then
          mkdir $BackupPath
      fi

      mysqldump -u  root report  > "$BackupPath"/"$BackupFile"       #用户:root 数据库:report  没有密码

      #删除三天前的备份文件
      find "$BackupPath" -mtime +3 -type f |xargs rm -f

     注:1、在 mysqldump -u  root report  > "$BackupPath"/"$BackupFile" 中,如果数据库没有密码,就不要写-p,如果直接写成

                 mysqldump -u  root -p report  > "$BackupPath"/"$BackupFile",则需要手动输入密码,因为没有密码,即按回车,如果写成,

                 mysqldump -u  root -preport  > "$BackupPath"/"$BackupFile",即-p和数据库名之间没有空格,此时不用输密码,但执行即不报错,也没有结果,尽管生成了备份文                        件,但是备份文件是空的,没有数据。

             2、在shell中,首先要写好shell头部:#!/bin/bash

             3、在取时间代码dt=`date  '+%Y-%m-%d'`中,变量dt和等号之间一定不要有空格,否则系统会把dt当做命令来执行,这样就会找不到找不到命令,报错。

                  等号和后面的`date  '+%Y-%m-%d'`也不可以有空格,否则也会报错。      




       添加定时:(定时器可以在任意目录下通过crontab -e添加)

        #自动备份数据库
        10 6 * * * source  /etc/profile;sh /home/www/shell/auto_backup_db.sh >> /home/www/logs/auto_backup_db.log   (注:每天6点10分自动执行)

      注:在上面的定时器这行代码中,source后面一定要注意有空格,/home/www/shell/auto_backup_db.sh是要执行的脚本及其路径,刚开始时在这句代码前没有sh,

             结果定时器就不执行。根据马哥的测试方法,即把后半句放在终端执行

             source  /etc/profile; /home/www/shell/auto_backup_db.sh >> /home/www/logs/auto_backup_db.log显示权限不够。然后加上sh就好了。


                    

                                      — — — —这是我的第一篇博文,内容可能太过简陋,但是还是希望能给有缘看到她的人带来一点点帮助。同时,谨以此文感谢我得到的第一份工作,感谢                                                        面试我并带给我这次宝贵工作机会的大师兄,感谢我们数据组老大马哥对我的包容,感谢一直带我的龙哥,感谢数据组每一位技术牛牛的小伙       伴,感谢身边每个善良的人,感谢命运让我机缘巧合的得到现在的一切。

   



  

0 0
原创粉丝点击