MySql的全量备份和增量备份及还原

MySql的全量备份和增量备份及还原

一、工作场景

.MySql早上2点进行全量备份

.每隔2小时进行一次增量备份

二、设计思路

.利用全备份文件中记录CHANGE MASTER语句,binlog文件及其位置点信息,找出binlog文件中增量的部分。

.用mysqlbinlog命令上述的binlog文件导出为sql文件,并剔除其中drop语句

.通过全量备份和增量binlog文件的导出sql,可以恢复完成的数据

三、全量备份

.脚本

#!/bin/bash
# program :use mysqldump to Fully backup mysql data per day!
# path :全备份,路径:/data/mysql/backup/daily
BakDir=/data/mysql/backup/daily
cd BakDirDumpFile= Date.sql
GZDumpFile= Date.sql.tgz/usr/local/mysql/bin/mysqldumpurootp123456quickalldatabasesflushlogsdeletemasterlogssingletransaction> DumpFile
#/bin/tar czvf GZDumpFile DumpFile
Last=date + “%Y-%m-%d %H:%M:%S”
logFile=/data/mysql/backup/daily/bak.log
echo 开始: Begin: Last GZDumpFilesucc>> logFile

四、增量备份

#!/bin/bash
BakDir=/data/mysql/backup/hour
BinDir=/usr/local/mysql/data
logFile=/data/mysql/backup/hour/bak.log
BinFile=/usr/local/mysql/data/mysql-bin.index
/usr/local/mysql/bin/mysqladmin -uroot -p123456 flush-logs
#这个是用于产生新的mysql-bin.*文件
Counter=wc -l BinFile | awk '{print $1}’  
NextNum=0  
#for循环用于对比
Counter, NextNumforfileincat BinFile
do
base=basename $file
NextNum=expr $NextNum + 1
if [ NextNumeq Counter ]
then
echo baseskip!>> logFile
else
dest= BakDir/ base
if(test -e dest)thenecho base exist! >> logFileelsecp BinDir/ base BakDir
echo basecopying>> logFile
fi
fi
done
echo date +”%Y-%m-%d %H:%M:%S” NextNumBakupsucc!>> logFile

五、完全备份

# mysql -u root -p < full_bak.sql

六、增量备份

#mysqlbinlog –no-defaults /data/mysql/backup/hour/mysql-bin.000058 | mysql -uroot -p12345 -v finance

问题记录:

1)binlog 包unknown variable ‘default-character-set=utf8’

方法1:

    在/etc/my.cnf 中将default-character-set=utf8修改成charater-set-server=utf8

方法2:

    mysqlbinlog --no-defaults mysql-bin.00000
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值