Mysql增量备份与恢复

1.练习数据增量备份

增量备份:备份上次备份后,新产生的数据。

PERCONA Xtrabackup是一款强大的在线热备份工具,备份过程中不锁库表,适合生产环境。支持完全备份与恢复、增量备份与恢复、差异备份与恢复。

bash 复制代码
安装Xtrabackup
150、151主机均操作安装
[root@mysql151 ~]# wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.35-33/binary/redhat/8/x86_64/percona-xtrabackup-80-8.0.35-33.1.el8.x86_64.rpm?_gl=1*xsf375*_gcl_au*MTQ3NTE4MjI2MC4xNzQ2MDI1MjYy
[root@mysql151 ~]# yum install -y zstd perl-DBD-MySQL
[root@mysql151 ~]# rpm -ivh percona-xtrabackup-80-8.0.35-33.1.el8.x86_64.rpm 

在mysql150主机 完成增量备份练习

对数据做增量备份前,必须先有一次备份,也就是首次备份,通常首次备份备份所有数据;比如每周周一完全备份,每周周二到周日增量备份。

bash 复制代码
周一完全备份(备份所有数据)
[root@mysql150 ~]# xtrabackup --host=127.0.0.1 --user=root --password=123456 --backup --target-dir=/fullbak --datadir=/var/lib/mysql
[root@mysql150 ~]# ls /fullbak/
backup-my.cnf  binlog.index    ibdata1  mysql.ibd           sys   test2     undo_002                xtrabackup_checkpoints  xtrabackup_logfile
binlog.000002  ib_buffer_pool  mysql    performance_schema  test  undo_001  xtrabackup_binlog_info  xtrabackup_info         xtrabackup_tablespaces
单独开个页面 用于插入新数据 
[root@mysql150 mysql]# mysql -uroot -p123456 
mysql> insert into test.one values ('测试1',11,'女');


周二增量备份(备份周一备份后新产生的数据)
[root@mysql150 ~]# xtrabackup --host=127.0.0.1 --user=root --password=123456 --backup --target-dir=/new2 --incremental-basedir=/fullbak --datadir=/var/lib/mysql
插入新数据
mysql> insert into test.one values ('测试2',11,'女');

周三增量备份(备份周二备份后新产生的数据)
[root@mysql150 ~]# xtrabackup --host=127.0.0.1 --user=root --password=123456 --backup --target-dir=/new3 --incremental-basedir=/new2  --datadir=/var/lib/mysql
插入新数据
mysql> insert into test.one values ('测试3',11,'女');

周四增量备份(备份周三备份后新产生的数据)
[root@mysql150 ~]# xtrabackup --host=127.0.0.1 --user=root --password=123456 --backup --target-dir=/new4 --incremental-dir=/new3  --datadir=/var/lib/mysql

2.练习数据增量恢复

增量恢复数据步骤:

  1. 准备恢复数据
  2. 合并数据
  3. 清空数据库目录
  4. 拷贝数据
  5. 修改数据库目录所有者/组用户为mysql
  6. 重启数据库服务

具体操作如下:

bash 复制代码
把MySQL150主机的备份文件拷贝给mysql151
[root@mysql150 ~]# ls /|grep new
new2
new3
new4
new5
new6
new7
[root@mysql150 ~]# ls /|grep fullbak
fullbak
[root@mysql150 ~]# scp -r /new* root@192.168.10.151:/opt
[root@mysql150 ~]# scp -r /fullbak* root@192.168.10.151:/opt

在MySQL51主机使用备份文件恢复数据
1)、准备恢复数据
[root@mysql151 ~]# xtrabackup --prepare --apply-log-only --target-dir=/opt/fullbak
2)、合并数据
//将周二的增量数据拷贝到周一备份目录里,合并后周一的目录里存放的是
周一 + 周二 的数据
[root@mysql151 ~]# xtrabackup --prepare --apply-log-only --target-dir=/opt/fullbak --incremental-dir=/opt/new2
//将周三的增量数据拷贝到周一备份目录里,合并后周一的目录里存放的是
周一 + 周二 + 周三 的数据
[root@mysql151 ~]# xtrabackup --prepare --apply-log-only --target-dir=/opt/fullbak --incremental-dir=/opt/new3

清空数据库目录

[root@mysql151 ~]# rm -rf /var/lib/mysql/*
[root@mysql151 ~]# xtrabackup --prepare --target-dir=/opt/fullbak
拷贝数据
[root@mysql151 ~]# xtrabackup --copy-back --target-dir=/opt/fullbak
修改数据库目录所有者/组用户为mysql
[root@mysql151 ~]# chown -R mysql:mysql /var/lib/mysql
重启数据库服务
[root@mysql51 ~]# systemctl  restart  mysqld
[root@mysql151 ~]# mysql -uroot -p123456
mysql> select * from test.one;
+---------+------+------+
| name    | age  | sex  |
+---------+------+------+
| 测试    |   10 | 男   |
| 测试1   |   11 | 女   |
| 测试2   |   11 | 女   |
+---------+------+------+
3 rows in set (0.01 sec)
相关推荐
不辉放弃39 分钟前
ZooKeeper 是什么?
数据库·大数据开发
Goona_1 小时前
拒绝SQL恐惧:用Python+pyqt打造任意Excel数据库查询系统
数据库·python·sql·excel·pyqt
Olrookie2 小时前
若依前后端分离版学习笔记(三)——表结构介绍
笔记·后端·mysql
程序员编程指南2 小时前
Qt 数据库连接池实现与管理
c语言·数据库·c++·qt·oracle
幼儿园老大*4 小时前
数据中心-时序数据库InfluxDB
数据库·时序数据库
daixin88484 小时前
Redis过期数据的删除策略是什么?有哪些?
数据库·redis·缓存
Lemon程序馆4 小时前
今天聊聊 Mysql 的那些“锁”事!
后端·mysql
陪我一起学编程4 小时前
MySQL创建普通用户并为其分配相关权限的操作步骤
开发语言·数据库·后端·mysql·oracle
Albert Tan5 小时前
ORACLE DATABASE 23AI+Apex+ORDS -纯享版
数据库·oracle
程序员编程指南5 小时前
Qt OpenGL 集成:开发 3D 图形应用
c语言·数据库·c++·qt·3d