MySQL基于binlog文件的异地备份策略脚本--shell
2013-11-27 13:35
711 查看
[root@Mysql28 shell]# cat binlog.sh
#!/bin/sh
#mysql binlog backup script
#by song
ftp_backup="D:\\dbbackup\\logbackup"
/usr/local/mysql/bin/mysqladmin -uroot -proot flush-logs
DATADIR=/usr/local/mysql/data
BAKDIR=/data/back_up/binlog
#HOSTNAME=`uname -n`
cd $DATADIR
FILELIST=`cat /usr/local/mysql/data/mysql-bin.index` ------------拿出所有的binlog文件的具体名字
COUNTER=0
for file in $FILELIST
do
COUNTER=`expr $COUNTER + 1` -------循环取出上步骤中的binlog文件列表;
done
NextNum=0
for file in $FILELIST
do
base=`basename $file`
NextNum=`expr $NextNum + 1`
if [ $NextNum -eq $COUNTER ]
then
echo "skip lastest" -------跳过最后一个binlog正在使用的文件,不进行备份,因为此binlog mysql正在写入,不进行拉取备份;
else
dest=$BAKDIR/$base
DATE_D=(`stat -Z -c %y $base`,"+%Y%m%d%H%M%S") ------计算出binlog文件的生产日期;
if(test -e $dest)
then
echo "skip exist $base" ------验证是否有binlog同名字的存在
else
echo "copying $base" ---------没有同名字的就开始copy到文件夹内
mkdir -p $BAKDIR/$DATE_D ------当天产生的binlog文件,保存到当天的文件夹内;
cp -rp $base $BAKDIR/$DATE_D ---------执行copy
wput -t 3 -B -s --basename $BAKDIR $BAKDIR/$DATE_D/mysql-bin.* ftp://ftpuser:xxxxx@192.168.25.163:21/logbackup/192.168.1.168/ ----当天的文件异地传输到目标机器上
fi
fi
done
if [ $? = 0 ] -------验证以上步骤是否执行完成,如果完整就退出;
then
echo "backup mysql binlog ok"
else
echo "backup mysql binlog failover!!!"
fi
[root@Mysql28 shell]#
以上就完成了binlog的异地传输;
脚本比较简单,不完善地方,可以随时更新;
#!/bin/sh
#mysql binlog backup script
#by song
ftp_backup="D:\\dbbackup\\logbackup"
/usr/local/mysql/bin/mysqladmin -uroot -proot flush-logs
DATADIR=/usr/local/mysql/data
BAKDIR=/data/back_up/binlog
#HOSTNAME=`uname -n`
cd $DATADIR
FILELIST=`cat /usr/local/mysql/data/mysql-bin.index` ------------拿出所有的binlog文件的具体名字
COUNTER=0
for file in $FILELIST
do
COUNTER=`expr $COUNTER + 1` -------循环取出上步骤中的binlog文件列表;
done
NextNum=0
for file in $FILELIST
do
base=`basename $file`
NextNum=`expr $NextNum + 1`
if [ $NextNum -eq $COUNTER ]
then
echo "skip lastest" -------跳过最后一个binlog正在使用的文件,不进行备份,因为此binlog mysql正在写入,不进行拉取备份;
else
dest=$BAKDIR/$base
DATE_D=(`stat -Z -c %y $base`,"+%Y%m%d%H%M%S") ------计算出binlog文件的生产日期;
if(test -e $dest)
then
echo "skip exist $base" ------验证是否有binlog同名字的存在
else
echo "copying $base" ---------没有同名字的就开始copy到文件夹内
mkdir -p $BAKDIR/$DATE_D ------当天产生的binlog文件,保存到当天的文件夹内;
cp -rp $base $BAKDIR/$DATE_D ---------执行copy
wput -t 3 -B -s --basename $BAKDIR $BAKDIR/$DATE_D/mysql-bin.* ftp://ftpuser:xxxxx@192.168.25.163:21/logbackup/192.168.1.168/ ----当天的文件异地传输到目标机器上
fi
fi
done
if [ $? = 0 ] -------验证以上步骤是否执行完成,如果完整就退出;
then
echo "backup mysql binlog ok"
else
echo "backup mysql binlog failover!!!"
fi
[root@Mysql28 shell]#
以上就完成了binlog的异地传输;
脚本比较简单,不完善地方,可以随时更新;
相关文章推荐
- MySQL异地备份策略容灾脚本--shell
- shell脚本:mysql全备与binlog增量备份
- Shell实现MySQL定期备份策略小脚本
- web服务文件更新自动同步、数据库主从复制、shell脚本实现网站代码备份和mysql备份
- 【shell脚本】ftp自动上传mysql备份文件
- 基于dockerMysql的shell备份脚本
- 【shell脚本】ftp自动上传mysql备份文件
- linux 通过cp文件的方法来备份mysql脚本
- LINUX shell脚本练习:备份文件(1)
- shell 文件备份脚本
- Shell脚本:使用rsync备份文件/目录
- shell脚本备份本地服务器的文件到远程服务器
- Shell脚本自动备份MySQL到FTP并定期清理过期备份
- linux下mysql自动备份shell脚本
- Mysql 数据库自动备份Shell脚本
- mysql增量备份二进制日志shell脚本
- 自动化备份远程服务器端的文件到本地的Shell脚本
- linux上mysql远程备份和自动导入到指定数据库的shell脚本
- RMAN兼容性、控制文件自动备份、保存时间、备份策略、备份脚本(二)