暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

xtrabackup简单实用

原创 是赐赐啊! 云和恩墨 2022-12-12
461

mysql备份工具xtrabackup的使用
适用范围
操作系统:CentOS 7.6

数据库:Mysql 8.0.30

问题概述
mysql的第三方备份工具xtrabackup的使用,可实现mysql数据库基于物理文件的全量及增量备份



1、简介
xtrabackup 是一个对mysql做数据备份的工具,支持在线热备份(备份时不影响数据读写)

实质是基于数据文件拷贝方式备份



特点:

1)备份过程快速,可靠

2)备份过程不会打断正在执行的事务

3)能够基于压缩等功能节约磁盘空间和流量

4)自动实现备份校验

5)还原速度快



2、下载安装
https://repo.percona.com/yum/release/7/RPMS/x86_64/percona-xtrabackup-80-8.0.30-23.1.el7.x86_64.rpm

使用yum进行安装

yum -y install percona-xtrabackup-80-8.0.30-23.1.el7.x86_64.rpm
如提示需要:libev.so.4()(64bit),还需安装libev工具

ftp://rpmfind.net/linux/atrpms/el6-x86_64/atrpms/stable/libev-4.04-2.el6.x86_64.rpm



rpm -ivh libev-4.04-2.el6.x86_64.rpm


3、全量备份及恢复
1)赋权



grant BACKUP_ADMIN on *.* to 'root'@'%';
flush privileges;
2)进行备份



mkdir -p /back/sql
chown mysql:mysql /back/sql
xtrabackup --backup --target-dir=/back/sql -uroot -pRoot#123 -P3306 -H127.0.0.1
3)模拟数据库损坏



mv /mysql/data /mysql/data-bak
mkdir /mysql/data
chown mysql:mysql /mysql/data
4)进行恢复

恢复过程首先要执行prepare,将所有的数据文件都准备到同一个时间点

因为再备份过程中所有的数据文件都是在不同的时间点

直接启动可能会导致冲突



xtrabackup --prepare --target-dir=/back/sql
这里源端为备份路径,目标端为数据目录



xtrabackup --copy-back --target-dir=/back/sql --datadir=/mysql/data
5)重启数据库



chown -R mysql:mysql /mysql/data
service mysql.service restart




4、增量备份及恢复
1)全量备份

进行增量备份前提需要有全量备份



rm -rf /back/sql/*
xtrabackup --backup --target-dir=/back/sql -uroot -pRoot#123 -P3306 -H127.0.0.1
2)插入增量数据



insert into t.test values(2);
insert into t.test values(3);
flush logs;
3)进行增量备份

注:这里的basedir对应上一次全量备份路径

mkdir /back/inc1
chown mysql:mysql /back/inc1
xtrabackup --backup --target-dir=/back/inc1 --incremental-basedir=/back/sql -uroot -pRoot#123 -P3306 -H127.0.0.1
du -sh 会发现增量备份文件远小于全量备份文件



4)再次插入增量数据



insert into t.test values(4);
insert into t.test values(5);
flush logs;
5)再次进行增量备份

此时basedir对应上一次增量备份路径



mkdir /back/inc2
chown mysql:mysql /back/inc2
xtrabackup --backup --target-dir=/back/inc2 --incremental-basedir=/back/inc1 -uroot -pRoot#123 -P3306 -H127.0.0.1
6)模拟数据丢失



rm -rf /mysql/data
7)数据恢复前准备



xtrabackup --prepare --apply-log-only --target-dir=/back/sql --datadir=/mysql/data
xtrabackup --prepare --apply-log-only --target-dir=/back/sql --incremental-dir=/back/inc1 --datadir=/mysql/data
xtrabackup --prepare --target-dir=/back/sql --incremental-dir=/back/inc2 --datadir=/mysql/data
8)数据恢复



xtrabackup --copy-back --target-dir=/back/sql --datadir=/mysql/data
9)重启数据库

chown mysql:mysql -R /mysql/data
service mysql.service restart
登录测试,查看新增数据是否可以查询

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论