XtraBackup备份原理和实战详解(3)

innobackupex --user=root --password=789/data/backups/full --slave-info --safe-slave-backup --parallel=4--safe-slave-backup-timeout=7200 --socket=/data/3306/mysql.sock

执行结果一定要看到“160905 20:01:38 completedOK!" OK的字样,才表示成功,从打出的日志我们也能看到备份的过程和上面给出的全备流程图对比起来。

正确输出以后会在/data/backups/full 指定的目录中生成一个有时间和序号的目录,这个目录就是全备文件存放地方如:

[root@db01 ~]# ls -lrt /data/backups/full/

总用量 4

drwxr-x--- 8 root root 4096 9月   5 20:012016-09-05_20-01-32 

1.7.2 增量备份

增量备份的前提是一定要有一个全备 ,只有有了全备才能进行所谓的增量备份!!!

增量备份的方式有两种,分别为:

第一种:通过全备的文件

innobackupex --user=root --password=789 --incremental --incremental-lsn=1783249/data/backups/inc  --slave-info--safe-slave-backup --parallel=4 --safe-slave-backup-timeout=7200--socket=/data/3306/mysql.sock

第二种方法:通过LSN

innobackupex --user=root --password=789 --incremental --incremental-lsn=1783249/data/backups/inc  --slave-info--safe-slave-backup --parallel=4 --safe-slave-backup-timeout=7200--socket=/data/3306/mysql.sock

1、准备好全备最新一次的全备文件,这里只做了一次,所以只有一个目录

[root@db01 ~]# ls -lrt /data/backups/full/

总用量 4

drwxr-x--- 8 root root 4096 9月   5 20:01 2016-09-05_20-01-32 

2、xtr_test数据库中的testbackup表,进行数据的插入,插入内容为“fist increment backup”

mysql> insert into testbackup(step)values('first increment backup');

Query OK, 1 row affected (0.02 sec)

   

mysql> select * from testbackup;

+----+------------------------+

| id | step                  |

+----+------------------------+

|  1 | firstfull backup      |

|  2 | firstincrement backup |

+----+------------------------+

2 rows in set (0.01 sec)

3、执行增量备份

这里我们要确定好最新一次的全备(强调)!!!

innobackupex --user=root --password=789--incremental  --incremental-basedir=/data/backups/full/

2016-09-05_20-01-32 

 /data/backups/inc --slave-info--safe-slave-backup --parallel=4 --safe-slave-backup-timeout=7200 --socket=/data/3306/mysql.sock

这里执行结果一定要看到completed OK!" OK的字样,才表示成功如果是分布式也可以用--rsync,我们会在创建的inc目录下发现创建了一个以时间和序号命名的目录,这个目录就是Xtrabackup备份的增量。

执行结果:

[root@db01 ~]# ll /data/backups/inc

总用量 4

drwxr-x--- 8 root root 4096 9月   5 20:19 2016-09-05_20-19-48 

TIP:innodb默认是使用的系统表空间,我们可以通过配置参数来使idb文件到独立空间中innodb_file_per_table = 1 这个是修改idb到独立空间,如果数据库是线上的,我们可以在配置文件my.cnf配置以上参数后,再使用set globalinnodb_file_per_table= 1 临时生效。

alter table backupstep engine=innodb; 修改表的引擎,这个操作很费时间,需要在业务低点的时候操作

1.7.3 再增量备份的基础上再备份

在创建的xtr_test数据库中的testbackup表中再次插入内容“secondincrement backup”

mysql> insert into testbackup(step) values('secondincrement backup');

Query OK, 1 row affected (0.01 sec)

   

mysql> select * from testbackup;

+----+-------------------------+

| id | step                    |

+----+-------------------------+

|  1 | firstfull backup       |

|  2 | first incrementbackup  |

|  3 | secondincrement backup |

+----+-------------------------+

3 rows in set (0.00 sec)

1确定最新的全备文件

[root@db01 full]# pwd

/data/backups/full

[root@db01 full]# ls -lrt

总用量 4

drwxr-x--- 8 root root 4096 9月   5 20:01 2016-09-05_20-01-32

2确定上一次增量备份的LSN

[root@db01 inc]# ls -lrt

总用量 4

drwxr-x--- 8 root root 4096 9月   5 20:19 2016-09-05_20-19-48

[root@db01 inc]# cd 2016-09-05_20-19-48/

[root@db01 2016-09-05_20-19-48]# ls

backup-my.cnf krik    performance_schema      xtrabackup_checkpoints  xtr_test

ibdata1.delta mysql   test                    xtrabackup_info

ibdata1.meta  oldboy xtrabackup_binlog_info xtrabackup_logfile

[root@db01 2016-09-05_20-19-48]# cat xtrabackup_checkpoints 

backup_type = incremental

from_lsn = 1793716   #这个值一定是和上一次全备的last_lsn一样,否则就是数据不全

to_lsn = 1794019

last_lsn = 1794019

compact = 0

recover_binlog_info = 0

4、
执行增量备份命令

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/dad1f36d752db73b06198b266bbe402f.html