再谈 MySQL 备份
#!/bin/sh#
# created by yejr,2006/11/29
#
# 本脚本用于定期做全量备份,备份的对象是slave上的全部数据
# 每次备份之前都先执行"STOP SLAVE; FLUSH TABLES;",然后将
# 所有文件拷贝到备份目录下
#
#取得当前日期,作为备份目录名
today=`date +"%Y_%m_%d"`
#源目录
datadir=/usr/local/mysql/data
#目标目录
bkdir=/backup/mysql
today_bkdir=$bkdir/$today
today_full_bkdir=$today_bkdir/full_backup
#修改上级目录属性
chattr -i $bkdir
#判断目标目录是否已经存在
if [ ! -d $today_bkdir ] ; then
mkdir -p $today_bkdir
else
chattr -i $today_bkdir
fi
#执行 slave-stop && flush-logs,停止slave,并且刷新缓存内容到磁盘
mysqladmin -hlocalhost -uroot -ppasswd stop-slave
mysqladmin -hlocalhost -uroot -ppasswd flush-tables
cd $datadir
#将ibdata*以及其它需要备份的数据库目录拷贝到目标目录下
cp -rf ib* forum my.cnf mysql news yejr $today_full_bkdir/
#修改文件属主
chown -R nobody:nobody $bkdir
#执行 slave-start,启动slave
mysqladmin -hlocalhost -uroot -ppasswd start-slave
#删除过期文件
cd $bkdir
#找出6天前创建的目录
for d in `find . -type d -mtime +6 -maxdepth 1`
do
#修改当前目录及其子目录属性,然后删除
chattr -i $d
chattr -i $d/full_backup
rm -fr $d
done
#增加属性标志位
chattr +i $bkdir
页:
[1]