Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1316548
  • 博文数量: 161
  • 博客积分: 10192
  • 博客等级: 上将
  • 技术积分: 2165
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-27 17:09
文章分类

全部博文(161)

文章存档

2012年(2)

2011年(13)

2010年(137)

2009年(5)

2008年(4)

我的朋友

分类: LINUX

2010-07-21 14:44:07

脚本放在 /home/user/mysql_backup.sh

crontab
# crontab -l
# m h  dom mon dow   command
28 16 * * * /home/user/mysql_backup.sh
脚本如下
#!/bin/sh
# mysql_backup.sh: backup mysql databases and keep newest 5 days backup.
#
# Last updated: 20 March 2006
# ----------------------------------------------------------------------
# This is a free shell script under GNU GPL version 2.0 or above
# Copyright (C) 2006 Sam Tang
# Feedback/comment/suggestions : http://www.real-blog.com/
# ----------------------------------------------------------------------
# your mysql login information
# db_user is mysql username
# db_passwd is mysql password
# db_host is mysql host
# -----------------------------
db_user="root"
db_passwd="password"
db_host="localhost"
# the directory for story your backup file.
backup_dir="/home/mybackup"
# date format for backup file (dd-mm-yyyy)
time="$(date +"%d-%m-%Y")"
# mysql, mysqldump and some other bin's path
MYSQL="/usr/local/mysql/bin/mysql"
MYSQLDUMP="/usr/local/mysql/bin/mysqldump"
MKDIR="/bin/mkdir"
RM="/bin/rm"
MV="/bin/mv"
GZIP="/bin/gzip"
# check the directory for store backup is writeable
test ! -w $backup_dir && echo "Error: $backup_dir is un-writeable." && exit 0
# the directory for story the newest backup
test ! -d "$backup_dir/backup.0/" && $MKDIR "$backup_dir/backup.0/"
# get all databases
all_db="$($MYSQL -u $db_user -h $db_host -p$db_passwd -Bse 'show databases')"
for db in $all_db
do
        $MYSQLDUMP -u $db_user -h $db_host -p$db_passwd $db | $GZIP -9 > "$backup_dir/backup.0/$time.$db.gz"
done
# delete the oldest backup
test -d "$backup_dir/backup.5/" && $RM -rf "$backup_dir/backup.5"
# rotate backup directory
for int in 4 3 2 1 0
do
        if(test -d "$backup_dir"/backup."$int")
        then
                next_int=`expr $int + 1`
                $MV "$backup_dir"/backup."$int" "$backup_dir"/backup."$next_int"
        fi
done
exit 0;
 
备注:
mysql是以mysql用户身份运行的,对/home /mybackup不可写也会失败
chmod 777 /home/mybackup问题解决了
阅读(588) | 评论(2) | 转发(0) |
0

上一篇:dos command(1)

下一篇:cisco2610配置步骤

给主人留下些什么吧!~~

chinaunix网友2011-07-21 08:36:23

在windows下用bat脚本定时备份mysql: 并不是所有MySQL都运行在Linux下,windows下也需要做例行备份,下面是用bat脚本做自动化备份的例子,大家可以参考下。 rem rem C:\Program Files\WinRAR 需要放到 path 下,才能调用rar cli工具 rem rem 跳转到工作目录下 f: cd f:\DBBAK rem 设置变量:备份文件名 SET BAK_FILE=MY_DBBAK_%date:~0,-4%.sql rem 设置变量:日志文件名 SET LOG_FILE=MY_DBBAK.log rem 记录日志 echo "%date%" >> %LOG_FILE% rem 开始做备份 mysqldump --default-character-set=utf8 -hlocalhost -uroot -R --triggers --single-transaction -B mydb > %BAK_FILE% rem 压缩备份文件 rar a %BAK_FILE%.rar %BAK_FILE

chinaunix网友2011-07-21 08:36:23

在windows下用bat脚本定时备份mysql: 并不是所有MySQL都运行在Linux下,windows下也需要做例行备份,下面是用bat脚本做自动化备份的例子,大家可以参考下。 rem rem C:\Program Files\WinRAR 需要放到 path 下,才能调用rar cli工具 rem rem 跳转到工作目录下 f: cd f:\DBBAK rem 设置变量:备份文件名 SET BAK_FILE=MY_DBBAK_%date:~0,-4%.sql rem 设置变量:日志文件名 SET LOG_FILE=MY_DBBAK.log rem 记录日志 echo "%date%" >> %LOG_FILE% rem 开始做备份 mysqldump --default-character-set=utf8 -hlocalhost -uroot -R --triggers --single-transaction -B mydb > %BAK_FILE% rem 压缩备份文件 rar a %BAK_FILE%.rar %BAK_FILE