MySQL自动备份shell脚本

 

在数据库的日常维护工作中,除了保证业务的正常运行以外,就是要对数据库进行备份,以免造成数据库的丢失,从而给企业带来重大经济损失。通常备份可以按照备份时数据库状态分为热备和冷备,按照备份数据库文件的大小分为增量备份、差异备份和全量备份.一种全量备份的方法,来实现定时备份数据到mysql脚本文件,并且支持过期删除。

1、新建shell脚本

  1. vi /opt/mysqlBackup.sh
  2.  
  3. #!/bin/bash
  4.  
  5. # 以下配置信息请自己修改
  6. mysql_user="USER" #MySQL备份用户
  7. mysql_password="PASSWORD" #MySQL备份用户的密码
  8. mysql_host="localhost"
  9. mysql_port="3306"
  10. mysql_charset="utf8" #MySQL编码
  11. backup_db_arr=("db1" "db2") #要备份的数据库名称,多个用空格分开隔开 如("db1" "db2" "db3")
  12. backup_location=/opt/mysql #备份数据存放位置,末尾请不要带"/",此项可以保持默认,程序会自动创建文件夹
  13. expire_backup_delete="ON" #是否开启过期备份删除 ON为开启 OFF为关闭
  14. expire_days=3 #过期时间天数 默认为三天,此项只有在expire_backup_delete开启时有效
  15.  
  16. # 本行开始以下不需要修改
  17. backup_time=`date +%Y%m%d%H%M` #定义备份详细时间
  18. backup_Ymd=`date +%Y-%m-%d` #定义备份目录中的年月日时间
  19. backup_3ago=`date -d '3 days ago' +%Y-%m-%d` #3天之前的日期
  20. backup_dir=$backup_location/$backup_Ymd #备份文件夹全路径
  21. welcome_msg="Welcome to use MySQL backup tools!" #欢迎语
  22.  
  23. # 判断MYSQL是否启动,mysql没有启动则备份退出
  24. mysql_ps=`ps -ef |grep mysql |wc -l`
  25. mysql_listen=`netstat -an |grep LISTEN |grep $mysql_port|wc -l`
  26. if [ [$mysql_ps == 0] -o [$mysql_listen == 0] ]; then
  27. echo "ERROR:MySQL is not running! backup stop!"
  28. exit
  29. else
  30. echo $welcome_msg
  31. fi
  32.  
  33. # 连接到mysql数据库,无法连接则备份退出
  34. mysql -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password <<end
  35. use mysql;
  36. select host,user from user where user='root' and host='localhost';
  37. exit
  38. end
  39.  
  40. flag=`echo $?`
  41. if [ $flag != "0" ]; then
  42. echo "ERROR:Can't connect mysql server! backup stop!"
  43. exit
  44. else
  45. echo "MySQL connect ok! Please wait......"
  46. # 判断有没有定义备份的数据库,如果定义则开始备份,否则退出备份
  47. if [ "$backup_db_arr" != "" ];then
  48. #dbnames=$(cut -d ',' -f1-5 $backup_database)
  49. #echo "arr is (${backup_db_arr[@]})"
  50. for dbname in ${backup_db_arr[@]}
  51. do
  52. echo "database $dbname backup start..."
  53. `mkdir -p $backup_dir`
  54. `mysqldump -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password $dbname --default-character-set=$mysql_charset | gzip > $backup_dir/$dbname-$backup_time.sql.gz`
  55. flag=`echo $?`
  56. if [ $flag == "0" ];then
  57. echo "database $dbname success backup to $backup_dir/$dbname-$backup_time.sql.gz"
  58. else
  59. echo "database $dbname backup fail!"
  60. fi
  61.  
  62. done
  63. else
  64. echo "ERROR:No database to backup! backup stop"
  65. exit
  66. fi
  67. # 如果开启了删除过期备份,则进行删除操作
  68. if [ "$expire_backup_delete" == "ON" -a "$backup_location" != "" ];then
  69. #`find $backup_location/ -type d -o -type f -ctime +$expire_days -exec rm -rf {} \;`
  70. `find $backup_location/ -type d -mtime +$expire_days | xargs rm -rf`
  71. echo "Expired backup data delete complete!"
  72. fi
  73. echo "All database backup success! Thank you!"
  74. exit
  75. fi

2、修改shell脚本属性,赋予执行权限

chmod 600 /opt/mysqlBackup.sh
chmod +x /opt/mysqlBackup.sh

3、定时执行脚本

================方法1============================

Crontab命令的格式为:crontab –l|-r|-e|-i [username],

其参数含义如表一: 参数名称   含义    示例
-l 显示用户的Crontab文件的内容
crontabl –l

-i 删除用户的Crontab文件前给提示
crontabl -ri

-r 
从Crontab目录中删除用户的Crontab文件

crontabl -r 
-e

编辑用户的Crontab文件
crontabl -e

  1. 01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本
  2. 02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本
  3. 22 4 * * 0 root run-parts /etc/cron.weekly   //每星期执行 /etc/cron.weekly内的脚本
  4. 42 4 1 * * root run-parts /etc/cron.monthly   //每月去执行/etc/cron.monthly内的脚本
  5.  

=====================方法2=============================================
vi /etc/crontab

添加

