mysql数据备份及恢复详细操作

一、数据库数据备份

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;
mysql数据备份及恢复详细操作

2.3 增备及全备

mysql数据备份及恢复详细操作

 

 

 三、例如恢复到九月一号的当天

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;
mysql数据备份及恢复详细操作

3.4查看二进制日志的方法

方法一
mysql -uroot -phongjun123 mysql-bin.000017 |more

方法二:

 mysql数据备份及恢复详细操作

方法三:

  mysql数据备份及恢复详细操作

 mysql数据备份及恢复详细操作

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
mysql数据备份及恢复详细操作
将所有二进制文件写在一个文件里执行

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

 

温馨提示:本文由自己记录,仅作参考,出了问题概不负责。。。。。

复数据

mysql数据备份及恢复详细操作

上一篇:nagios监控slave(借助脚本)


下一篇:SpringBoot学习笔记-16:第十六章-SpringBoot 与监控管理