Mysql差异备份与恢复

1.练习差异备份

差异备份:备份完全备份后,新产生的数据。

在192.168.88.50主机完成差异备份

bash 复制代码
步骤一:练习差异备份

//周一完全备份
mysql> select * from test.one;
+---------+------+------+
| name    | age  | sex  |
+---------+------+------+
| 测试    |   10 | 男   |
| 测试1   |   11 | 女   |
| 测试2   |   11 | 女   |
| 测试3   |   11 | 女   |
| 测试4   |   11 | 女   |
| 测试5   |   11 | 女   |
| 测试6   |   11 | 女   |
| 测试7   |   11 | 女   |
+---------+------+------+
8 rows in set (0.00 sec)
[root@mysql150 ~]# xtrabackup --host=127.0.0.1 --user=root --password=123456 --backup --target-dir=/alldir --datadir=/var/lib/mysql
//插入新数据 (可以插入多行)
mysql> insert into test.one values ('测试8',11,'女');

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

//周三差异备份,备份周一备份后新产生的数据
[root@mysql150 ~]# xtrabackup --host=127.0.0.1 --user=root --password=123456 --backup --target-dir=/dir3 --incremental-basedir=/alldir --datadir=/var/lib/mysql
mysql> insert into test.one values ('测试10',11,'女');

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

//周五差异备份,备份周一备份后新产生的数据
[root@mysql150 ~]# xtrabackup --host=127.0.0.1 --user=root --password=123456 --backup --target-dir=/dir5 --incremental-basedir=/alldir --datadir=/var/lib/mysql
mysql> insert into test.one values ('测试12',11,'女');

//周六差异备份,备份周一备份后新产生的数据
[root@mysql150 ~]# xtrabackup --host=127.0.0.1 --user=root --password=123456 --backup --target-dir=/dir6 --incremental-basedir=/alldir --datadir=/var/lib/mysql
mysql> insert into test.one values ('测试13',11,'女');

//周日差异,备份备份周一备份后新产生的数据
[root@mysql150 ~]# xtrabackup --host=127.0.0.1 --user=root --password=123456 --backup --target-dir=/dir7 --incremental-basedir=/alldir --datadir=/var/lib/mysql

2.练习差异恢复

差异恢复数据步骤:

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

具体操作如下:

bash 复制代码
把MySQL150的备份文件拷贝给MySQL151
[root@mysql150 ~]# scp -r /alldir/ root@192.168.10.151:/root
[root@mysql150 ~]# scp -r /dir7  root@192.168.10.151:/root

151主机操作
准备恢复数据
[root@mysql151 ~]# xtrabackup --prepare --apply-log-only --target-dir=/root/alldir
合并数据
说明:将周日的差异备份与周一的完全备份合并,因为周日的差异备份包扩周二+周日的所有数据
[root@mysql151 ~]# xtrabackup --prepare --apply-log-only --target-dir=/root/alldir --incremental-dir=/root/dir7
完成事务处理并使备份可恢复
[root@mysql151 ~]# xtrabackup --prepare --target-dir=/root/alldir
清空数据库目录
[root@mysql151 ~]# rm -rf /var/lib/mysql/*
拷贝数据
[root@mysql151 ~]# xtrabackup --copy-back --target-dir=/root/alldir 
调整文件权限
[root@mysql151 ~]# chown -R mysql:mysql /var/lib/mysql
启动 MySQL 服务
[root@mysql151 ~]# systemctl restart mysqld
[root@mysql151 ~]# mysql -uroot -p123456
mysql> select * from test.one;
+----------+------+------+
| name     | age  | sex  |
+----------+------+------+
| 测试     |   10 | 男   |
| 测试1    |   11 | 女   |
| 测试2    |   11 | 女   |
| 测试3    |   11 | 女   |
| 测试4    |   11 | 女   |
| 测试5    |   11 | 女   |
| 测试6    |   11 | 女   |
| 测试7    |   11 | 女   |
| 测试8    |   11 | 女   |
| 测试9    |   11 | 女   |
| 测试10   |   11 | 女   |
| 测试11   |   11 | 女   |
| 测试12   |   11 | 女   |
| 测试13   |   11 | 女   |
+----------+------+------+
14 rows in set (0.01 sec)
相关推荐
Zhang~Ling21 分钟前
Redis 基础教程:从常用命令到实际业务场景
数据库·redis·缓存
ss2731 小时前
30 PostgreSQL ACID特性详解
数据库·postgresql
syagain_zsx1 小时前
ODB 与 MySQL:C++ 里的 ORM 实践(类即表、事务铁律与查询封装)
开发语言·数据库·c++·mysql·工具库·1024程序员节
时间售卖铺1 小时前
MySQL 备份
运维·数据库·mysql·云原生
靠谱的工程师朋友2 小时前
电子会计档案管理软件科普 核心能力与选型要点解析
网络·数据库·人工智能·电子会计档案
北冥you鱼2 小时前
Go 语言 Ticker 定时任务全解析:原理、陷阱与最佳实践
开发语言·数据库·golang
花间相见2 小时前
【计算基础|MySQL17】三大日志:undo / redo / binlog
数据库·后端·面试
严同学正在努力2 小时前
PostgreSQL 数据库安装部署教程(Linux 多发行版 + Windows + Docker 全覆盖)
linux·数据库·postgresql
众链网络2 小时前
年卡跨淡旺季的有效期模型:不可用日期、次数与顺延规则
java·前端·数据库
夏幻灵2 小时前
MySQL 学习第一天:从数据库创建到 SQL 基础增删改查
mysql