xtrabackup(物理备份)

一、完全备份

创建备份目录:

[root@server ~]# mkdir /xtrabackup/full -p

备份:

[root@server ~]# innobackupex --user=root --password='123' /xtrabackup/full

可以查看一下:

[root@server ~]# cd /xtrabackup/full/

[root@server full]# ls

2019-08-20_11-47-49


完全备份恢复流程                                                                                                                                

1. 停止数据库

2. 清理环境

3. 重演回滚--> 恢复数据

4. 修改权限

5. 启动数据库


1.关闭数据库:

[root@server ~]# systemctl stop mysqld

[root@server ~]# rm -rf /var/lib/mysql/*

[root@server ~]# rm -rf /var/log/mysqld.log

[root@server ~]# rm -rf /var/log/mysql-slow/slow.log

2.重演恢复:

[root@server ~]# innobackupex --apply-log /xtrabackup/full/2019-08-20_11- 47-49

3.确认数据库目录:

恢复之前需要确认配置文件内有数据库目录指定,不然xtrabackup不知道恢复到哪里

# cat /etc/my.cnf

[mysqld] 

datadir=/var/lib/mysql


二、增量备份

原理:每次备份上一次备份到现在产生的新数据

完整备份:周一

[root@server ~]# rm -rf /xtrabackup/*

[root@server ~]# innobackupex --user=root --password='123' /xtrabackup

[root@server ~]# cd /xtrabackup/

[root@server xtrabackup]# ls 

2019-08-20_14-51-35

[root@server xtrabackup]# cd 2019-08-20_14-51-35/

[root@server 2019-08-20_14-51-35]# ls

backup-my.cnf    ib_buffer_pool     mysql    sys    testdb    xtrabackup_info    company    ibdata1  performance_schema      test xtrabackup_checkpoints     xtrabackup_logfile

增量备份:周二 —— 周三

在数据库中插入周二的数据:

mysql> insert into testdb.t1 values(2);        #模拟周二

[root@server ~]# innobackupex --user=root --password='123' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2019-08-20_14-51-35/

--incremental-basedir:基于哪个增量

[root@server ~]# cd /xtrabackup/

[root@server xtrabackup]# ls

2019-08-20_14-51-35              2019-08-20_15-04-29 ---相当于周二的增量备份

在数据库中插入周三的数据:

mysql> insert into testdb.t1 values(3);            #模拟周三

[root@server ~]# innobackupex --user=root --password='123' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2019-08-20_15-04-29/      #基于前 一天的备份为目录

[root@server ~]# cd /xtrabackup/

[root@server xtrabackup]# ls

2019-08-20_14-51-35       2019-08-20_15-04-29       2019-08-20_15-10-56    ---相当于周三的增量

备份查看一下备份目录:

[root@server ~]# ls /xtrabackup/

2019-08-20_14-51-35     2019-08-20_15-04-29      2019-08-20_15-10-56

             全备周一                      增量周二                      增量周三


增量备份恢复流程

1. 停止数据库

2. 清理环境

3. 依次重演回滚redo log--> 恢复数据

4. 修改权限

5. 启动数据库


[root@server ~]# systemctl stop mysqld

[root@server ~]# rm -rf /var/lib/mysql/*

依次重演回滚redo log:

[root@server ~]# innobackupex --apply-log --redo-only /xtrabackup/2019-08- 20_14-51-35

周二 --- 周三

[root@server ~]# innobackupex --apply-log --redo-only /xtrabackup/2019-08- 20_14-51-35 --incremental-dir=/xtrabackup/2019-08-20_15-04-29                 --incremental-dir:增量目录

[root@server ~]# innobackupex --apply-log --redo-only /xtrabackup/2019-08- 20_14-51-35 --incremental-dir=/xtrabackup/2019-08-20_15-10-56/

恢复数据:

[root@server ~]# innobackupex --copy-back /xtrabackup/2019-08-20_14-51-35/

修改权限

[root@server ~]# chown -R mysql.mysql /var/lib/mysql/

[root@server ~]# systemctl start mysqld


三、差异备份


清理备份的环境:

[root@server ~]# rm -rf /xtrabackup/*

登陆数据库,准备环境

mysql> delete from testdb.t1;

mysql> insert into testdb.t1 values(1);        #插入数据1,模拟周一

mysql> select * from testdb.t1;

mysql> \q

查看时间:

[root@server ~]# date Tue Aug

20 15:39:59 CST 2019

1.完整备份:周一

[root@server ~]# innobackupex --user=root --password='123' /xtrabackup

2.差异备份:周二 —— 周三

语法: # innobackupex --user=root --password=888 --incremental /xtrabackup -- incremental-basedir=/xtrabackup/完全备份目录(周一)

3.修改时间:

[root@mysql-server ~]# date 08211543

Wed Aug 21 15:43:00 CST 2019

4.在登陆mysql

mysql> insert into testdb.t1 values(2);       #插入数据2,模拟周二 差异备份周二的

[root@server ~]# innobackupex --user=root --password='123' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2019-08-20_15-42-02/    #备份目录基于 周一的备份

5.再次登陆mysql

mysql> insert into testdb.t1 values(3);      #插入数据,模拟周三

6.在次修改时间

[root@server ~]# date 08221550

Thu Aug 22 15:50:00 CST 2019

7.在次差异备份

[root@server ~]# innobackupex --user=root --password='123' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2019-08-20_15-42-02/           #还是基于周一 的备份

8.延申到周四

mysql> insert into testdb.t1 values(4);

9.修改时间

[root@server ~]# date 08231553

Fri Aug 23 15:53:00 CST 2019

10.差异备份周四

[root@server ~]# innobackupex --user=root --password='123' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2019-08-20_15-42-02/ #还是基于周一 的备份

11.查看一下备份目录

[root@server ~]# ls /xtrabackup/

2019-08-20_15-42-02     2019-08-21_15-46-53     2019-08-22_15-51-15     2019-08-23_15-53- 28

               周一                                   周二                              周三                             周四


差异备份恢复流程 回到目录

1. 停止数据库

2. 清理环境

3. 重演回滚redo log(周一,某次差异)--> 恢复数据

4. 修改权限

5. 启动数据库

6. 停止数据库


[root@server ~]# systemctl stop mysqld

[root@server ~]# rm -rf /var/lib/mysql/*

1.恢复全量的redo log

语法: # innobackupex --apply-log --redo-only /xtrabackup/完全备份目录(周一)

[root@server ~]# innobackupex --apply-log --redo-only /xtrabackup/2019-08- 20_15-42-02/

2.恢复差异的redo log

语法:# innobackupex --apply-log --redo-only /xtrabackup/完全备份目录(周一)-- incremental-dir=/xtrabacku/某个差异备份    这里我们恢复周三的差异备份

[root@server ~]# innobackupex --apply-log --redo-only /xtrabackup/2019-08- 20_15-42-02/ --incremental-dir=/xtrabackup/2019-08-22_15-51-15/         #我们恢复周三的差 异备份

3.恢复数据

语法: # innobackupex --copy-back /xtrabackup/完全备份目录(周一)

[root@server ~]# innobackupex --copy-back /xtrabackup/2019-08-20_15-42-02/

修改权限:

[root@server ~]# chown -R mysql.mysql /var/lib/mysql

[root@server ~]# systemctl start mysqld

你可能感兴趣的:(xtrabackup(物理备份))