<b>利用mysqlhotcopy备份MySQL</b>[MySQL防范]
本文“<b>利用mysqlhotcopy备份MySQL</b>[MySQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
我从前备份都利用mysqldump,导成文本文件便于存放,但是速度很慢的.最快的备份办法当然是直接把数据目录copy一份了.但是普通来说,都要关闭 MySQL的服务才能做,不然在你copy的时刻刚好还有人读写表那麻烦就大了.这次朋友介绍我利用mysqlhotcopy.就相当于上面,不过他可以热备份.他备份非常快,我测试一个2.8G的mysql他备份的时间在3分钟内完成.
下面是它的介绍.
mysqlhotcopy是一个Perl脚本,最初由Tim Bunce编写并供应.它利用LOCK TABLES、FLUSH TABLES和cp或scp来快速备份数据库.它是备份数据库或单个表的最快的途径,但它只能运行在数据库目录所在的机械上.mysqlhotcopy只用于备份MyISAM.它运行在Unix和NetWare中
利用办法见下面的脚本.加入crotab中吧.
#!/bin/sh
# Name:mysqlbackup.sh
# PS:MySQL DataBase Backup,Use mysqlhotcopy script.
# Last Modify:2008-06-12
# 定义变量,请按照具体情形改正
# 定义脚本所在目录
scriptsDir=`pwd`
# 数据库的数据目录
dataDir=/var/lib/mysql
# 数据备份目录
tmpBackupDir=/tmp/mysqlblackup
backupDir=/backup/mysql
# 用来备份数据库的用户名和密码
mysqlUser=root
mysqlPWD='you password'
# 假如暂时备份目录存在,清空它,假如不存在则成立它
if [[ -e $tmpBackupDir ]]; then
rm -rf $tmpBackupDir/*
else
mkdir $tmpBackupDir
fi
# 假如备份目录不存在则成立它
if [[ ! -e $backupDir ]];then
mkdir $backupDir
fi
# 得到数据库备份列表,在此可以过滤不想备份的数据库
for databases in `find $dataDir -type d | \
sed -e "s/\/var\/lib\/mysql\///" | \
sed -e "s/test//"`; do
if [[ $databases == "" ]]; then
continue
else
# 备份数据库
/usr/bin/mysqlhotcopy --user=$mysqlUser --password=$mysqlPWD -q "$databases" $tmpBackupDir
dateTime=`date "+%Y.%m.%d %H:%M:%S"`
echo "$dateTime Database:$databases backup success!" >>MySQLBackup.log
fi
done
# 紧缩备份文件
date=`date -I`
cd $tmpBackupDir
tar czf $backupDir/mysql-$date.tar.gz ./
#End完成
加入到crontab中设置每周5运行
0 0 * * 5 /backup/blackup.sh
注意:恢复数据库到备份时的状况
以上是“<b>利用mysqlhotcopy备份MySQL</b>[MySQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |