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* [email protected]:/opt
[root@mysql150 ~]# scp -r /fullbak* [email protected]:/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)
相关推荐
夜光小兔纸3 小时前
SQL Server 查询数据库中所有表中所有字段的数据类型及长度
数据库·sql·sql server
Sunshine~L&H5 小时前
Mac 上使用 mysql -u root -p 命令,出现“zsh: command not found: mysql“?如何解决
数据库·mysql·macos
chanalbert6 小时前
数据库连接池深度研究分析报告
数据库·spring
snpgroupcn7 小时前
泰国零售巨头 CJ Express 借助 SAP 内存数据库实现高效数据管理
数据库·express·零售
FJSAY7 小时前
我自己动手写了一个MySQL自动化备份脚本,基于docker
mysql·docker·自动化
明月看潮生9 小时前
青少年编程与数学 01-011 系统软件简介 19 SSMS 数据库管理工具
数据库·青少年编程·编程与数学
一勺菠萝丶9 小时前
宝塔安装MySQL无法远程连接【已解决】
mysql
blammmp9 小时前
Redis : set集合
数据库·redis·缓存
翔云1234569 小时前
精准测量 MySQL 主从复制延迟—pt-heartbeat工具工作原理
数据库·mysql
厚衣服_39 小时前
第15篇:数据库中间件高可用架构设计与容灾机制实现
java·数据库·中间件