centos7中如何利用crontab进行mysql定时备份

目录
  • centos7用crontab进行mysql定时备份
  • 备注
  • 附crontab文件的一些例子
  • 总结

centos7用crontab进行mysql定时备份

1、建立 mysql3306_backup.sh 文件

文件名及路径可以自定义,个人习惯将脚本、脚本日志、备份的数据放在mysql的data路径下,方便查找

mysql3306_backup.sh内容:

#!/bin/bash

# 以下配置信息请自己修改
mysql_user="USER" #MySQL备份用户
mysql_password="PASSWORD" #MySQL备份用户的密码
mysql_host="localhost"
mysql_port="3306"
mysql_charset="utf8" #MySQL编码
backup_db_arr=("db1" "db2") #要备份的数据库名称,多个用空格分开隔开 如("db1" "db2" "db3")
backup_location=/opt/mysql  #备份数据存放位置,末尾请不要带"/",此项可以保持默认,程序会自动创建文件夹
expire_backup_delete="ON" #是否开启过期备份删除 ON为开启 OFF为关闭
expire_days=3 #过期时间天数 默认为三天,此项只有在expire_backup_delete开启时有效

# 本行开始以下不需要修改
backup_time=`date +%Y%m%d%H%M`  #定义备份详细时间
backup_Ymd=`date +%Y-%m-%d` #定义备份目录中的年月日时间
backup_3ago=`date -d '3 days ago' +%Y-%m-%d` #3天之前的日期
backup_dir=$backup_location/$backup_Ymd  #备份文件夹全路径
welcome_msg="Welcome to use MySQL backup tools!" #欢迎语

# 判断MYSQL是否启动,mysql没有启动则备份退出
mysql_ps=`ps -ef |grep mysql |wc -l`
mysql_listen=`netstat -an |grep LISTEN |grep $mysql_port|wc -l`
if [ [$mysql_ps == 0] -o [$mysql_listen == 0] ]; then
        echo "ERROR:MySQL is not running! backup stop!"
        exit
else
        echo $welcome_msg
fi

# 连接到mysql数据库,无法连接则备份退出
mysql -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password <<end
use mysql;
select host,user from user where user='root' and host='localhost';
exit
end

flag=`echo $?`
if [ $flag != "0" ]; then
        echo "ERROR:Can't connect mysql server! backup stop!"
        exit
else
        echo "MySQL connect ok! Please wait......"
        # 判断有没有定义备份的数据库,如果定义则开始备份,否则退出备份
        if [ "$backup_db_arr" != "" ];then
                #dbnames=$(cut -d ',' -f1-5 $backup_database)
                #echo "arr is (${backup_db_arr[@]})"
                for dbname in ${backup_db_arr[@]}
                do
                        echo "database $dbname backup start..."
                        `mkdir -p $backup_dir`
                        `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`
                        flag=`echo $?`
                        if [ $flag == "0" ];then
                                echo "database $dbname success backup to $backup_dir/$dbname-$backup_time.sql.gz"
                        else
                                echo "database $dbname backup fail!"
                        fi

                done
        else
                echo "ERROR:No database to backup! backup stop"
                exit
        fi
        # 如果开启了删除过期备份,则进行删除操作
        if [ "$expire_backup_delete" == "ON" -a  "$backup_location" != "" ];then
                 #`find $backup_location/ -type d -o -type f -ctime +$expire_days -exec rm -rf {} \;`
                 `find $backup_location/ -type d -mtime +$expire_days | xargs rm -rf`
                 echo "Expired backup data delete complete!"
        fi
        echo "All database backup success! Thank you!"
        exit
fi

2、赋予shell文件可执行权限

#设置拥有者可读写,其他人不可读写执行
chmod 600 /data/mysql3306_backup.sh

#赋予“可执行”权限
chmod +x /data/mysql3306_backup.sh

3、使用crontab定时执行shell文件

每天凌晨1:00执行文件,同时自定义输出日志到/data/mysql3306_backup.log中

命令及配置:

出现未找到crontab命令,请检查是否已安装crontab,若未安装则先安装crontab

#便捷编辑定时任务
crontab -e

#配置
00 01 * * * /data/mysql3306_backup.sh >> /data/mysql3306_backup.log 2>&1

4、当我们编辑完定时任务过后,记得保存:wq,再重载一遍crond,再查看定时任务是否配置成功

命令:

#重载一遍crond
systemctl reload crond.service

#查看任务
crontab -l

备注

1、mysql3306_backup.log日志中出现"mysql: 未找到命令"或“mysqldumpl: 未找到命令”

