1、把以下shell代码保存为backup_mysql


   
  1. #!/bin/sh

  2. # Use mysqldump --help get more detail.

  3. #

  4. # 定义变量,请根据具体情况修改

  5. # 定义脚本目录

  6. scriptsDir=`pwd`


  7. # 定义用于备份数据库的用户名和密码

  8. user=root

  9. userPWD=123456


  10. # 定义备份数据库名称

  11. dbNames=(database1 database2 database3)


  12. # 定义备份目录

  13. dataBackupDir=/home/test/backup


  14. # DATE=`date -I`

  15. DATE=`date -d "now" +%Y%m%d`


  16. echo `date -d "now" "+%Y-%m-%d %H:%M:%S"`> $eMailFile


  17. for dbName in ${dbNames[*]}

  18. do

  19. # 定义备份文件名

  20. dumpFile=$dataBackupDir/db/$dbName-$DATE.sql.gz


  21. # 使用mysqldump备份数据库,请根据具体情况设置参数

  22. mysqldump -u$user -p$userPWD $dbName | gzip > $dumpFile

  23. done

2、在crontab里加入以下脚本
00 00 * * 0 /home/test/backup_mysql.sh

这里只有简单的备份功能,还可以加入备份日志、发送邮件、发送备份失败短信等与备份有关的功能




下面是shell定期备份数据库脚本


   
  1. #!/bin/sh

  2. #name backdb.sh


  3. TIMESTR=`date +%Y%m%d_%HH`

  4. HOST="hostname"

  5. BACKUPDSTDIR="/path_to_backup/backup"

  6. BACKUPDSTDEV="/back_device_name"

  7. /usr/bin/find ${BACKUPDSTDIR}-mtime +14-type f -exec rm -f {}\;

  8. MAXAVAILABLE=5000000


  9. AVAILABLE=`df -k ${BACKUPDSTDEV} | grep "${BACKUPDSTDEV}" | awk '{print $4}'`


  10. if[ ${AVAILABLE}-lt ${MAXAVAILABLE}];then

  11. echo "NO ENOUGH disk space at ${BACKUPDSTDEV}, backup is SKIPPED!"

  12. exit 1

  13. fi


  14. #logdserv=***.***.***.***

  15. #destdir=/server's back dir


  16. /usr/bin/mysqldump -uroot -proot's passwd --all-databases --opt > ${BACKUPDSTDIR}/${TIMESTR}_${HOST}.sql

  17. gzip ${BACKUPDSTDIR}/${TIMESTR}_${HOST}.sql


  18. #ncftpput -E -u data -p mydata! $logdserv $destdir $tarfn

  19. #/usr/bin/ncftpput -E -u data -p mydata! $logdserv $destdir /backup/mysqlbackup/${TIMESTR}_${HOST}.sql.gz

http://www.dewen.org/search/q/shell%E8%84%9A%E6%9C%AC%E7%9C%9F%E5%AE%9E%20%E8%BF%9B%E5%BA%A6%E6%9D%A1