Linux MySQL备份——percona-xtrabackup工具的安装和使用

MySQL备份

在生产环境中数据库可能会遭遇意外情况从而导致数据丢失, 如硬件故障、软件故障、自然灾害、黑客攻击、误操作,宕机所以,为了应对意外突发情况所以我们要提前做好数据备份

物理备份/冷备份:直接复制数据库文件,适用于大型数据库环境,不受存储引擎的限制,但不能恢复到不同的MySQL版本(tar,cp,scp)。拷贝数据, 优点快,缺点服务停止。

逻辑备份/热备份:备份的是建表、建库、插入等操作所执行SQL语句(DDL DML DCL),适用于中小型数据库(mysqldump,mydumper)。效率相对较低

完全备份

在这里插入图片描述

增量备份因每次仅备份自上一次备份以来有变化的文件,所 以备份体积小,备份速度快,但是恢复的时候,需要按备份时间顺序,逐个备份版本进行恢复,恢复时间长。
在这里插入图片描述

差异备份:占用空间比增量备份大,比完整备份小,恢复时仅需要恢复第一个完整版本和最后 一次的差异版本(包含所有的差异),恢复速度介于完整备份和增量备份之间。

percona-xtrabackup:它是开源免费的支持MySQL 数据库热备份的软件,它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份。它不暂停服务创建Innodb热备份;
为mysql做增量备份;在mysql服务器之间做在线表迁移;使创建replication更加容易;备份mysql而不增加服务器的负载。
percona是一家老牌的mysql技术咨询公司。它不仅提供mysql的技术支持、培训、咨询,还发布了mysql的分支版本–percona Server。并围绕
percona Server还发布了一系列的mysql工具。

  • 安装percona-xtrabackup:
yum install -y  https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm   mysql官方源
yum install -y yum-utils      安装yum工具
yum repolist all | grep mysql     查看mysql可用版本
yum-config-manager --disable mysql80-community    禁用80
yum-config-manager --enable mysql57-community     启用57
yum  install mysql-community-libs-compat -y
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
yum -y install percona-xtrabackup-24.x86_64    安装percona
rpm -ql percona-xtrabackup-24     查询安装结果

完全备份流程

innobackupex --user=root --password='XieDongwy@163' /xtrabackup/full             备份
ls /xtrabackup/full/         查看备份目录
 ls /xtrabackup/full/2021-04-16_18-55-07/
cat /xtrabackup/full/2021-04-16_18-55-07/xtrabackup_binlog_info    观看二进制日志位置
systemctl stop mysqld      停止数据库
以下两行代码测试环境使用
rm -rf /var/lib/mysql/*                删除mysql数据库文件
rm -rf /var/log/mysqld.log          删除mysql日志文件

在这里插入图片描述

innobackupex --apply-log /xtrabackup/full/2017-08-01_00-00-18/    指定备份点
innobackupex --copy-back /xtrabackup/full/2017-08-01_00-00-18/   恢复文件
ls /var/lib/mysql
chown -R mysql.mysql /var/lib/mysql
systemctl start mysqld
mysql -uroot -p'XieDongwy@163'                     登陆验证

在这里插入图片描述

增量备份流程

create database testdb;
use testdb;
create table test(id int);
insert into test values (1);
select * from test;

在这里插入图片描述

完整备份:1

rm -rf /xtrabackup/*
date 04010000    (如果调的话时间建议靠后设置。)
innobackupex --user=root --password='XieDongwy@163' /xtrabackup
ll /xtrabackup/

在这里插入图片描述

增量备份:2

date 04020000     (更新时间)
mysql -uroot -p'XieDongwy@163' -e  'insert into testdb.test values (2)'
innobackupex --user=root --password='XieDongwy@163' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2021-04-16_19-14-11
ls  /xtrabackup/

在这里插入图片描述

增量备份:3

date 04030000     (更新时间)
mysql -uroot -p'XieDongwy@163' -e  'insert into testdb.test values (3)'
innobackupex --user=root --password='XieDongwy@163' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2021-04-16_19-17-01
 ls  /xtrabackup/

在这里插入图片描述

增量备份依次类推。

  • 增量备份恢复
systemctl stop mysqld           停止mysql
rm -rf /var/lib/mysql/*           清理库
innobackupex --apply-log --redo-only /xtrabackup/2021-04-16_19-14-11  恢复1
innobackupex --copy-back /xtrabackup/2021-04-16_19-14-11 
chown -R mysql.mysql /var/lib/mysql
systemctl start mysqld  

在这里插入图片描述

innobackupex --apply-log --redo-only /xtrabackup/2021-04-16_19-14-11  --incremental-dir=/xtrabackup/2021-04-16_19-17-01                    恢复2
innobackupex --apply-log --redo-only /xtrabackup/2021-04-16_19-17-01 --incremental-dir=/xtrabackup/ 2021-04-16_19-18-23    恢复3
rm -rf /var/lib/mysql/*
innobackupex --copy-back /xtrabackup/2021-04-16_19-17-01    恢复累加的123
chown -R mysql.mysql /var/lib/mysql
systemctl start mysqld
mysql -uroot -p'XieDongwy@163' -e 'select * from testdb.test'
  • 差异备份

rm -rf /xtrabackup/*

完整备份
1

date 05010000   (修改时间,这里我不做修改)
create database testdb;
use testdb;
create table test2(id int);
insert into test2 values(1);
select * from test2;
innobackupex --user=root --password='XieDongwy@163' /xtrabackup
ll /xtrabackup/

差异备份
2

date 05020000
mysql -uroot -p'XieDongwy@163' -e 'insert into testdb.test2 values(2)'
 innobackupex --user=root --password='XieDongwy@163' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2021-04-16_20-38-09
ll /xtrabackup/
du -sh /xtrabackup/

3

date 05030000
mysql -uroot -p'XieDongwy@163' -e 'insert into testdb.test2 values(3)'
 innobackupex --user=root --password='XieDongwy@163' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2021-04-16_20-40-42
ll /xtrabackup/
du -sh /xtrabackup/

456依次类推

差异恢复

systemctl stop mysqld
rm -rf /var/lib/mysql/*
innobackupex --apply-log --redo-only /xtrabackup/2021-04-16_20-38-09
innobackupex --apply-log --redo-only /xtrabackup/2021-04-16_20-38-09 --incremental-dir=/xtrabackup/2021-04-16_20-39-18
innobackupex --copy-back /xtrabackup/2021-04-16_20-38-09 
chown -R mysql.mysql /var/lib/mysql/
ystemctl start mysqld
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值