原因如下:

系统默认会查找/usr/bin下的命令,由于mysql或mysqldumpl没有在这个目录下,所以出现not found。

因此需要做一个软连接到/usr/bin目录下。

执行命令:

ln -s  /apps/mysql/bin/mysql  /usr/bin
ln -s  /apps/mysql/bin/mysqldumpl  /usr/bin

其中/apps/mysql为:mysql的安装路径

2、Linux命令中reload和restart的区别

相同点:二者都是使配置文件重新生效

不同点:

reload (重新加载),reload会重新加载配置文件,服务不会中断。而且reload时会测试conf语法等,如果出错会rollback用上一次正确配置文件保持正常运行。也叫平滑重启,不会对已经连接的服务造成影响。

restart (重启)(先stop后start),会重启服务。这个重启会造成服务一瞬间的中断,如果配置文件出错会导致服务启动失败,那就是更长时间的服务中断了。

注意:修改配置文件前一定要先备份!为了保证线上服务高可用,推荐使用reload

附crontab文件的一些例子

30 21 * * * /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每晚的21:30重启apache。

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每月1、10、22日的4 : 45重启apache。

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每周六、周日的1 : 10重启apache。

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart

上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。

0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每星期六的11 : 00 pm重启apache。

* */1 * * * /usr/local/etc/rc.d/lighttpd restart

每一小时重启apache

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart

晚上11点到早上7点之间,每隔一小时重启apache

0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart

每月的4号与每周一到周三的11点重启apache

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart

一月一号的4点重启apache

总结

