对任何一个已经上线的网站站点来说,数据备份都是必须的。无论版本更新还是服务器迁移,备份数据的重要性不言而喻。人工备份数据的方式不单耗费大量时间和精力,还灰常不专业的说。于是,有了下面这段脚本的出现。参考了网上的很多教程,外加自己的测试,以下脚本经测试可用。
#配置参数
USER=vimer_admin #数据库用户名
PASSWORD=dreamfly123 #数据库用户密码
DATABASE=vimer #数据库名称
WEBMASTER=290101401@qq.com #管理员邮箱地址,用以发送备份失败消息提醒
BACKUP_DIR=/root/vimer_database_backup/ #备份文件存储路径
LOGFILE=/root/vimer_database_backup/data_backup.log #日记文件路径
DATE=`date '+%Y%m%d'` #日期格式(作为文件名)
DUMPFILE=$DATE.sql #备份文件名
ARCHIVE=$DATE.sql.tgz #压缩文件名
OPTIONS="-u$USER -p$PASSWORD --default-character-set=utf8 --opt -hlocalhost -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 [ $? -eq 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"
使用:
1. 将以上代码保存到: /usr/sbin/DataBackup (文件名随意,只要不跟系统原有的命令同名即可;代码可以放到任何地方,放在sbin目录下只是为了方便执行,sbin目录下的文件/目录可在终端直接调用,类似于windows下PATH变量指定的目录)
2. 为脚本添加可执行权限: sudo chmod +x /usr/sbin/DataBackup
3. 执行脚本: sudo DataBackup
4. 如果需要定时执行备份命令的,只需将下面这段代码放到crontab 文件(sudo vim /etc/crontab)中去就可以了:
01 3 * * * root /usr/sbin/DataBackup #它代表着将于每天3点执行DataBackup脚本
注意:
1. linux 下的shell脚本定义变量的格式为: key=value ,注意他们两者之间的” = “前后不能出现空格,否则系统无法确认该变量。
2. 用红色标注的那行,第一个类似单引号的字符”`”其实不是单引号,它的输入键在键盘ESC键下方。
3. 这个脚本只适合用于一些小站点的备份,因为它是对数据库进行全部备份而不是增量备份,不适合大容量的数据库备份。
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
分享到:
相关推荐
### 如何在Linux下实现MySQL数据库每天自动备份 在Linux环境下进行MySQL数据库的日常自动备份是一项重要的维护工作,它能够确保数据的安全性与完整性。本文将详细介绍如何通过编写Shell脚本并结合Cron定时任务来...
数据库备份 在计划任务里添加一条命令 执行这个脚本就OK了 例如 :00 21 * * * /www/mysqlbak/mysql.sh
利用 crontab -e 将此脚本加入即可,主要是用于linux服务器定时自动备份mysql数据库的脚本sh
在Linux环境下,自动备份数据库是一项至关重要的任务,它确保了数据的安全性和业务的连续性。以下是一份详尽的步骤指南,教你如何在Linux系统中设置数据库的自动备份。 1. **选择数据库类型**:首先,你需要确定你...
在linux下方便的备份mysql数据库的脚本。
### Linux下定时备份MySQL数据库的Shell脚本知识点详解 #### 一、背景介绍与重要性 对于每一个在线网站或服务而言,数据备份是一项至关重要的任务。无论是为了应对未来的版本升级,还是服务器迁移的需求,定期备份...
这个过程不仅教会了如何手动备份MySQL数据库,更关键的是展示了如何设置自动化备份,以确保即使在无人值守的情况下也能定期进行数据备份。这有助于预防硬件故障、软件错误或人为误操作导致的数据丢失。通过调整脚本...
LINUX下备份数据库 backupdatabase.jx.sh
- `mysqldump -u root -p'rootabc'`: 使用`mysqldump`命令备份数据库,其中`-u root`指定MySQL的用户名为root,`-p'rootabc'`指定密码为rootabc。 - `| gzip > $backupdir/abc$time.sql.gz`: 通过管道(`|`)将导出...
9. **备份与恢复**:定期备份数据库是防止数据丢失的重要措施。学习如何使用mysqldump进行全量备份和增量备份,以及如何恢复备份数据,是数据库管理中的关键技能。 10. **安全与权限**:理解MySQL的权限系统,设置...
Linux下mysql的增量与完全备份脚本
在Linux系统,特别是CentOS这样的基于Red Hat的发行版中,定期备份数据库是维护数据安全的重要环节。这里我们将深入探讨如何在CentOS环境下,针对MySQL数据库进行定时备份,并且实现自动压缩以及旧备份的清理。 ...
在Linux环境下进行MySQL数据库编程是一项基础且至关重要的技能,尤其对于系统管理员和开发人员来说。MySQL是一种流行的开源关系型数据库管理系统(RDBMS),它以其高效、可靠和易用性而受到广泛赞誉。本讲义将围绕...
根据给定的文件信息,以下是对“Linux下MySQL数据库”的相关知识点进行的详细解析: ### Linux下MySQL数据库 #### 常用命令操作 在Linux环境下操作MySQL数据库时,掌握一系列基本命令对于日常管理和维护至关重要...
此外,还可以考虑添加定时任务,定期自动备份数据库,例如使用Spring框架的`@Scheduled`注解配合Quartz或CronTrigger实现。 标签中的“源码”指的是上述的Java代码示例,而“工具”可能是指这个Java工具类或服务在...
Linux系统下备份MySQL数据库脚本,含注释
在Linux环境下进行MySQL数据库编程是一项重要的技能,尤其对于IT专业人士来说。MySQL是一个广泛使用的开源关系型数据库管理系统(RDBMS),它提供了强大的数据存储和管理功能。Linux作为服务器操作系统,与MySQL的...
Linux 下 Mysql 备份脚本 使用 mysqldump 命令 备份数据库 单/多库备份 自定义 mysqldump 其他参数 -h -d ..... 删除超过一定时间的备份
在Linux环境中,为了确保数据的安全性和可靠性,定期备份MySQL数据库是一项至关重要的任务。Crontab是Linux中的一个调度工具,可以用来自动化周期性任务,包括数据库的备份。下面将详细介绍如何利用Crontab来实现...