MySQL备份脚本

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

你可能感兴趣的:(sql,cms,mysql,脚本,bash)