962148150 发表于 2018-10-3 10:41:56

再谈 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]
查看完整版本: 再谈 MySQL 备份