`
zhengdl126
  • 浏览: 2538911 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

用shell脚本进行MySQL数据库定时备份

 
阅读更多
对任何一个已经上线的电子商务站点来说,数据备份都是必须的。无论版本更新还是服务器迁移,备份数据的重要性不言而喻。人工备份数据的方式不单耗费 大量时间和精力,还灰常不专业的说。于是,有了下面这段脚本的出现。参考了网上的很多教程,外加自己的测试,以下脚本经测试可用。

    #!/bin/bash
    #Shell Command For Backup MySQL Database Everyday Automatically By Crontab
    #Author : Carlos Wong
    #Date : 2010-08-24

    #配置参数
    USER=root #数据库用户名" >用户名
    PASSWORD=××××× #数据库用户密码
    DATABASE=TIENIUZAI    #数据库名称
    WEBMASTER=tieniuzai@qq.com #管理员邮箱地址,用以发送备份失败消息提醒
    BACKUP_DIR=/var/www/Data_Backup/topons/ #备份文件存储路径
    LOGFILE=/var/www/Data_Backup/topons/data_backup.log #日记文件路径
    DATE=`date ‘+%Y%m%d-%H%M’` #日期格式(作为文件名)
    DUMPFILE=$DATE.sql #备份文件名
    ARCHIVE=$DATE.sql.tgz #压缩文件名
    OPTIONS=”-u$USER -p$PASSWORD –opt –extended-insert=false –triggers=false -R –hex-blob –flush-logs –delete-master-logs -B $DATABASE”  #mysqldump 参数 详情见帮助 mysqldump -help

    #判断备份文件存储目录是否存在,否则创建该目录
    if [ ! -d $BACKUP_DIR ] ;
    then
    mkdir -p “$BACKUP_DIR”
    fi

    #开始备份之前,将备份信息头写入日记文件
    echo ” ” >> $LOGFILE
    echo ” ” >> $LOGFILE
    echo “———————————————–” >> $LOGFILE
    echo “BACKUP DATE:” $(date +”%y-%m-%d %H:%M:%S”) >> $LOGFILE
    echo “———————————————– ” >> $LOGFILE

    #切换至备份目录
    cd $BACKUP_DIR
    #使用mysqldump 命令备份制定数据库,并以格式化的时间戳命名备份文件
    mysqldump $OPTIONS > $DUMPFILE
    #判断数据库备份是否成功
    if [[ $? == 0 ]]; then
    #创建备份文件的压缩包
    tar czvf $ARCHIVE $DUMPFILE >> $LOGFILE 2>&1
    #输入备份成功的消息到日记文件
    echo “[$ARCHIVE] Backup Successful!” >> $LOGFILE
    #删除原始备份文件,只需保 留数据库备份文件的压缩包即可
    rm -f $DUMPFILE
    else
    echo “Database Backup Fail!” >> $LOGFILE

    #备份失败后向网站管理者发送邮件提醒,需要mailutils或者类似终端下发送邮件工具的支持
    #mail -s “Database:$DATABASE Daily Backup Fail” $WEBMASTER
    fi
    #输出备份过程结束的提醒消息
    echo “Backup Process Done”

使用:

    将以上代码保存到: /usr/sbin/DataBackup     (文件名随意,只要不跟系统原有的命令同名即可;代码可以放到任何地方,放在sbin目录下只是为了方便执行,sbin目录下的文件/目录可在终端直接调 用,类似于windows下PATH变量指定的目录)
    为脚本添加可执行权限:  sudo chmod +x  /usr/sbin/DataBackup
    执行脚本: sudo  DataBackup
    如果需要定时执行备份命令的,只需将下面这段代码放到crontab 文件(sudo vim /etc/crontab)中去就可以了:

    01 3 * * * root /usr/sbin/DataBackup    #它代表着将于每天3点执行DataBackup脚本

小注意一下下:

    linux 下的shell脚本定义变量的格式为:  key=value  ,注意他们两者之间的” = “前后不能出现空格,否则系统无法确认该变量。
    用红色标注的那行,第一个类似单引号的字符”`”其实不是单引号,它的输入键在键盘ESC键下方。
    这个脚本只适合用于一些小站点的备份,因为它是对数据库进行全部备份而不是增量备份,不适合大容量的数据库备份。

Update:

2010-08-24  :  由于服务器上的MySQL配置文件里 的socket项值为 “/tmp/mysql.sock”, 而mysqldump在链接mysql server的时候会去查找位于/var/lib/mysql/目录下的mysql.sock文件。如果没有则会报错:

    mysqldump: Got error: 2002: Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’

解决方法是:一是,修改mysql配置文件里的socket项的值为  ’/var/lib/mysql/mysql.sock’,不过这种方法需要重启mysql服务,很不厚道。

二是,为/tmp/mysql.sock创建一个软链接到/var/lib/mysql/mysql.sock:

    ln  -s  /tmp/mysql.sock   /var/lib/mysql/mysql.sock
 
分享到:
评论

