全量备份脚本
#!/bin/bash
curtime=`date +%Y%m%d`
backup_base_dir=/bak/db_backup
backup_data_dir=${backup_base_dir}/data
backup_log_dir=${backup_base_dir}/log
backup_confdir=${backup_base_dir}/etc
backup_scriptdir=${backup_base_dir}/script
mysql_confdir=/opt/mysql/etc
bakip=`/sbin/ifconfig|grep 'inet'|awk -F ' ' '{print $2}'|awk '{print $1}'|head -1`
backup_log=${backup_log_dir}/backup_`date +"%F_%T"`.log
backup_file=${bakip}_${curtime}
backup_conf_file=${backup_confdir}/config.ini
mysql_conf_file=/etc/my.cnf
full_offset=${backup_log_dir}/full.offset
socket=`cat $mysql_conf_file |grep socket|awk -F '=' '{print $2}'|sort|tail -n 1`
dbuser='root'
dbpassword=`cat $mysql_confdir/.account.cnf 2>/dev/null|grep '^root:'|awk -F ':' '{print $2}'`
if [[ ! -d ${backup_base_dir} ]];then
mkdir -p ${backup_base_dir}
fi
if [[ ! -d ${backup_data_dir} ]];then
mkdir -p ${backup_data_dir}
fi
if [[ ! -d ${backup_log_dir} ]];then
mkdir -p ${backup_log_dir}
fi
if [[ ! -d ${backup_confdir} ]];then
mkdir -p ${backup_confdir}
fi
if [[ ! -d ${backup_scriptdir} ]];then
mkdir -p ${backup_scriptdir}
mv db_full_backup.sh ${backup_scriptdir}
mv db_increment_backup.sh ${backup_scriptdir}
fi
if [[ ! -f ${backup_log} ]];then
touch ${backup_log}
fi
if [[ ! -f ${backup_conf_file} ]];then
touch ${backup_conf_file}
cat > ${backup_conf_file} << EOF
[xtrabackup]
user=$dbuser
password=$dbpassword
socket=$socket
defaults_file=$mysql_conf_file
parallel=1 #并发线程数,默认为1
compress=0 #是否开启压缩备份,0:不开启,1:开启
compress_threads=1 #压缩备份线程数,默认为1
galera_info=0 #galera集群建议开启,0:不开启,1:开启
slave_info=0 #主从模式,从库备份时建议开启,0:不开启,1:开启
[ftp]
ftp_ip=
ftp_user= #ftp地址用户
ftp_pwd= #ftp地址用户密码
ftp_port= #ftp地址端口
ftp_dir= #ftp目标目录
EOF
fi
if [[ ! -f ${full_offset} ]];then
touch ${full_offset}
fi
echo -e "`date +"%F %T"` [Get Backup All Parameters]" >>${backup_log}
cat ${backup_conf_file} >>${backup_log}
username=`cat $backup_conf_file |grep -w 'user'|awk -F '=' '{print $2}'|sort|tail -n 1`
dbpwd=`cat $backup_conf_file |grep 'password'|awk -F '=' '{print $2}'|sort|tail -n 1`
socket=`cat $backup_conf_file |grep 'socket'|awk -F '=' '{print $2}'|sort|tail -n 1`
defaults_file=`cat $backup_conf_file |grep 'defaults_file'|awk -F '=' '{print $2}'|sort|tail -n 1`
parallel=`cat $backup_conf_file |grep 'parallel'|awk -F '=' '{print $2}'|awk -F ' ' '{print $1}'|sort|tail -n 1`
compress=`cat $backup_conf_file |grep -w 'compress'|awk -F '=' '{print $2}'|awk -F ' ' '{print $1}'|sort|tail -n 1`
compress_threads=`cat $backup_conf_file |grep 'compress_threads'|awk -F '=' '{print $2}'|awk -F ' ' '{print $1}'|sort|tail -n 1`
galera_info=`cat $backup_conf_file |grep 'galera_info'|awk -F '=' '{print $2}'|awk -F ' ' '{print $1}'|sort|tail -n 1`
slave_info=`cat $backup_conf_file |grep 'slave_info'|awk -F '=' '{print $2}'|awk -F ' ' '{print $1}'|sort|tail -n 1`
ftp_ip=`cat $backup_conf_file |grep -w 'ftp_ip'|awk -F '=' '{print $2}'|sort|tail -n 1`
ftp_user=`cat $backup_conf_file |grep -w 'ftp_user'|awk -F '=' '{print $2}'|awk -F ' ' '{print $1}'|sort|tail -n 1`
ftp_pwd=`cat $backup_conf_file |grep -w 'ftp_pwd'|awk -F '=' '{print $2}'|awk -F ' ' '{print $1}'|sort|tail -n 1`
ftp_port=`cat $backup_conf_file |grep -w 'ftp_port'|awk -F '=' '{print $2}'|awk -F ' ' '{print $1}'|sort|tail -n 1`
ftp_dir=`cat $backup_conf_file |grep -w 'ftp_dir'|awk -F '=' '{print $2}'|awk -F ' ' '{print $1}'|sort|tail -n 1`
echo -e "`date +"%F %T"` [###开始xtrabackup全量备份###]" >>${backup_log}
if [ $galera_info = 0 ] && [ $slave_info = 0 ];then
echo -e "`date +"%F %T"` [Note]:开启单节点模式备份" >>${backup_log}
if [ $compress = 0 ];then
echo -e "`date +"%F %T"` [Note]:不启动压缩备份" >>${backup_log}
if [ $parallel = 1 ];then
echo -e "`date +"%F %T"` [Note]:无并发备份线程" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp 2>>${backup_log} ${backup_data_dir}/${backup_file}" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp 2>>${backup_log} ${backup_data_dir}/${backup_file}
else
echo -e "`date +"%F %T"` [Note]:并发备份线程:$parallel" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp --parallel=$parallel 2>>${backup_log} ${backup_data_dir}/${backup_file}" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp --parallel=$parallel 2>>${backup_log} ${backup_data_dir}/${backup_file}
fi
else
echo -e "`date +"%F %T"` [Note]:启动压缩备份" >>${backup_log}
if [ $parallel = 1 ] && [ $compress_threads = 1 ];then
echo -e "`date +"%F %T"` [Note]:无并发备份线程" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:无并发压缩线程" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp --compress 2>>${backup_log} ${backup_data_dir}/${backup_file}" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp --compress 2>>${backup_log} ${backup_data_dir}/${backup_file}
elif [ $parallel = 1 ] && [ $compress_threads != 1 ];then
echo -e "`date +"%F %T"` [Note]:无并发备份线程" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:并发压缩线程:$compress_threads" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp --compress --compress-threads=$compress_threads 2>>${backup_log} ${backup_data_dir}/${backup_file}" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp --compress --compress-threads=$compress_threads 2>>${backup_log} ${backup_data_dir}/${backup_file}
elif [ $parallel != 1 ] && [ $compress_threads != 1 ];then
echo -e "`date +"%F %T"` [Note]:并发备份线程:$parallel" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:并发压缩线程:$compress_threads" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp --parallel=$parallel --compress --compress-threads=$compress_threads 2>>${backup_log} ${backup_data_dir}/${backup_file}" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp --parallel=$parallel --compress --compress-threads=$compress_threads 2>>${backup_log} ${backup_data_dir}/${backup_file}
fi
fi
elif [ $galera_info = 1 ] && [ $slave_info = 0 ];then
echo -e "`date +"%F %T"` [Note]:开启Galera集群模式备份">>${backup_log}
if [ $compress = 0 ];then
echo -e "`date +"%F %T"` [Note]:不启动压缩备份" >>${backup_log}
if [ $parallel = 1 ];then
echo -e "`date +"%F %T"` [Note]:无并发备份线程" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp --galera-info 2>>${backup_log} ${backup_data_dir}/${backup_file}" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp --galera-info 2>>${backup_log} ${backup_data_dir}/${backup_file}
else
echo -e "`date +"%F %T"` [Note]:并发备份线程:$parallel" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp --galera-info --parallel=$parallel 2>>${backup_log} ${backup_data_dir}/${backup_file}" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp --galera-info --parallel=$parallel 2>>${backup_log} ${backup_data_dir}/${backup_file}
fi
else
echo -e "`date +"%F %T"` [Note]:启动压缩备份" >>${backup_log}
if [ $parallel = 1 ] && [ $compress_threads = 1 ];then
echo -e "`date +"%F %T"` [Note]:无并发备份线程" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:无并发压缩线程" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp --galera-info --compress 2>>${backup_log} ${backup_data_dir}/${backup_file}" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp --galera-info --compress 2>>${backup_log} ${backup_data_dir}/${backup_file}
elif [ $parallel = 1 ] && [ $compress_threads != 1 ];then
echo -e "`date +"%F %T"` [Note]:无并发备份线程" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:并发压缩线程:$compress_threads" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp --galera-info --compress --compress-threads=$compress_threads 2>>${backup_log} ${backup_data_dir}/${backup_file}" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp --galera-info --compress --compress-threads=$compress_threads 2>>${backup_log} ${backup_data_dir}/${backup_file}
elif [ $parallel != 1 ] && [ $compress_threads != 1 ];then
echo -e "`date +"%F %T"` [Note]:并发备份线程:$parallel" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:并发压缩线程:$compress_threads" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp --galera-info --parallel=$parallel --compress --compress-threads=$compress_threads 2>>${backup_log} ${backup_data_dir}/${backup_file}" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp --galera-info --parallel=$parallel --compress --compress-threads=$compress_threads 2>>${backup_log} ${backup_data_dir}/${backup_file}
fi
fi
elif [ $galera_info = 0 ] && [ $slave_info = 1 ];then
echo -e "`date +"%F %T"` [Note]:开启主从模式备份,备份目标为slave节点">>${backup_log}
if [ $compress = 0 ];then
echo -e "`date +"%F %T"` [Note]:不启动压缩备份" >>${backup_log}
if [ $parallel = 1 ];then
echo -e "`date +"%F %T"` [Note]:无并发备份线程" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp --slave-info 2>>${backup_log} ${backup_data_dir}/${backup_file}" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp --slave-info 2>>${backup_log} ${backup_data_dir}/${backup_file}
else
echo -e "`date +"%F %T"` [Note]:并发备份线程:$parallel" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp --slave-info --parallel=$parallel 2>>${backup_log} ${backup_data_dir}/${backup_file}" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp --slave-info --parallel=$parallel 2>>${backup_log} ${backup_data_dir}/${backup_file}
fi
else
echo -e "`date +"%F %T"` [Note]:启动压缩备份" >>${backup_log}
if [ $parallel = 1 ] && [ $compress_threads = 1 ];then
echo -e "`date +"%F %T"` [Note]:无并发备份线程" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:无并发压缩线程" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp --slave-info --compress 2>>${backup_log} ${backup_data_dir}/${backup_file}" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp --slave-info --compress 2>>${backup_log} ${backup_data_dir}/${backup_file}
elif [ $parallel = 1 ] && [ $compress_threads != 1 ];then
echo -e "`date +"%F %T"` [Note]:无并发备份线程" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:并发压缩线程:$compress_threads" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp --slave-info --compress --compress-threads=$compress_threads 2>>${backup_log} ${backup_data_dir}/${backup_file}" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp --slave-info --compress --compress-threads=$compress_threads 2>>${backup_log} ${backup_data_dir}/${backup_file}
elif [ $parallel != 1 ] && [ $compress_threads != 1 ];then
echo -e "`date +"%F %T"` [Note]:并发备份线程:$parallel" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:并发压缩线程:$compress_threads" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp --slave-info --parallel=$parallel --compress --compress-threads=$compress_threads 2>>${backup_log} ${backup_data_dir}/${backup_file}" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --no-timestamp --slave-info --parallel=$parallel --compress --compress-threads=$compress_threads 2>>${backup_log} ${backup_data_dir}/${backup_file}
fi
fi
fi
g_bak_result=`tail -n 2 ${backup_log} |grep "completed OK"|wc -l`
if [ $g_bak_result = 1 ];then
echo -e "`date +"%F %T"` [Note]:full backup success!" >> ${backup_log}
echo -e ${backup_file} >> ${full_offset}
if [ ${#ftp_ip} != 0 ];then
echo -e "`date +"%F %T"` [Note]:压缩备份文件:$backup_file">>${backup_log}
cd $backup_data_dir
backup_ftp=$ftp_dir
backup_file_tar=${backup_file}.tar.gz
tar zcf ${backup_file_tar} ${backup_file}
echo -e "`date +"%F %T"` [Note]:压缩完成!">>${backup_log}
echo -e "`date +"%F %T"` [Note]:上传备份文件$backup_file_tar至$ftp_ip服务器">>${backup_log}
_ftp_result=`ftp -v -n $ftp_ip<<EOF
user $ftp_user $ftp_pwd
put ${backup_data_dir}/${backup_file_tar} ${backup_ftp}/${backup_file_tar}
bye
EOF`
echo ${_ftp_result} >> ${backup_log}
echo -e "`date +"%F %T"` [Note]:删除压缩全量备份文件:$backup_file_tar">>${backup_log}
rm -rf ${backup_data_dir}/${backup_file_tar}
echo -e "`date +"%F %T"` [Note]:压缩全量备份文件$backup_file_tar删除成功!">>${backup_log}
else
echo -e "`date +"%F %T"` [Warning]:没有设置异地备份!">>${backup_log}
fi
echo -e "`date +"%F %T"` [Note]:清理半个月前的备份" >>${backup_log}
for archfile in $(ls -l $backup_data_dir |awk '/^d/ {print $NF}');do
file_date=`echo $archfile |awk -F '_' '{print $2}'`
file_sec=`date +%s -d "$file_date"`
bakdate_sec=`date +%s`
num=$(((bakdate_sec-file_sec)/60/60/24))
if [ $num -ge 14 ];then
rm -rf $archfile
echo -e "`date +"%F %T"` [Note]:$archfile备份保存超时被清除!">>${backup_log}
sleep 1
else
echo -e "`date +"%F %T"` [Note]:无可清理的备份!">>${backup_log}
fi
done
echo -e "`date +"%F %T"` [Note]:数据库全量备份完成!" >> ${backup_log}
else
echo -e "`date +"%F %T"` [Error]:full backup faild!" >> ${backup_log}
echo -e "`date +"%F %T"` [Note]:删除错误备份文件:$backup_file">>${backup_log}
rm -rf ${backup_data_dir}/${backup_file}
echo -e "`date +"%F %T"` [Note]:错误备份文件$backup_file删除成功!">>${backup_log}
fi
增量备份脚本
#!/bin/bash
curtime=`date +%Y%m%d`
backup_base_dir=/bak/db_backup
backup_data_dir=${backup_base_dir}/data
backup_log_dir=${backup_base_dir}/log
backup_confdir=${backup_base_dir}/etc
backup_scriptdir=${backup_base_dir}/script
mysql_confdir=/opt/mysql/etc
incremental_offset=`tail -n1 ${backup_log_dir}/full.offset`
backup_log=${backup_log_dir}/backup_`date +"%F_%T"`_incremental.log
backup_file=${incremental_offset}-${curtime}_incremental
backup_conf_file=${backup_confdir}/config.ini
if [[ ! -f ${backup_conf_file} ]];then
echo -e "`date +"%F %T"` [Error]:备份配置文件不存在,退出!" >>${backup_log}
exit 1
else
echo -e "`date +"%F %T"` [Get Backup All Parameters]" >>${backup_log}
cat ${backup_conf_file} >>${backup_log}
username=`cat $backup_conf_file |grep -w 'user'|awk -F '=' '{print $2}'|sort|tail -n 1`
dbpwd=`cat $backup_conf_file |grep 'password'|awk -F '=' '{print $2}'|sort|tail -n 1`
socket=`cat $backup_conf_file |grep 'socket'|awk -F '=' '{print $2}'|sort|tail -n 1`
defaults_file=`cat $backup_conf_file |grep 'defaults_file'|awk -F '=' '{print $2}'|sort|tail -n 1`
parallel=`cat $backup_conf_file |grep 'parallel'|awk -F '=' '{print $2}'|awk -F ' ' '{print $1}'|sort|tail -n 1`
compress=`cat $backup_conf_file |grep -w 'compress'|awk -F '=' '{print $2}'|awk -F ' ' '{print $1}'|sort|tail -n 1`
compress_threads=`cat $backup_conf_file |grep 'compress_threads'|awk -F '=' '{print $2}'|awk -F ' ' '{print $1}'|sort|tail -n 1`
galera_info=`cat $backup_conf_file |grep 'galera_info'|awk -F '=' '{print $2}'|awk -F ' ' '{print $1}'|sort|tail -n 1`
slave_info=`cat $backup_conf_file |grep 'slave_info'|awk -F '=' '{print $2}'|awk -F ' ' '{print $1}'|sort|tail -n 1`
ftp_ip=`cat $backup_conf_file |grep -w 'ftp_ip'|awk -F '=' '{print $2}'|sort|tail -n 1`
ftp_user=`cat $backup_conf_file |grep -w 'ftp_user'|awk -F '=' '{print $2}'|awk -F ' ' '{print $1}'|sort|tail -n 1`
ftp_pwd=`cat $backup_conf_file |grep -w 'ftp_pwd'|awk -F '=' '{print $2}'|awk -F ' ' '{print $1}'|sort|tail -n 1`
ftp_port=`cat $backup_conf_file |grep -w 'ftp_port'|awk -F '=' '{print $2}'|awk -F ' ' '{print $1}'|sort|tail -n 1`
ftp_dir=`cat $backup_conf_file |grep -w 'ftp_dir'|awk -F '=' '{print $2}'|awk -F ' ' '{print $1}'|sort|tail -n 1`
fi
echo -e "`date +"%F %T"` [###开始xtrabackup增量备份###]" >> ${backup_log}
echo -e "`date +"%F %T"` [Note]:取最近一次全量备份文件:${incremental_offset}" >> ${backup_log}
if [ $galera_info = 0 ] && [ $slave_info = 0 ];then
echo -e "`date +"%F %T"` [Note]:开启单节点模式备份" >>${backup_log}
if [ $compress = 0 ];then
echo -e "`date +"%F %T"` [Note]:不启动压缩备份" >>${backup_log}
if [ $parallel = 1 ];then
echo -e "`date +"%F %T"` [Note]:无并发备份线程" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1
else
echo -e "`date +"%F %T"` [Note]:并发备份线程:$parallel" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp --parallel=$parallel ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp --parallel=$parallel ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1
fi
else
echo -e "`date +"%F %T"` [Note]:启动压缩备份" >>${backup_log}
if [ $parallel = 1 ] && [ $compress_threads = 1 ];then
echo -e "`date +"%F %T"` [Note]:无并发备份线程" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:无并发压缩线程" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp --compress ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp --compress ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1
elif [ $parallel = 1 ] && [ $compress_threads != 1 ];then
echo -e "`date +"%F %T"` [Note]:无并发备份线程" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:并发压缩线程:$compress_threads" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp --compress --compress-threads=$compress_threads ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp --compress --compress-threads=$compress_threads ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1
elif [ $parallel != 1 ] && [ $compress_threads != 1 ];then
echo -e "`date +"%F %T"` [Note]:并发备份线程:$parallel" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:并发压缩线程:$compress_threads" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp --parallel=$parallel --compress --compress-threads=$compress_threads ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp --parallel=$parallel --compress --compress-threads=$compress_threads ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1
fi
fi
elif [ $galera_info = 1 ] && [ $slave_info = 0 ];then
echo -e "`date +"%F %T"` [Note]:开启Galera集群模式备份">>${backup_log}
if [ $compress = 0 ];then
echo -e "`date +"%F %T"` [Note]:不启动压缩备份" >>${backup_log}
if [ $parallel = 1 ];then
echo -e "`date +"%F %T"` [Note]:无并发备份线程" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp --galera-info ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp --galera-info ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1
else
echo -e "`date +"%F %T"` [Note]:并发备份线程:$parallel" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp --parallel=$parallel --galera-info ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp --parallel=$parallel --galera-info ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1
fi
else
echo -e "`date +"%F %T"` [Note]:启动压缩备份" >>${backup_log}
if [ $parallel = 1 ] && [ $compress_threads = 1 ];then
echo -e "`date +"%F %T"` [Note]:无并发备份线程" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:无并发压缩线程" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp --compress --galera-info ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp --compress --galera-info ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1
elif [ $parallel = 1 ] && [ $compress_threads != 1 ];then
echo -e "`date +"%F %T"` [Note]:无并发备份线程" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:并发压缩线程:$compress_threads" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp --compress --compress-threads=$compress_threads --galera-info ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp --compress --compress-threads=$compress_threads --galera-info ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1
elif [ $parallel != 1 ] && [ $compress_threads != 1 ];then
echo -e "`date +"%F %T"` [Note]:并发备份线程:$parallel" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:并发压缩线程:$compress_threads" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp --parallel=$parallel --compress --compress-threads=$compress_threads --galera-info ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp --parallel=$parallel --compress --compress-threads=$compress_threads --galera-info ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1
fi
fi
elif [ $galera_info = 0 ] && [ $slave_info = 1 ];then
echo -e "`date +"%F %T"` [Note]:开启主从模式备份,备份目标为slave节点">>${backup_log}
if [ $compress = 0 ];then
echo -e "`date +"%F %T"` [Note]:不启动压缩备份" >>${backup_log}
if [ $parallel = 1 ];then
echo -e "`date +"%F %T"` [Note]:无并发备份线程" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp --slave-info ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp --slave-info ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1
else
echo -e "`date +"%F %T"` [Note]:并发备份线程:$parallel" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp --parallel=$parallel --slave-info ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp --parallel=$parallel --slave-info ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1
fi
else
echo -e "`date +"%F %T"` [Note]:启动压缩备份" >>${backup_log}
if [ $parallel = 1 ] && [ $compress_threads = 1 ];then
echo -e "`date +"%F %T"` [Note]:无并发备份线程" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:无并发压缩线程" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp --compress --slave-info ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp --compress --slave-info ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1
elif [ $parallel = 1 ] && [ $compress_threads != 1 ];then
echo -e "`date +"%F %T"` [Note]:无并发备份线程" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:并发压缩线程:$compress_threads" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp --compress --compress-threads=$compress_threads --slave-info ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp --compress --compress-threads=$compress_threads --slave-info ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1
elif [ $parallel != 1 ] && [ $compress_threads != 1 ];then
echo -e "`date +"%F %T"` [Note]:并发备份线程:$parallel" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:并发压缩线程:$compress_threads" >>${backup_log}
echo -e "`date +"%F %T"` [Note]:/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp --parallel=$parallel --compress --compress-threads=$compress_threads --slave-info ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1" >>${backup_log}
/usr/bin/innobackupex --defaults-file=${defaults_file} --socket=${socket} --user=$username --password=$dbpwd --incremental --incremental-basedir=${backup_data_dir}/${incremental_offset} --no-timestamp --parallel=$parallel --compress --compress-threads=$compress_threads --slave-info ${backup_data_dir}/${backup_file} >> ${backup_log} 2>&1
fi
fi
fi
g_bak_result=`tail -n 2 ${backup_log} |grep "completed OK"|wc -l`
if [ $g_bak_result = 1 ];then
echo -e "`date +"%F %T"` [Note]:incremental backup success!" >> ${backup_log}
pre_last_lsn=`cat ${backup_data_dir}/${incremental_offset}/xtrabackup_checkpoints | grep 'to_lsn' | awk '{print $3}'`
cur_from_lsn=`cat ${backup_data_dir}/${backup_file}/xtrabackup_checkpoints | grep 'from_lsn' | awk '{print $3}'`
if [ "${pre_last_lsn}" != "${cur_from_lsn}" ];then
echo -e "`date +"%F %T"` [Error]:pre last lsn != cur from lsn, bakup failed" >> ${backup_log}
exit 1
else
if [ ${#ftp_ip} != 0 ];then
echo -e "`date +"%F %T"` [Note]:压缩备份文件:$backup_file">>${backup_log}
cd $backup_data_dir
backup_ftp=$ftp_dir
backup_file_tar=${backup_file}.tar.gz
tar zcf ${backup_file_tar} ${backup_file}
echo -e "`date +"%F %T"` [Note]:压缩完成!">>${backup_log}
echo -e "`date +"%F %T"` [Note]:上传备份文件$backup_file_tar至$ftp_ip服务器">>${backup_log}
_ftp_result=`ftp -v -n $ftp_ip<<EOF
user $ftp_user $ftp_pwd
put ${backup_data_dir}/${backup_file_tar} ${backup_ftp}/${backup_file_tar}
bye
EOF`
echo ${_ftp_result} >> ${backup_log}
echo -e "`date +"%F %T"` [Note]:删除压缩全量备份文件:$backup_file_tar">>${backup_log}
rm -rf ${backup_data_dir}/${backup_file_tar}
echo -e "`date +"%F %T"` [Note]:压缩全量备份文件$backup_file_tar删除成功!">>${backup_log}
else
echo -e "`date +"%F %T"` [Warning]:没有设置异地备份!">>${backup_log}
fi
echo "`date +"%F %T"` 数据库增量备份完成!" >> ${backup_log}
fi
else
echo -e "`date +"%F %T"` [Error]:incremental backup failed!" >> ${backup_log}
echo "`date +"%F %T"` 删除错误增量备份文件:${backup_file}" >> ${backup_log}
rm -rf ${backup_data_dir}/${backup_file}
echo "`date +"%F %T"` 错误增量备份文件${backup_file}删除成功!" >> ${backup_log}
fi