mysql备份恢复shell脚本
2011-11-24 19:53
495 查看
#####数据库备份脚本##############################
#参数说明########################
#参数1:数据库名称
#参数2:数据库服务器
#参数3:用户
#参数4:密码
################################
#数据库备份路径
bakDir=/opt/data/modules/mysql_back/;
cd $bakDir;
if [ $1 ] # 如果没有参数
then
echo database $1;
else
echo 'backup database tables to gzip files
sh bak_db_table.sh db [db_host] [db_user] [db_passwd]
'; exit;
fi
# 参数赋值
[ $1 ] && db=$1
[ $2 ] && dbh=$2
[ $3 ] && dbu=$3
[ $4 ] && dbp=$4
# 配置数据库参数
[ $dbh ] && dbh="-h"$dbh
[ $dbu ] && dbu="-u"$dbu
[ $dbp ] && dbp="-p"$dbp
day=`date +%Y%m%d`
#如果不存在 以db命名的目录 则创建
db_dir=$bakDir$db'_'$day
[ -a $db_dir ] || mkdir $db_dir; echo "mkdir $db_dir"
# 获取数据库中的表列表
echo 'list=(`echo "show tables;"|mysql -h$dbh -u$dbu -p$dbp $db`)'
list=(`echo "show tables;"|mysql $dbh $dbu $dbp $db`)
# 获取表个数
tbcount=$((${#list[@]}-2))
if [ $tbcount = -2 ] # 如果表不存在 或数据库连接失败
then
echo empty tables in $db or connent failed! ; exit 1;
fi
echo table count: $tbcount
# 对每个表进行备份 并压缩
# 使用gzip -d $file 进行解压
# 使用 mysql $database < $bakfile 进行恢复
for (( i = 1 ; i < ($tbcount+1) ; i ++ ))
do
table=${list[$i]}
echo back table $table
mysqldump $dbh $dbu $dbp $db $table | gzip -c > $db_dir/$db.$table.gz
# $? 前一命令的返回值, 0 为成功 1为失败 但mysqldump没有遵守这个约定
echo back table $table $?
sleep 10
done
#删除10天前备份
del_day=`date -d'10 days ago' +%Y%m%d`;
del_dir=$bakDir$db'_'$del_day;
echo "delete dir :".$del_dir;
rm -rf $del_dir;
#####数据库恢复脚本##############################
#!/bin/bash
#参数1:数据库备份路径
#参数2:数据库名称
#check param
if [ $# != 2 ]
then
echo "param error!";
exit;
else
if [ ! -d "$1" ]
then
echo "dir : $1 is not exist!";
exit;
fi
fi
[ $1 ] && rootPath=$1;
[ $2 ] && db=$2;
cd $rootPath;
#insert db
for i in $rootPath/*
do
if [ -f "$i" ]
then
echo $i;
gunzip $i;
/opt/modules/mysql/bin/mysql -uroot -p223238 $db < ${i%%.gz};
gzip ${i%.*};
fi
done
#参数说明########################
#参数1:数据库名称
#参数2:数据库服务器
#参数3:用户
#参数4:密码
################################
#数据库备份路径
bakDir=/opt/data/modules/mysql_back/;
cd $bakDir;
if [ $1 ] # 如果没有参数
then
echo database $1;
else
echo 'backup database tables to gzip files
sh bak_db_table.sh db [db_host] [db_user] [db_passwd]
'; exit;
fi
# 参数赋值
[ $1 ] && db=$1
[ $2 ] && dbh=$2
[ $3 ] && dbu=$3
[ $4 ] && dbp=$4
# 配置数据库参数
[ $dbh ] && dbh="-h"$dbh
[ $dbu ] && dbu="-u"$dbu
[ $dbp ] && dbp="-p"$dbp
day=`date +%Y%m%d`
#如果不存在 以db命名的目录 则创建
db_dir=$bakDir$db'_'$day
[ -a $db_dir ] || mkdir $db_dir; echo "mkdir $db_dir"
# 获取数据库中的表列表
echo 'list=(`echo "show tables;"|mysql -h$dbh -u$dbu -p$dbp $db`)'
list=(`echo "show tables;"|mysql $dbh $dbu $dbp $db`)
# 获取表个数
tbcount=$((${#list[@]}-2))
if [ $tbcount = -2 ] # 如果表不存在 或数据库连接失败
then
echo empty tables in $db or connent failed! ; exit 1;
fi
echo table count: $tbcount
# 对每个表进行备份 并压缩
# 使用gzip -d $file 进行解压
# 使用 mysql $database < $bakfile 进行恢复
for (( i = 1 ; i < ($tbcount+1) ; i ++ ))
do
table=${list[$i]}
echo back table $table
mysqldump $dbh $dbu $dbp $db $table | gzip -c > $db_dir/$db.$table.gz
# $? 前一命令的返回值, 0 为成功 1为失败 但mysqldump没有遵守这个约定
echo back table $table $?
sleep 10
done
#删除10天前备份
del_day=`date -d'10 days ago' +%Y%m%d`;
del_dir=$bakDir$db'_'$del_day;
echo "delete dir :".$del_dir;
rm -rf $del_dir;
#####数据库恢复脚本##############################
#!/bin/bash
#参数1:数据库备份路径
#参数2:数据库名称
#check param
if [ $# != 2 ]
then
echo "param error!";
exit;
else
if [ ! -d "$1" ]
then
echo "dir : $1 is not exist!";
exit;
fi
fi
[ $1 ] && rootPath=$1;
[ $2 ] && db=$2;
cd $rootPath;
#insert db
for i in $rootPath/*
do
if [ -f "$i" ]
then
echo $i;
gunzip $i;
/opt/modules/mysql/bin/mysql -uroot -p223238 $db < ${i%%.gz};
gzip ${i%.*};
fi
done
相关文章推荐
- mysql自动备份、恢复脚本(linux的shell、windows的批处理)
- mysql 备份与恢复shell脚本
- mysql备份和恢复的shell脚本样例
- shell自动连接mysql后进行查询和自动备份脚本
- mysql 备份shell 脚本
- mysql 备份与恢复mysqldump命令使用记录并做成脚本自动备份
- shell脚本:mysql全备与binlog增量备份
- 用Shell脚本在推出的RAC节点上批量部署32个Oracle11gR2 RAC备份恢复案例场景的方法PART2
- 程序员(媛)Shell脚本必备技能之中的一个: 在Linux下怎样自己主动备份mysql数据
- mysql备份与同步shell脚本
- linux中mysql备份shell脚本代码
- mysql增量备份二进制日志shell脚本
- Mysql 数据库自动备份Shell脚本
- MySQL备份的shell脚本
- mysql自动备份可通用shell脚本
- Shell脚本自动备份MySQL到FTP并定期清理过期备份
- shell脚本实现mysql纯文本格式备份
- mysql备份shell脚本
- shell写的一个mysql自动备份脚本。
- 两个shell备份mysql的脚本