经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MySQL » 查看文章
MySQL 数据库备份脚本
来源:cnblogs  作者:Librarookie  时间:2022/1/17 11:01:20  对本文有异议

MySQL 数据库备份脚本


  1. #!/bin/bash
  2. # 数据库连接信息
  3. DB_HOST="127.0.0.1"
  4. DB_PORT="3306"
  5. DB_USER="root"
  6. DB_PASSWD="root"
  7. # 时间格式化,如 20211216
  8. DATE="`date +%Y%m%d`"
  9. # 备份文件目录
  10. DIR_BACKUP="${HOME}/data/db-backup"
  11. # 日志目录: ${HOME}/data/db-backup/logs
  12. DIR_LOG="${DIR_BACKUP}/logs"
  13. # 日志文件: ${HOME}/data/db-backup/logs/db_backup.INFO.2021-12-30.log
  14. FILE_LOG="${DIR_LOG}/db_backup.INFO.`date +%F`.log"
  15. # 文件保留天数
  16. DAY=7
  17. DAY_LOG="`expr ${DAY} + 7`"
  18. # 备份数据库名
  19. DATABASES=("db1 db2 db3")
  20. # 测试目录, 目录不存在则自动创建
  21. # test -d ${DIR_LOG} || echo passwd | sudo -S mkdir -p ${DIR_LOG}
  22. test -d ${DIR_LOG} || mkdir -p ${DIR_LOG}
  23. # ------------------- 2021-12-16_17:40:48 Start -------------------
  24. echo -e "\n----------------- $(date +%F\ %T) Start -----------------"
  25. echo -e "\n================= $(date +%F\ %T) Start =================" >> ${FILE_LOG}
  26. # 遍历数据库名
  27. for database in ${DATABASES[@]}; do
  28. # 打印备份的数据库名
  29. echo "----------- Current backup database: [ ${database} ] ------------"
  30. echo "-------------- Backed-up database: [ ${database} ] --------------" >> ${FILE_LOG}
  31. done
  32. # 备份指定的数据库
  33. mysqldump --opt --single-transaction --master-data=2 --default-character-set=utf8 -h${DB_HOST} -P${DB_PORT} -u${DB_USER} -p${DB_PASSWD} -B ${DATABASES} | gzip > ${DIR_BACKUP}/mysql_backup_${DATE}.sql.gz
  34. # # 备份全部数据库
  35. # mysqldump --opt --single-transaction --master-data=2 --default-character-set=utf8 -h${DB_HOST} -P${DB_PORT} -u${DB_USER} -p${DB_PASSWD} -A | gzip > ${DIR_BACKUP}/mysql_backup_${DATE}.sql.gz
  36. echo "------- Backup file created: [ mysql_backup_${DATE}.sql.gz ]"
  37. echo "------- Backup file created: [ mysql_backup_${DATE}.sql.gz ]" >> ${FILE_LOG}
  38. # ---------------------------------------------------------------------------------
  39. # 至此, 备份已完成, 下面是清理备份的旧文件, 释放磁盘空间
  40. # 方式一:清理旧文件
  41. # 查找 7天前的文件
  42. OLD_BACKUP="`find ${DIR_BACKUP} -type f -mtime +${DAY} -iname mysql-\*.gz`"
  43. OLD_LOGS="`find ${DIR_LOG} -type f -mtime +${DAY_LOG} -iname db_backup.INFO.\*.log`"
  44. # 遍历旧备份文件
  45. for bak in "${OLD_BACKUP[@]}"; do
  46. # 删除旧备份
  47. rm -f ${bak}
  48. echo "------------------- Deleted old bak files -------------------" >> ${FILE_LOG}
  49. echo "${bak}" >> ${FILE_LOG}
  50. done
  51. # 遍历旧日志
  52. for log in "${OLD_LOGS[@]}"; do
  53. # 删除旧日志
  54. rm -f ${log}
  55. echo "------------------- Deleted old log files -------------------" >> ${FILE_LOG}
  56. echo "${log}" >> ${FILE_LOG}
  57. done
  58. # 方式二:清理旧文件
  59. # echo "--------------------- Deleted old files ---------------------" >> ${FILE_LOG}
  60. # echo "`find ${DIR_BACKUP} -type f -mtime +${DAY} -iname mysql-\*.gz`" >> ${FILE_LOG}
  61. # echo "`find ${DIR_LOG} -type f -mtime +${DAY_LOG} -iname db_backup.INFO.\*.log`" >> ${FILE_LOG}
  62. # find ${DIR_BACKUP} -type f -mtime +${DAY} -iname mysql-\*.gz -exec rm -f {} \;
  63. # find ${DIR_LOG} -type f -mtime +${DAY_LOG} -iname db_backup.INFO.\*.log -exec rm -f {} \;
  64. echo -e "------------------ $(date +%F\ %T) End ------------------\n"
  65. echo -e "================== $(date +%F\ %T) End ==================\n" >> ${FILE_LOG}

原文链接:http://www.cnblogs.com/cure/p/15767567.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号