到此这篇关于centos7中如何利用crontab进行mysql定时备份的文章就介绍到这了,更多相关centos7用crontab进行mysql定时备份内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • centos7中crontab定时计划任务5分钟一次命令写法

    1.输入命令: [root@master ~]# crontab -e 2.添加: */5 * * * * /usr/share/nginx/spark_run_nginx_log.sh 2&>1 >> /usr/share/nginx/crontab_spark_run_nginx.log 3.等待验证: [root@master ~]# cd /usr/share/nginx/ [root@master nginx]# ls crontab_spark_run_nginx.l

  • Centos 7下利用crontab定时执行任务详解

    前言 cron服务是Linux的内置服务,但它不会开机自动启动.可以用以下命令启动和停止服务: /sbin/service crond start /sbin/service crond stop /sbin/service crond restart /sbin/service crond reload 以上1-4行分别为启动.停止.重启服务和重新加载配置. 要把cron设为在开机的时候自动启动,在 /etc/rc.d/rc.local 脚本中加入 /sbin/service crond st

  • Linux CentOS使用crontab设置定时重启的方法

    本篇介绍 crontab 设置定时任务,并且把 crontab 加入到开机自启动中. 1.配置一个每天自动重启的功能: 如果支持crontab 可直接 crontab -l 查看目前已有的定时任务 如果当前的linux不支持crontab 则需要进行配置: #安装Crontab yum install vixie-cron crontabs #设置开机启动Crontab chkconfig crond on #启动Crontab service crond start 先列一下现有的Cronta

  • centos7下rsync+crontab定期同步备份

    最近需求想定期备份内部重要的服务器数据到存储里面,顺便做个笔记 以前整过一个win下的cwrsync(客户端)+rsync(服务端:存储)的bat脚本 这次整一个Linux下的脚本sh,执行定期自动备份数据 客户端:192.168.0.100(rsync-Linux) 服务端:192.168.0.252(存储) rsync简介: rsync是linux系统下的数据镜像备份工具.使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH.rsync主机同步. 1.服务端

  • centos7中如何利用crontab进行mysql定时备份

    目录 centos7用crontab进行mysql定时备份 备注 附crontab文件的一些例子 总结 centos7用crontab进行mysql定时备份 1.建立 mysql3306_backup.sh 文件 文件名及路径可以自定义,个人习惯将脚本.脚本日志.备份的数据放在mysql的data路径下,方便查找 mysql3306_backup.sh内容: #!/bin/bash # 以下配置信息请自己修改 mysql_user="USER" #MySQL备份用户 mysql_pas

  • MySQL定时备份方案(利用Linux crontab)

    前言 虽说现在这世道有些爱情是有价的,但是数据是无价的,数据备份是尤为的重要,可以在你未来的某一天不小心删库了,不用着急跑路. 本片文章介绍的方案是利用Linux自身的crontab定时任务功能,定时执行备份数据库的脚本. 技术要点: 数据库备份dump命令 shell脚本 Linux定时任务crontab 数据备份dump 数据库都有一个导出数据库内数据和结构的命令,就是备份. 将备份的数据还原会将原来的数据中的表删了重建,再插入备份中的数据,这是恢复. 这一点需要注意,如果恢复之前的数据比备

  • MySQL定时备份数据库(全库备份)的实现

    目录 一.MySQL数据备份 1.1. mysqldump命令备份数据 1.2. mysqldump常用操作示例 1.3. 还原mysql备份内容 二. 编写脚本维护备份的数据库文件 2.1. 编写BASH维护固定数量备份文件 2.2. 使用crontab定期执行备份脚本 一.cron服务 二.crontab语法 三.创建cron脚本 三.执行效果截图 本文参考: 一.MySQL数据备份 1.1. mysqldump命令备份数据 在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具m

  • shell脚本实现mysql定时备份、删除、恢复功能

    mysql备份脚本: 脚本实现:按照数据库名称,全量备份mysql数据库并定期删除 #!/bin/bash #全备方式,一般在从机上执行,适用于小中型mysql数据库 #删除15天以前备份 #作者:lcm_linux #时间:2019.08.06 source ~/.bash_profile #加载用户环境变量 set -o nounset #引用未初始化变量时退出 set -o errexit #执行shell命令遇到错误时退出 #备份用户---需要在mysql中提前创建并授权 #GRANT

  • MySQL定时备份数据库操作示例

    本文实例讲述了MySQL定时备份数据库操作.分享给大家供大家参考,具体如下: 1. 查看mysqldump root@laowang:/# which mysqldump /usr/bin/mysqldump 2. 编写脚本 编辑my.cnf文件, 指定账号与密码, 然后在脚本中引用 root@laowang:/# vim /etc/my.cnf [mysqldump] user=root password=root 脚本文件 root@laowang:/var/backups# vim mys

  • 浅析mysql 定时备份任务

    简介 在生产环境上,为了避免数据的丢失,通常情况下都会定时的对数据库进行备份.而Linux的crontab指令则可以帮助我们实现对数据库定时进行备份.首先我们来简单了解crontab指令,如果你会了请跳到下一个内容mysql备份. 本文章的mysql数据库是安装在docker容器当中,以此为例进行讲解.没有安装到docker容器当中也可以参照参照. contab定时任务 使用crontab -e来编写我们的定时任务. 0 5 * * 1 [command] 前面的5个数字分别代表分.时.日.月.

  • Navicat for MySQL定时备份数据库及数据恢复详解

    在做数据库修改或删除操作中,可能会导致数据错误,甚至数据库奔溃,而有效的定时备份能很好地保护数据库.本篇文章主要讲述Navicat for MySQL定时备份数据库和数据恢复等功能,同时可以定时播放电影等设置,希望对您有所帮助,如果文章中存在错误或不足之处,还请海涵~ 一. 设置计划任务定时备份数据库 计划任务就是让电脑在指定的时间内执行指定的动作,这些动作可以是一个程序,也可以是一个批处理,但是至少是可以运行的!其实再通俗一点也就是相当于你在那个时间里面进行了对某个东西对鼠标双击的操作. 1.

  • 详解如何利用Xtrabackup进行mysql增量备份

    目录 利用Xtrabackup进行mysql增量备份 安装 设置数据库用于备份账户 全量备份 增量备份 提问总结 原理 为什么最后一次增量备份不用 "--apply-log-only" 为什么备份完后要准备备份 "prepare" 为什么选择这个做备份? 利用Xtrabackup进行mysql增量备份 现在xtrabackup版本升级到了8.0,但是只对mysql8.0才有支持, 我们这还是使用2.4, 但是2.4相比之前的2.1有了比较大的变化:innobacku

  • Windows下MySQL定时备份脚本的实现

    在windows服务器上,想要定时备份数据库数据,可采用windows的任务计划程序+数据库备份脚本组合.其中,MySQL数据库备份,起到关键作用是mysqldump.有关于mysqldump命令的用法,可以找MySQL的官方文档了解. 1 备份脚本 @echo off echo 设置MySql数据库的连接信息 set host=127.0.0.1 set port=3306 set user=root set pass=admin echo 设置要备份MySql数据库名称 set dbname

  • MySQL定时备份之使用Linux下的crontab定时备份实例

    1. Mysql备份某个数据库的命令 复制代码 代码如下: ##################################################################  # 备份某个数据库  ################################################################## # root 用户,创建备份目录  mkdir -p /usr/local/cncounter/mysql_dump  cd /usr/local/

随机推荐