【MySQL】 数据库定期备份

灰太狼 2023-03-06 05:45 26阅读 0赞

目录

一、数据库备份方案

二、相关脚本

2.1 数据库备份脚本

2.2 Cron 循环脚本及使用

2.2.1 循环脚本

2.2.2 启动和相关命令

三、增量备份及其他


一、数据库备份方案

数据库定期备份通常是使用备份脚本 + Cron 定期自动循环实现的,一般为每天一次的全量备份

二、相关脚本

2.1 数据库备份脚本

  1. #!/bin/bash
  2. # 全备方式,一般在从机上执行,适用于小中型mysql数据库:
  3. source /etc/profile # 加载系统环境变量
  4. source ~/.bash_profile # 加载用户环境变量
  5. # 定义全局变量
  6. #登录数据库用户名
  7. user="root"
  8. #访问数据库密码
  9. password="root"
  10. #访问地址
  11. host="localhost"
  12. #访问数据库端口
  13. port="3306"
  14. #备份数据库名称,多个数据库用空格进行间隔
  15. db=("test" "tom")
  16. local="--single-transaction"
  17. #数据库位置
  18. mysql_path="/opt/mysql"
  19. #备份地址
  20. backup_path="/opt/mysqldump"
  21. date=$(date +%Y%m%d_%H:%M:%S)
  22. day=30
  23. #日志路径
  24. backup_log="/opt/mysqldump/mysql-backlog.log"
  25. # 判断是否存在目录,不存在则创建目录
  26. if [ ! -e $backup_path ];then
  27. mkdir -p $backup_path
  28. fi
  29. # 删除30天以前备份
  30. #find $backup_path -type f -mtime +$day -exec rm -rf {} \; > /dev/null 2>&1
  31. echo "开始备份数据库: ${db[*]}"
  32. # 备份数据库后压缩
  33. backup_sql(){
  34. dbname=$1
  35. #保存的文件名称
  36. backup_name="${dbname}_${date}.sql"
  37. mysqldump -h $host -P $port -u $user -p$password $lock --default-character-set=utf8 --flush-logs -R $dbname > $backup_path/$backup_name
  38. if [[ $? == 0 ]];then
  39. cd $backup_path
  40. # tar --force-local参数压缩带有冒号的压缩包
  41. tar czvf $backup_name.tar.gz $backup_name --force-local
  42. size=$(du $backup_name.tar.gz -sh | awk '{print $1}')
  43. rm -rf $backup_name
  44. echo "$date 备份 $dbname($size) 成功"
  45. else
  46. cd $backup_path
  47. rm -rf $backup_name
  48. echo "$date 备份 $dbname 失败"
  49. fi
  50. }
  51. # 多个库循环备份
  52. length=${#db[@]}
  53. for ((i=0;i<$length;i++));do
  54. backup_sql ${db[i]} >> $backup_log 2>&1
  55. done
  56. echo "备份结束,结果查看 $backup_log"
  57. du $backup_path/*$date* -sh | awk '{print "文件:" $2 ",大小:" $1}'

2.2 Cron 循环脚本及使用

2.2.1 循环脚本

语句的意思为每天凌晨一点开始触发,自动运行脚本

  1. 0 1 * * * /opt/mysql/mysql_dump.sh > /dev/null 2>&1

其他相关操作:

https://blog.csdn.net/djrm11/article/details/96634703

2.2.2 启动和相关命令

# 新建脚本文件,复制脚本进入

  1. # 编辑crontab服务文件
  2. crontab -e
  3. # 复制脚本内容到文件中,每周日凌晨一点自动执行
  4. 0 1 * * * /opt/mysql/mysql_dump.sh > /dev/null 2>&1

# 加入定时任务

  1. crontab mysql_cron_back.cron

# 查看当前运行的定时任务

  1. crontab -l

20200806094228491.png

# 删除运行的定时任务

  1. crontab -r

三、增量备份及其他

转载自大佬博客:https://blog.csdn.net/qq_40732354/article/details/107186874

发表评论

表情:
评论列表 (有 0 条评论,26人围观)

还没有评论,来说两句吧...

相关阅读