vi /home/sh/mysqlback.sh
#!/bin/bash
#Creation Date:2010-12-23
#Auther:wubolu
#clear #清屏命令
mkdir -p -m 700 /home/mysqlback/
back_dir=/home/mysqlback/
rq=`date +%Y%m%d`
hisdate=`date +%Y%m%d --date='7 days ago'`
dbname=(`ls -p /usr/local/mysql/data/ | grep / | tr -d / | grep -v '\<test'* | grep -v mysql`)
#过滤掉test*的库以及mysql库不备份,mysql库中的log表不能被lock,而用mysqlhotcopy会lock表出错。
g=${#dbname[@]}
for((i=0;i<g;i++))
do
/usr/local/mysql/bin/mysqlhotcopy -q --noindices -u root -p 'PASSWORD' ${dbname[i]} $back_dir >/dev/null 2>&1
done
zip -rmp /home/databack/$rq.zip /home/mysqlback/
rm -f /home/databack/$hisdate.zip
|
#这种方式每一个库都会独立mysqlhotcopy备份,不会会导致所有数据库一起lock,每mysqlhotcopy结束一个库就会unlock,如果太多库同时mysqlhotcopy就会所有库备份结束后才会unlock,必然导致锁表时间太长。
--noindices
备份中不包括全部索引文件。这样使备份更小、更快。可以在以后用myisamchk -rq重新构建索引。
注意:使用mysqlhotcopy的用户需具备select、reload权限
再在crontab写一个任务自动执行该脚本即可。
下面这个mysqldump的备份脚本,J写的
#!/bin/bash
rq=`date +%Y%m%d`
datapath=/home/mysqlbak/
hisdate=`date -d -10day +%Y%m%d%H%M`
/usr/local/mysql/bin/mysqldump -uroot -p"PASSWORD" CMS | gzip > /home/mysqlbak/CMS.$rq.sql.gz
/usr/local/mysql/bin/mysqldump -uroot -p"PASSWORD" SMS | gzip > /home/mysqlbak/SMS.$rq.sql.gz
/usr/local/mysql/bin/mysqldump -uroot -p"PASSWORD" shop | gzip > /home/mysqlbak/hop.$rq.sql.gz
/usr/local/mysql/bin/mysqldump -uroot -p"PASSWORD" db | gzip > /home/mysqlbak/db5.$rq.sql.gz
rm -f "$datapath"*"$hisdate".sql.gz
|