`
zhengdl126
  • 浏览: 2512635 次
  • 性别: 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
 
分享到:
评论

相关推荐

    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 定时执行。

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

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

    Mysql备份可以执行的shell脚本

    Mysql备份,shell脚本运行代码,创建各自不同的目录文件

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

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

    python定时备份mysql数据库脚本

    Python定时备份mysql数据库,比shell写的要简洁的多,以后扩展也会很容易,并且只保留最新的几个数据库备份文件

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

    主要介绍了shell脚本实现mysql定时备份、删除、恢复功能,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

    shell脚本定时备份MySQL数据库数据并保留指定时间

    同样的备份脚本也可用于生产环境MySQL数据库定时备份。 环境:CentOS 7.5 / MySQL 5.7 #!/bin/sh # 数据库账号信息 DB_USER=root DB_PWD=root DB_HOST=127.0.0.1 DB_PORT=3306 # MYSQL所在目录 MYSQL_DIR=/home/...

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

    每天定时备份mysql数据库任务,删除指定天数前的数据,保留指定天的数据; 需求:   1,每天4点备份mysql数据;   2,为节省空间,删除超过3个月的所有备份数据;   3,删除超过7天的备份数据,保留3个月里的 10...

    mysql定时备份(linux脚本).zip

    linux中mysql定时备份shell脚本,生产环境中使用过,只需要脚本中相应的ip地址、端口、账号和密码就可以使用

    Linux自动备份MySQL数据库脚本代码

    下面这段Linux的Shell脚本用于每日自动备份MySQL数据库,可通过Linux的crontab每天定时执行

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

    mysql数据库每天凌晨3点备份数据库的脚本,带具体命令参数注释,稍微修改即可使用。需配合linux的定时任务命令

    linux下mysql数据库备份脚本

    两个linux下mysql数据库备份脚本,带压缩功能,定时删除,附带脚本说明,运维必知的,自己上传防止丢失,经典脚本,因为百度有很多表述不清,所以自己总结了这些脚本,作为个人知识库,分享给所有人

    MySQL数据库定时备份的实现方法

    1. 创建shell脚本 vim backupdb.sh 创建脚本内容如下: #!/bin/sh db_user="root" ... /usr/bin/mysqldump :mysql数据库安装目录下的mysqldump备份工具路径 dbname :需要备份的数据库名字 /home/

    linux下mysql如何自动备份shell脚本

    Linux 服务器上的程序每天都在更新 MySQL 数据库,于是就想起写一个 shell 脚本,结合 crontab,定时备份数据库。其实非常简单,主要就是使用 MySQL 自带的 mysqldump 命令。 #!/bin/bash # Shell script to ...

    CentOS下mysql定时备份Shell脚本分享

    1、备份语句   代码如下: # /usr/local/mysql/bin/mysqldump -utest -ptest test –socket=/tmp/mysql.3306.sock > /usr/local/mysql_backup/3306/test-`date +%Y%m%d`.sql.gz  语句说明:   /usr/local/mysql/...

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

    shell脚本 Linux定时任务crontab 数据备份dump 数据库都有一个导出数据库内数据和结构的命令,就是备份。 将备份的数据还原会将原来的数据中的表删了重建,再插入备份中的数据,这是恢复。 这一点需要注意,如果...

Global site tag (gtag.js) - Google Analytics