好用的mysql备份工具
上一篇 / 下一篇 2009-06-14 10:08:44 / 个人分类:mysql
5Wco's4m}*e_0 我以前备份都使用mysqldump,导成文本文件便于存放,但是速度很慢的。最快的备份方法当然是直接把数据目录copy一份了。但是一般来说,都要关闭 MySQL的服务才能做,不然在你copy的时候刚好还有人读写表那麻烦就大了。这次朋友介绍我使用mysqlhotcopy。就相当于上面,不过他可以热备份.他备份非常快,我测试一个2.8G的mysql他备份的时间在3分钟内完成.
N:]6J/G}5Z5M0Mi{3?7p%B6q8n'E0 下面是它的介绍.
9{'q6L#FMS7l051Testing软件测试网D$dZ/?n Mmysqlhotcopy是一个Perl脚本,最初由Tim Bunce编写并提供。它使用LOCK TABLES、FLUSH TABLES和cp或scp来快速备份数据库。它是备份数据库或单个表的最快的途径,但它只能运行在数据库目录所在的机器上。mysqlhotcopy只用于备份MyISAM。它运行在Unix和NetWare中51Testing软件测试网 }B+D wa{+z)C3M4O
51Testing软件测试网EK.d`7U6J使用方法见下面的脚本.加入crotab中吧.51Testing软件测试网 @;pZO#d
LBFO1@:{6IB0 #!/bin/sh51Testing软件测试网"G-EIV;imE
# Name:mysqlbackup.sh
)`x&AF+|^ZF1e?#{ z0 # PS:MySQL DataBase Backup,Use mysqlhotcopy script.51Testing软件测试网r7UXYy3X(S;a;z%P1|
# Last Modify:2008-06-12
~ v&mXT:g$o!jC0 # 定义变量,请根据具体情况修改51Testing软件测试网u:{{
{R(t2B$U{
# 定义脚本所在目录51Testing软件测试网/i{C@(^u9r(J7@T
scriptsDir=`pwd`
W#}_1d*K&]0 # 数据库的数据目录51Testing软件测试网c_$~(AD._&W
dataDir=/var/lib/mysql
&nUo(fR6z0 # 数据备份目录51Testing软件测试网{'R M
F
OB
tmpBackupDir=/tmp/mysqlblackup
U
_rs3XrV g7ii#]r0 backupDir=/backup/mysql
Nd]0fec4F0 # 用来备份数据库的用户名和密码
B-QKfHr0 mysqlUser=root51Testing软件测试网U1{ k0J
j&M
mysqlPWD='you password'
# 如果临时备份目录存在,清空它,如果不存在则创建它51Testing软件测试网&h'r0V#\,|i,{j'c Q a
if [[ -e $tmpBackupDir ]]; then51Testing软件测试网5|0yGV}f I
DE%F
rm -rf $tmpBackupDir/*
[ E5`*m;Em0 else
Sai
k
S0 mkdir $tmpBackupDir51Testing软件测试网/G$k;w ?g\/h(|$U
fi51Testing软件测试网2}2yj0EL A;zhM*^k
# 如果备份目录不存在则创建它
L xj9lk`K\0 if [[ ! -e $backupDir ]];then51Testing软件测试网U
I8Ob"K-F
mkdir $backupDir
{@L:Jo5b
OY0 fi51Testing软件测试网H;{1Fu
HQ#~8HU$@w
D'l'Qbg7zN g0 # 得到数据库备份列表,在此可以过滤不想备份的数据库51Testing软件测试网{5?|!jYB^[p
for databases in `find $dataDir -type d | \
[K\OhkJ0 sed -e "s/\/var\/lib\/mysql\///" | \51Testing软件测试网eWRYlK0~&}F
sed -e "s/test//"`; do51Testing软件测试网6YT4T7xX}(b
if [[ $databases == "" ]]; then
F AYUQgX9rxjl0 continue51Testing软件测试网s,i[9cx W
else51Testing软件测试网yQ#kT#Mj!K
# 备份数据库
}eQ6au:sy'^0 /usr/bin/mysqlhotcopy --user=$mysqlUser --password=$mysqlPWD -q "$databases" $tmpBackupDir
`-T*{/U7c,{(Vw.u|0 dateTime=`date "+%Y.%m.%d %H:%M:%S"`
Ov'W_k \ D2O#Nu0 echo "$dateTime Database:$databases backup success!" >>MySQLBackup.log51Testing软件测试网/^D"LnCi!V,um
fi51Testing软件测试网,S#p[ D mu
done
FDPC2l!i/u0 # 压缩备份文件
$^Uv![$RT+]h.|0 date=`date -I`51Testing软件测试网7LU)F$q:]T TV
cd $tmpBackupDir51Testing软件测试网q0M&m:Y-l9}y
tar czf $backupDir/mysql-$date.tar.gz ./
#End完成