相关推荐

    mysql数据库自动定时备份

    MySQL数据库的自动定时备份是数据库管理中的重要环节,它确保了数据的安全性和可恢复性,尤其是在发生意外情况如系统故障、硬件损坏或人为错误时。本教程将详细讲解如何设置MySQL数据库的自动定时备份,包括步骤、所...

    shell 脚本对数据库定时备份

    通过上述步骤,我们可以构建一个完善的数据库定时备份系统,确保在数据丢失或系统故障时,能够快速恢复到某个已知的良好状态。同时,结合适当的版本控制和远程存储,可以进一步提高数据安全性。

    Mysql备份可以执行的shell脚本

    总结来说,通过编写shell脚本,我们可以实现MySQL数据库的自动化备份,包括全量备份和(借助第三方工具的)增量备份。创建并管理备份目录,结合cron job实现定时任务,确保数据的安全性和可靠性。

    Linux下定时备份MySQL数据库的Shell脚本.pdf

    ### Linux下定时备份MySQL数据库的Shell脚本知识点详解 #### 一、背景介绍与重要性 对于每一个在线网站或服务而言,数据备份是一项至关重要的任务。无论是为了应对未来的版本升级,还是服务器迁移的需求,定期备份...

    shell编程备份mysql数据库.sh

    防止误删服务器数据库 ,使用Shell脚本备份数据库: ### 1、需求分析: 1)每天凌晨2:10备份数据库atguiguDB到/data/backup/db 2)备份开始和备份结束能够给出相应的提示信息 3)备份后的文件要求以备份时间为...

    mysql数据库自动备份脚本

    mysql数据库定期自动备份的shell脚本。如定期每三天自动备份数据库,并只保存20份备份文件,多余的删除。

    MySQL(Docker) 自动备份 Shell 脚本

    今天这个备份分二个版本一个是linux上直接安装的mysql,另一种是docker上安装的mysql。基本操作都一样只是备份sql语句...可以选择设置需要备份的库,自动备份压缩,自动删除 7 天前的备份,需要使用 crontab 定时执行。

    shell脚本可配置多线程备份mysql5.7.8以后数据库.rar

    shell脚本在这里的作用是管理和控制MySQL数据库的备份操作,而MySQL数据库的版本5.7.8及以上意味着它支持高级特性,如InnoDB存储引擎的优化、JSON字段类型以及更强大的查询能力。 总之,利用shell脚本进行多线程...

    mysql数据库备份shell脚本,每天备份,只保留30天的备份数据

    mysql数据库备份shell脚本,每天备份,只保留30天的备份数据

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

    下面详细地介绍如何利用Shell脚本来实现MySQL的定时备份、删除旧备份以及恢复数据库的功能。 ### MySQL备份 为了备份MySQL数据库,我们通常使用`mysqldump`工具,它是一个非常有效的命令行工具,专门用于导出MySQL...

    自动定时备份远程服务器的mysql数据库并存储在本地

    本篇文章将详细介绍如何实现这一目标,将远程服务器的MySQL数据库自动定时备份并存储在本地。 首先,我们需要了解MySQL的数据备份类型。常见的备份方式有全量备份和增量/差异备份。全量备份是备份所有数据库或选定...

    Mysql数据库定时备份(linux版)v1.0.docx

    MySQL数据库在Linux环境下的定时备份是确保数据安全和业务连续性的重要环节。下面将详细介绍如何通过自定义的Shell脚本和Linux的定时任务(Cron)来实现这一目标。 首先,确保你的Linux服务器上已经安装了MySQL服务...

    通过shell脚本,备份mysql数据库

    linux系统通过shell脚本,备份mysql数据库,并通过定时任务的配置,每天在设定的时间内执行备份计划

    linux mysql定时备份脚本

    本文将详细介绍如何利用shell脚本来创建MySQL的定时备份,并结合提供的"mysqlbackup.sh"脚本和"添加定时任务.txt"文件,帮助你实现这一功能。 首先,我们来看"mysqlbackup.sh"这个shell脚本。这个脚本通常包含以下...

    如何在linux下实现mysql数据库每天自动备份 txt

    本文将详细介绍如何通过编写Shell脚本并结合Cron定时任务来实现MySQL数据库的每日自动备份。 #### 一、准备阶段 在开始之前,请确保您的Linux系统已经安装了MySQL服务器以及相关的命令行工具。如果尚未安装,可以...

    Linux shell实现每天定时备份mysql数据库

    在Linux环境中,使用shell脚本来实现每天定时备份MySQL数据库是一种常见的自动化操作,它可以帮助系统管理员高效地维护数据库的备份策略,确保数据的安全性。以下将详细介绍如何通过Linux shell实现这个功能。 首先...

    Linux下清理数据库shell脚本

    2. **数据库定时备份**:数据库备份是防止数据丢失的重要措施。shell脚本可以结合数据库的备份工具(如mysqldump for MySQL,expdp/impdp for Oracle)进行定时备份。通常,备份脚本会包含以下步骤: - 连接到...

    mysql数据库每天凌晨3点备份数据库的脚本

    总的来说,这个`DB_backup.sh`脚本结合Linux的`crontab`服务,提供了一个简单但实用的MySQL数据库定时备份解决方案。通过调整脚本,可以根据实际需求进行定制,比如备份频率、备份保留天数、备份类型(全量或增量)...

    shell脚本可配置备份mysql5.7.8以前数据库.rar

    在这个场景下,shell脚本用于自动化备份MySQL数据库,节省手动操作的时间和精力。 MySQL是世界上最流行的开源关系型数据库管理系统,5.7.8版本是在其发展历史中一个重要的里程碑。在该版本之前,数据库的备份主要...

    shell脚本可配置备份mysql5.7.8以前数据库异常sendEmail25发邮件.rar

    这篇文档将深入解析标题"shell脚本可配置备份mysql5.7.8以前数据库异常sendEmail25发邮件.rar"中的关键知识点,包括shell脚本、MySQL数据库备份、异常处理以及sendEmail服务。 首先,我们要了解shell脚本。Shell...

Global site tag (gtag.js) - Google Analytics