1. # 配置定时任务
    2. crontab -e
    3. 00 03 * * * /data/mysql_backup.sh
    4. * * * * * command
    5. 星期 命令

    shell 脚本(定时备份 mysql 数据库,并根据当天日期打包)
    **

    1. #!/bin/bash
    2. backupdir=/data/mysql_backup
    3. time=` date +%Y%m%d%H`
    4. mysqldump -uroot -p'netmatch' drug-app > drug_app_$time.sql
    5. mysqldump -uroot -p'netmatch' drug-rx > drug_rx_$time.sql
    6. mysqldump -uroot -p'netmatch' drug-task > drug_task_$time.sql
    7. tar -cf sql_$time.tar *.sql
    8. rm -rf *.sql
    9. find $backupdir -name "db_*.sql.gz" -type f -mtime +5 -exec rm {} \; > /dev/null 2>&1

    抄了一个,https://hacpai.com/article/1591077630648

    1. #!/bin/bash
    2. PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
    3. export PATH
    4. #数据库ip
    5. DBHOST='xxx.xxx.xxx.xxx' // your db host
    6. #数据库用户名
    7. DBUSER='admin' // 数据库用户名
    8. #数据库用密码
    9. DBPASSWD='password' // 数据库用户名对应的密码
    10. #需要备份的数据库,多个数据库用空格分开
    11. DBNAME='dbname' // 数据库名
    12. #备份时间
    13. backtime=`date +%Y-%m-%d_%H%M%S`
    14. #备份路径(当前目录)
    15. BACKPATH=$(dirname $(readlink -f $0))
    16. echo $BACKPATH
    17. #日志备份路径
    18. LOGPATH="${BACKPATH}/log"
    19. #数据备份路径
    20. DBPATH="${BACKPATH}/db"
    21. #创建备份目录
    22. [ ! -d "${LOGPATH}" ] && mkdir -p "${LOGPATH}"
    23. [ ! -d "${DBPATH}" ] && mkdir -p "${DBPATH}"
    24. #日志记录头部
    25. echo "备份时间为${backtime},备份数据库表 ${DBNAME} 开始" >> ${LOGPATH}/mysqlback.log
    26. #正式备份数据库
    27. for table in $DBNAME; do
    28. source=`mysqldump -u ${DBUSER} -h${DBHOST} -p${DBPASSWD} ${table}> ${LOGPATH}/${backtime}.sql` 2>> ${LOGPATH}/mysqlback.log;
    29. #备份成功以下操作 $?获取上一个命令的操作结果,0代表成功
    30. if [ "$?" == 0 ];then
    31. cd ${LOGPATH}
    32. #为节约硬盘空间,将数据库压缩
    33. tar -czf ${DBPATH}/${table}${backtime}.tar.gz ./${backtime}.sql > /dev/null
    34. #删除原始文件,只留压缩后文件
    35. rm -f ${LOGPATH}/${backtime}.sql
    36. #删除七天前备份,也就是只保存7天内的备份
    37. find $DBPATH -name "*.tar.gz" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1
    38. echo "数据库表 ${DBNAME} 备份成功!!" >> ${LOGPATH}/mysqlback.log
    39. else
    40. #备份失败则进行以下操作
    41. echo "数据库表 ${DBNAME} 备份失败!!" >> ${LOGPATH}/mysqlback.log
    42. fi
    43. done