mysql 一個比較好用的備份指令碼 可以進行熱備 本人測試好用

lpwebnet發表於2014-02-08
urce /root/.bash_profile


today=`date +"%Y_%m_%d"`
bkdir=/opt/newdata
today_bkdir=$bkdir/$today


cd $bkdir
if [ ! -d $today_bkdir ] ; then
 mkdir -p $today_bkdir
fi


DATE=`date +%Y%m%d_%H%M`
mysqldump -p123456  --flush-logs --master-data=2 --single-transaction  -R --triggers  newdb --default-character-set=utf8 > $today_bkdir/360$DATE.sql
LFILE=`mysql -uroot -p123456 -e "show binary logs"|grep "mysql-bin"|awk 'END {print $1}'`
cd $today_bakdir
find $bkdir -type d -mtime +3 -maxdepth 1 -exec rm -rf {} \;

方法二:
#!/bin/sh
source /root/.bash_profile


today=`date +"%Y_%m_%d"`
bkdir=/opt/data
today_bkdir=$bkdir/$today


cd $bkdir
if [ ! -d $today_bkdir ] ; then
 mkdir -p $today_bkdir
fi


MYSQL_CONN="-uroot -p123456
mysql ${MYSQL_CONN} -A -e"FLUSH TABLES WITH READ LOCK; SELECT SLEEP(86400)" & 
sleep 3
mysql -uroot -padmin -e "show master status;"
mysql -uroot -padmin -e "show slave status\G;"
rsync --recursive /opt/data  $today_bkdir
mysql -uroot -padmin -e "show slave status\G;"
mysql -uroot -padmin -e "show master status;"
SLEEP_ID=`mysql ${MYSQL_CONN} -A -e"SHOW PROCESSLIST;" | grep "SELECT SLEEP(86400)" | awk '{print $1}'`  
mysql ${MYSQL_CONN} -A -e"KILL ${SLEEP_ID}"
cd $today_bakdir


find $bkdir -type d -mtime +2 -maxdepth 1 -exec rm -rf {} \;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17172228/viewspace-1077925/,如需轉載,請註明出處,否則將追究法律責任。

相關文章