天天看点

mysql+gtid+增量备份_MySQL数据库XBK增量备份恢复

大家好,我是anyux。本文介绍MySQL数据库XBK增量备份恢复。

文末总结XBK增量备份恢复,并有导图

mysql+gtid+增量备份_MySQL数据库XBK增量备份恢复

XBK增量备份

XBK的增量备份,每次都是基于上一天,第一次的备份是一个全备,以后所有的增量备份都只备份变化的数据

清空备份路径

rm -rf /tmp/db/*

模拟数据

create database xbk charset utf8mb4;use xbk;create table tmp (id int);insert into tmp values (1),(2),(3);commit;

全备

此处使用cat命令读取xtrabackup_checkpoints文件,查看备份类型,lsn号,判断全备是否完整

innobackupex --user=root --password='root' -S /data/mysql/mysql.sock --no-timestamp /tmp/db

第一次模拟数据变化

create database xbk01 charset utf8mb4;use xbk01;create table tmp01 (idx int);insert into tmp01 values (4),(5),(6);commit;

第一次增量备份

--incremental 增量备份的开关

--incremental-basedir=/tmp/db 基于哪个备份进行增量备份

/tmp/xbk01 增量备份到哪个位置

innobackupex --user=root --password='root' -S /data/mysql/mysql.sock --no-timestamp --incremental-basedir /tmp/db --incremental /tmp/xbk01

检查第一次备份状态

此处使用cat命令读取增量备份的xtrabackup_checkpoints文件,查看备份类型,lsn号,判断全备是否完整

cat /tmp/xbk01/xtrabackup_checkpoints

mysql+gtid+增量备份_MySQL数据库XBK增量备份恢复

第二次模拟数据变化

create database xbk02 charset utf8mb4;use xbk02;create table tmp02 (idx int);insert into tmp02 values (7),(8),(9);commit;

第二次增量备份

innobackupex --user=root --password='root' -S /data/mysql/mysql.sock --no-timestamp --incremental-basedir /tmp/xbk01 --incremental /tmp/xbk02

检查第二次备份状态

此处使用cat命令读取增量备份的xtrabackup_checkpoints文件,查看备份类型,lsn号,判断全备是否完整

cat /tmp/xbk02/xtrabackup_checkpoints

mysql+gtid+增量备份_MySQL数据库XBK增量备份恢复

第三次模拟数据变化

create database xbk03 charset utf8mb4;use xbk03;create table tmp03 (idx int);insert into tmp03 values (10),(11),(12);commit;

模拟数据库崩溃

rm -rf /data/mysql/data/*

恢复思路

停止业务,挂维护页面

查找可用备份,检查备份策略,备份文档,执行计划,定时任务等,full+xbk01+xbk02

补齐binlog:从第二次增量备份到故障时间节点中的binlog

恢复全备+增量+binlog

验证数据

重启业务,删除维护页面

mysql+gtid+增量备份_MySQL数据库XBK增量备份恢复

恢复前的准备

整理全备xbk

--redo-only 在整理全备和增量合并时使用,最后一次增量不需要

innobackupex --apply-log --redo-only /tmp/db

合并xbk01到xbk,并整理备份

此处使用cat命令整理后两个的xbk01和xbk的xtrabackup_checkpoints文件,last_lsn号是否相同。相同表示整理成功

innobackupex --apply-log --redo-only --incremental-dir=/tmp/xbk01 /tmp/db

mysql+gtid+增量备份_MySQL数据库XBK增量备份恢复

合并xbk02到xbk,并整理备份

此处使用cat命令整理后两个的xbk02和xbk的xtrabackup_checkpoints文件,last_lsn号是否相同.相同表示整理成功

innobackupex --apply-log --incremental-dir=/tmp/xbk02 /tmp/db

mysql+gtid+增量备份_MySQL数据库XBK增量备份恢复

最后一次整理xbk

innobackupex --apply-log /tmp/db

截取二进制日志

找起点,在xbk02的备份文件中

cat /tmp/xbk02/xtrabackup_binlog_info

mysql+gtid+增量备份_MySQL数据库XBK增量备份恢复

找终点

从上一个gtid号的157开始,直到最后一个值,就是终点

mysqlbinlog /data/mysql/log-bin.000004 | grep -i 'set'

从下图中截取gtid数据点,说明gtid的终点是159。如果有其他误操作gtid号,需要排除

mysql+gtid+增量备份_MySQL数据库XBK增量备份恢复

多次验证gtid节点

mysqlbinlog --base64-output=decode-rows /data/mysql/log-bin.000004

截取日志

mysqlbinlog --skip-gtids --include-gtids='87031e16-4413-11ea-bb11-000c2922081d:157-159' /data/mysql/log-bin.000004 > /tmp/log-bin.sql

恢复数据备份

cp -a /tmp/db/* /data/mysql/datachown -R mysql.mysql /data/mysql/data/systemctl restart mysqld

数据库操作

set sql_log_bin=0;source /tmp/log-bin.sql;

验证数据

select * from xbk03.tmp03union allselect * from xbk02.tmp02union allselect * from xbk01.tmp01union allselect * from xbk.tmp;

mysql+gtid+增量备份_MySQL数据库XBK增量备份恢复
mysql+gtid+增量备份_MySQL数据库XBK增量备份恢复

欢迎在评论区一起讨论,质疑。文章都是手打原创,每天最浅显的介绍运维、数据库相关的技术,喜欢我的文章就关注一波吧,可以看到最新更新和之前的文章。

mysql+gtid+增量备份_MySQL数据库XBK增量备份恢复