Mysql差异备份与恢复
1.练习差异备份
差异备份:备份完全备份后,新产生的数据。
在192.168.88.50主机完成差异备份
步骤一:练习差异备份//周一完全备份
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.练习差异恢复
差异恢复数据步骤:
- 准备恢复数据
- 合并数据
- 清空数据库目录
- 拷贝数据
- 修改数据库目录所有者/组用户为mysql
- 重启数据库服务
具体操作如下:
把MySQL150的备份文件拷贝给MySQL151
[root@mysql150 ~]# scp -r /alldir/ root@192.168.10.151:/root
[root@mysql150 ~]# scp -r /dir7 root@192.168.10.151:/root151主机操作
准备恢复数据
[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)