一、数据库数据备份
1、全备
BakDir=/backup/full #创建全备目录 LogFile=/backup/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 -phongjun123 --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 定时任务:每周日凌晨三点打包 #全备 0 3 * * 0 /bin/bash /server/scripts/backfull.sh
2、增备
BakDir=/backup/binlog/ #创建增备目录 BinDir=/application/mysql/data LogFile=/backup/binlog/bak.log BinFile=/application/mysql/data/mysql-bin.index mysqladmin -uroot -phongjun123 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 -a $BinDir/$base $BakDir/ echo $base copying >> $LogFile fi fi done echo `date +"%Y年%m月%d日 %H:%M:%S"` $Next Bakup succ~ >> $LogFile 定时任务:每天晚上凌晨备份一次 #增备 0 1 * * * /bin/bash /server/scripts/backup.sh
二、mysql数据库数据恢复
2.1 登录数据库
mysql -uroot -phongjun123
2.2 查看当前的position号
show master status;
2.3 增备及全备
三、例如恢复到九月一号的当天
3.1 思路
上周全备+本周增备
3.2 全备导入数据库
登录数据库 mysql -uroot -phongjun123 mysql> source /tmp/20180827.sql
3.3增备导入
3.3.1思路一
利用增备,备份该天的数据,利用position号码进行截取。以BEGIN开始备,到COMMIT结束,备份的数据才是有效的。
例子:
例:mysql> show binlog events in ‘mysql-bin.000043‘;
3.4查看二进制日志的方法
方法一
mysql -uroot -phongjun123 mysql-bin.000017 |more
方法二:
方法三:
3.5根据BEGING到COMMIT恢复数据
例子:
8月28号的第一个GEGING号和9月1号的最后一个COMMIT号
注:截取position都是以BEGING至COMMIT结束,备份数据才有用。
cd /backup/binlog
mysqlbinlog -uroot -phongjun123 --start-position=120 --stop-position=318 mysql-bin.000018 > /tmp/zhj.sql
将所有二进制文件写在一个文件里执行
cd /data/backup/binlog
mysqlbinlog -uroot -phongjun123 mysql-bin.000036 > /tmp/inc.sql
mysqlbinlog -uroot -phongjun123 mysql-bin.000037 >> /tmp/inc.sql
mysqlbinlog -uroot -phongjun123 mysql-bin.000038 >> /tmp/inc.sql
mysqlbinlog -uroot -phongjun123 mysql-bin.000039 >> /tmp/inc.sql
mysqlbinlog -uroot -phongjun123 mysql-bin.000040 >> /tmp/inc.sql
3.6数据恢复
mysql -uroot -phongjun123
mysql> source /tmp/inc.sql
温馨提示:本文由自己记录,仅作参考,出了问题概不负责。。。。。