00 03 * * * /root/mysqlBackup.sh

分 时

修改重新载入配置

安装crontab
yum install crontabs

说明:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
查看crontab服务状态:service crond status
手动启动crontab服务:service crond start
查看crontab服务是否已设置为开机启动,执行命令:ntsysv
加入开机自动启动:
chkconfig crond on

vi /var/spool/mail/root 可查看脚本执行日志

4、MySQL恢复

mysql -u username -p databse < backup.sql

用户名           数据库名    备份sql

centos7 mysql自动备份的更多相关文章

  1. mysql 自动备份和nginx自动安装脚本

    一.自动备份Mysql脚本: 如下脚本为mysql自动备份脚本,仅供参考,可以根据实际情况修改. #!/bin/sh #auto backup mysql #wugk #Define PATH定义变量 ...

  2. mysql自动备份维护shell脚本 (copy)

    #!/bin/bash #Mysql 自动备份 压缩并上传到 指定ftp #设想每天凌晨3点备份mysql #编辑crontab配置文件 # * * * backupmysql.sh #压缩并以&qu ...

  3. Mysql自动备份工具1.0(2013年11月15日更新)

    Mysql自动备份工具1.0 下载地址 2013-11-15 1.解决日历控件在Windows7/8/8.1环境下遮挡按钮问题:2.解决按月备份当月没有该日期问题: 2013-11-13 1.Mysq ...

  4. Windows下mysql自动备份的最佳方案

    网上有很多关于window下Mysql自动备份的方法,其实不乏一些不好的地方和问题,现总结出一个最好的方法供大家参考: 新建一个记事本,然后重命名为: mysql_backup.bat 然后单击右键选 ...

  5. centos下yum安装crontab+mysql自动备份

    参考博文: centos下yum安装crontab yum install vixie-cron crontabs      //安装 chkconfig crond on               ...

  6. Windows下MYSQL自动备份批处理

    windows下MYSQL自动备份批处理 2011-05-04 09:16:45|  分类: mysql|举报|字号 订阅     按系统时间进行备份 注意mysql安装路径中如果有空格.就要把,.b ...

  7. Mysql 自动备份脚本

    转自: Mysql 自动备份脚本2 - - ITeye技术网站http://kangh.iteye.com/blog/2309091 备份方案: 备份主机:192.168.10.11 数据库服务器:1 ...

  8. MySql自动备份shell

    MySql黑屏备份是每个运维工程师必备的技能,以下是MySQL自动备份脚本: #/bin/bash#This is mysql backup shell on 2019/4/28 BAKUP_DIR= ...

  9. Mysql自动备份与还原 转

    Mysql自动备份与还原 一.自动备份:将以下代码保存为*.bat批处理脚本,然后再添加Windows定时作业,如每天凌晨2点执行:set s=%date:~0,4%%date:~5,2%%date: ...

随机推荐

  1. JavaBean与xml互转的方法详解

    本文实例讲述了Jaxb2实现JavaBean与xml互转的方法.分享给大家供大家参考,具体如下: 一.简介 JAXB(Java Architecture for XML Binding) 是一个业界的 ...

  2. Django Rest framework Swagger生成api文档

    关于swagger Swagger能成为最受欢迎的REST APIs文档生成工具之一,有以下几个原因: - Swagger 可以生成一个具有互动性的API控制台,开发者可以用来快速学习和尝试API. ...

  3. form 组件

    https://www.cnblogs.com/wupeiqi/articles/6144178.html class F2Form(forms.Form): title1=fields.CharFi ...

  4. 2019年Python、Golang、Java、C++如何选择?

    前言 作为开发者我们都知道,开发后台语言可选择的方向会很多,比如,Java,go,Python,C/C++,PHP,NodeJs….等很多,这么多语言都有什么样的优势?如果让你学习一门后端语言,又该如 ...

  5. Vue:window.onresize

    1. 添加属性screenHeight 和 timer. screenHeight: window.innerHeight timer: '' //  window.onresize函数频繁调用时,页 ...

  6. luoguP1131

    时态同步 ...这道题我也不知道咋\(A\)的. 思路: \(anst\) 距离 \(s\) 的最长距离,\(ansp\) 某一节点到祖先所有边的权值和这些些加过的权值和 先求出到\(s\)距离最长的 ...

  7. datatable 给某一列添加title属性

    简单描述:采用datatable拼接的表格,没有title属性,嗯就是这个情况,直接上代码 代码: //js代码$("#toAdd").click("click" ...

  8. poj1988 Cube Stacking 带权并查集

    题目链接:http://poj.org/problem?id=1988 题意:有n个方块,编号为1-n,现在存在两种操作: M  i  j  将编号为i的方块所在的那一堆方块移到编号为j的方块所在的那 ...

  9. java ReentrantLock结合条件队列 实现生产者-消费者模式 以及ReentratLock和Synchronized对比

    package reentrantlock; import java.util.ArrayList; public class ProviderAndConsumerTest { static Pro ...

  10. Zabbix (三)

    一.zabbix支持的主要监控方式: zabbix主要Agent,Trapper,SNMP,JMX,IPMI这几种监控方式,本文章主要通过监控理论和实际操作测试等方式来简单介绍这几种方式的监控原理和优 ...