backupexec mysql_MySQL使用mysqldump备份及还原

MySQL可以使用mysqldump进行数据的逻辑备份,配合开启bin log日志可以实现数据的全量恢复及增量恢复

MySQL版本查看

fd3b3fe49a7faadf714ff37ec78b8f22.png

修改配置文件记录bin log日志

[mysqld]

#bin log日志记录位置

log-bin=/opt/mysqldata/prodda3306data/mysql-bin

binlog_cache_size = 4M

max_binlog_cache_size = 256M

max_binlog_size = 32M

#日志模式为row 生产环境最好使用此日志模式

binlog_format = row

expire_logs_days = 7

登录MySQL终端查看日志模式

show variables like "binlog_format";

1d523d1b0413848ec575206f2e681944.png

查看bin log日志的POS值

show master status;

制定备份脚本每日定时备份,把该脚本运行定时任务每日凌晨全备并且在备份是时候记录bin log的POS位置值

#!/bin/bash

source /etc/profile

#mysqldump to fully backup mysql data

port=$1

password='password'

if [ $# -ne 1 ];then

echo "Usage: sh all.sh (3306|3307)"

exit 1

fi

psocket=`ps -ef|grep $port|grep "socket"|awk -vRS="--socket" '{t=$0;}END{print "--socket"t}'|awk '{print $1}'`

if [ -f /root/.bash_profile ];then

source /root/.bash_profile

fi

#定义备份目录

BakDir=/opt/mysqlbak/full${port}

[ ! -d $BakDir ] && mkdir -p $BakDir

LogFile=$BakDir/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 -p"$password" --all-databases --lock-all-tables --routines --triggers --events --master-data=2 --flush-logs $psocket --set-gtid-purged=OFF > $DumpFile

tar zcvf $GZDumpFile $DumpFile

if [ -f $DumpFile ];then

rm -rf $DumpFile

fi

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

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

sleep 1

#删除超过10天的全备文件

find $BakDir -name "*.tgz" -mtime +10 -exec rm -rf {} \;

恢复

全备恢复,把备份文件解压缩,把解压后的文件打开查看POS值(在22行左右)

ea003d7d405e7bb569cafc2f565aba3c.png

使用全备进行全量恢复,恢复前需关闭前端应用已避免数据混乱

mysql -uroot -p123456 -h127.0.0.1 < 20190117.sql

使用bin log进行增量恢复,为测试恢复效果在master主机上面新建数据库及表

create database test;

use test

create table test(id int);

insert into test values(1);

select * from test;

创建一个test库和test表,并且往表里面插入一条数据

43048b63831b6f404b0c2d58a8232ce2.png

把mysql-bin.001446及以后的日志(如果有的话)都拷贝下来

使用mysqlbinlog命令还原日志,对于001446需要指定start position值,其他001446以后的日志(如果有的话)还原不需要指定start position值

mysqlbinlog mysql-bin.001446 --start-position=194 > 20190117binlog.sql

还原

mysql -uroot -p123456 -h127.0.0.1 < 20190117binlog.sql

查看是否还原

9ca95891a8e5fb67e775777eeaeca017.png

全量及增量备份恢复成功

PS:如果想针对单库进行增量恢复可以在mysqbinlog到处的时候加参数-d 例如

mysqlbinlog -d test mysql-bin.001446

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值