mysql增量脚本_mysql全量和增量备份脚本

全量:

[root@master leo]# cat DBfullBak.sh

#!/bin/bash

#use mysqldump to fully backup mysql data

BakDir=/root/leo/full

LogFile=/root/leo/full/bak.log

Date=`date +%Y%m%d`

Begin=`date +"%Y年%m月%d日 %H:%M:%S"`

cd $BakDir

DumpFile=$Date.sql

GZDumpFile=$Date.sql.tgz

mysqldump -uroot -p123456 --all-databases --lock-all-tables --routines --triggers --events --master-data=2 --flush-logs > $DumpFile

tar zcvf $GZDumpFile $DumpFile

rm $DumpFile

Last=`date +"%Y年%m月%d日 %H:%M:%S"`

echo 开始:$Begin 结束:$Last $GZDumpFile succ >> $LogFile

参数注释:

--all-databases   #备份所有库

--lock-all-tables #为所有表加读锁

--routinge        #存储过程与函数

--triggers        #触发器

--events          #记录事件

--master-data=2   #在备份文件中记录当前二进制日志的位置,并且为注释的,1是不注释掉在主从复制中才有意义

--flush-logs      #日志滚动一次

结果如下:

[root@master full]# ls

20140728.sql.tgz  bak.log

[root@master full]# cat bak.log

开始:2014年07月28日 19:02:59 结束:2014年07月28日 19:02:59 20140728.sql.tgz succ

开始:2014年07月28日 19:12:01 结束:2014年07月28日 19:12:01 20140728.sql.tgz succ

[root@master full]#

增量备份:

[root@master leo]# cat DBDailyBak.sh

#!/bin/bash

BakDir=/root/leo/binlog/

BinDir=/var/lib/mysql

LogFile=/root/leo/binlog/bak.log

BinFile=/var/lib/mysql/mysql-bin.index

mysqladmin -uroot -p123456 flush-logs

Counter=`wc -l $BinFile|awk '{print $1}'`

NextNum=0

for file in `cat $BinFile`

do

base=`basename $file`

NextNum=`expr $NextNum + 1`

if [ $NextNum -eq $Counter ]

then

echo $base skip! >> $LogFile

else

dest=$BakDir/$base

if(test -e $dest)

then

echo $base exist! >> $LogFile

else

cp $BinDir/$base $BakDir/

echo $base copying >> $LogFile

fi

fi

done

echo `date +"%Y年%m月%d日 %H:%M:%S"` $Next Bakup succ~ >> $LogFile

©著作权归作者所有:来自51CTO博客作者西索oO的原创作品,如需转载,请注明出处,否则将追究法律责任

mysqleventsMysql

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用xtrabackup工具及shell脚本来进行MySQL数据库的备份。下面是一个示例脚本,可以实现每小时进行全量备份和增量备份: ```bash #!/bin/bash # 设置备份目录 BACKUP_DIR="/path/to/backup/directory" # 设置MySQL连接信息 MYSQL_USER="your_mysql_user" MYSQL_PASSWORD="your_mysql_password" # 创建备份目录 mkdir -p $BACKUP_DIR # 获取当前时间 CURRENT_TIME=$(date +%Y%m%d%H%M%S) # 进行全量备份 xtrabackup --backup --user=$MYSQL_USER --password=$MYSQL_PASSWORD --target-dir=$BACKUP_DIR/full_$CURRENT_TIME # 判断上一次全量备份是否存在 if [ -d $BACKUP_DIR/full_last ]; then # 进行增量备份 xtrabackup --backup --user=$MYSQL_USER --password=$MYSQL_PASSWORD --target-dir=$BACKUP_DIR/incr_$CURRENT_TIME --incremental-basedir=$BACKUP_DIR/full_last else # 如果全量备份不存在,则进行第二次全量备份 xtrabackup --backup --user=$MYSQL_USER --password=$MYSQL_PASSWORD --target-dir=$BACKUP_DIR/full_$CURRENT_TIME fi # 更新最后一次全量备份目录 rm -rf $BACKUP_DIR/full_last mv $BACKUP_DIR/full_$CURRENT_TIME $BACKUP_DIR/full_last ``` 将以上脚本保存为一个shell脚本文件,并根据你的实际情况修改相关参数。然后,通过设置定时任务(例如crontab)来每小时执行该脚本即可实现每小时全量备份和增量备份。 请注意,以上脚本仅提供了基本的备份逻辑,实际使用时可能需要根据需求进行进一步的优化和安全性考虑。务必确保你的数据库连接信息和备份目录设置正确,并对备份文件进行适当的保护和存储。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值