`
AllenHU0320
  • 浏览: 86863 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

XtraBackup与InnoBackupex 联机备份

 
阅读更多

XtraBackup联机备份:

专注于InnoDBXtraBackup的热备工具,是C语言开发的程序,专用于备份InnoDBXtraDB引擎对象

备份集高效、完整、可用

备份任务执行过程中不会阻塞事务

节省磁盘空间,降低网络带宽占用

备份集自动验证机制

恢复更快

[root@mysql1 /]# rpm -ivh percona-xtrabackup-2.2.3-4982.el6.x86_64.rpm

[mysql@mysql1 ~]$ echo "export PATH=/usr/bin:\$PATH" >> /home/mysql/.bash_profile

(system@localhost) [(none)]> create user xtrabk@'localhost' identified by 'onlybackup';

(system@localhost) [(none)]> grant reload,lock tables,Replication client,super on *.* to xtrabk@'localhost';

[mysql@mysql1 ~]$ xtrabackup -help

使用xtrabackup命令进行备份

xtrabackup命令有两种模式,--backup(备份模式)--prepara(恢复准备模式)

--backup指定当前的操作模式,backup就是说要创建备份集

--target-dir指定备份集的存储路径

--defaults-fileMySQL的选项文件中读取参数

[mysql@mysql1 ~]$ xtrabackup --defaults-file=/data/mysqldata/3306/my.cnf --backup --target-dir=/data/mysqldata/backup/full_bak

 

使用innobackupex命令进行备份,还能备份非InnoDB对象,innobackupex内部调用xtrabackup进行备份

[mysql@mysql1 ~]$ innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --user=xtrabk --password='onlybackup' /data/mysqldata/backup/

创建增量备份:

在上一步全量备份完成后,修改InnoDB表的数据,进行第一次增量备份

[mysql@mysql1 ~]$ innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --user=xtrabk --password='onlybackup' --incremental --incremental-basedir=/data/mysqldata/backup/2014-07-10_09-29-32 /data/mysqldata/backup_inc

1)在做完第一次增量备份后,继续修改InnoDB表的数据,进行第二次增量备份

[mysql@mysql1 ~]$ innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --user=xtrabk --password='onlybackup' --incremental --incremental-basedir=/data/mysqldata/backup/2014-07-10_09-29-32 /data/mysqldata/backup_inc

此种方式对应Oracle的累积增量备份

2)在做完第一次增量备份后,继续修改InnoDB表的数据,进行第二次增量备份

[mysql@mysql1 ~]$ innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --user=xtrabk --password='onlybackup' --incremental --incremental-basedir=/data/mysqldata/backup_inc/2014-07-10_09-31-36 /data/mysqldata/backup_inc

此种方式对应Oracle的差异增量备份

--incremental:告诉xtrabackup这次是要创建增量备份

--incremental-basedir:指定一个全量备份的路径,作为增量备份的基础

--incremental-lsn:指定备份开始时的LSN

 

InnoDBLog Sequence Number日志序列号LSNInnoDB的每个页(Page)都保存有LSN,这个序号能够标识该页最后修改时间,增量备份正是根据这个LSN来的,因为每次备份(xtrabackupinnobackupex)XtraBackup都会在备份集中创建一个xtrabackup_checkpoints文件,这个文件中的内容就记录了最后修改的LSN序号。创建增量备份集时,只需要从上次的备份集中找到xtrabackup_checkpoints文件,读取最新的LSN,而后在创建增量是,选择LSN大于这个序号的页,以及这期间产生的二进制日志就可以了,甚至不需要对比全量备份集和当前数据库的数据文件

 

XtraBackup备份工作机制:

XtraBackup本质是基于InnoDB的故障恢复(crash-recovery)机制,先复制InnoDB的数据文件,复制的时候数据仍有可能正在读写,复制出的文件可能是不一致的状态,所以在备份过程中,需要定时扫描日志并作记录,而后通过备份的日志文件执行故障恢复,使文件恢复到一个一致的状态,使数据库达到可用状态。核心就是InnoDB维护的重做日志(redo log)XtraBackup会在启动时先记录下当前的日志序列号(LSN),然后开始复制数据文件,同时XtraBackup运行一个后台进程,监控着事务日志,并复制新发生的修改。这项操作会在XtraBackup备份执行过程中一直执行,就是log scanned up to信息,以确保记录下所有备份期间数据库发生的修改。接下来是准备进程(prepare process),在这一步中,XtraBackup对复制的数据文件执行故障恢复,将数据库恢复到可用状态

 

执行恢复:全量恢复和增量恢复:

准备恢复(prepare):就是为恢复做准备。备份集没有办法直接拿来用,所有需要一个对备份集做准备的过程

对于xtrabackup对应的参数是--prepare,对于innobackupex对应的参数是--apply-log

执行恢复(copy-back):备份集准备好以后,可以执行恢复了

对于xtrabackup没有特殊说明,简单cp/mv过程,对于innobackupex对应的参数是--copy-back,它的功能是将制定的备份集,恢复到指定的路径下

 

首先对全量备份做恢复的准备工作

[mysql@mysql1 ~]$ innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --apply-log --redo-only /data/mysqldata/backup/2014-07-10_09-29-32/

--apply-log从指定的选项文件中读取配置信息并应用日志等,表示要做的是对备份集做恢复的准备工作

--redo-only如果进行准备工作的备份集操作完成后,还有其他增量备份集待处理,那么就必须指定本参数

 

继续执行innobackupex命令,应用增量备份,这次要操作的备份集不是最后一份,需要再指定--redo-only参数

[mysql@mysql1 ~]$ innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --apply-log /data/mysqldata/backup/2014-07-10_09-29-32/ --incremental-dir=/data/mysqldata/backup_inc/2014-07-10_09-31-36 /

 

继续执行innobackupex命令,应用增量备份,这次要操作的备份集就是最后一份,不需要再指定--redo-only参数

[mysql@mysql1 ~]$ innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --apply-log /data/mysqldata/backup/2014-07-10_09-29-32/ --incremental-dir=/data/mysqldata/backup_inc/2014-07-10_09-35-13/

注意在备份集进行恢复的准备过程中,不要随意中断该任务,否则有可能导致备份集处于不一致状态。由于XtraBackup是直接在备份集中进行准备,一旦有异常,搞不好想恢复都没办法。建议操作之前,将备份集备份一次。

建议再执行一遍innobackupex --apply-log

[mysql@mysql1 ~]$ innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --apply-log  /data/mysqldata/backup/2014-07-10_09-29-32/

执行文件的恢复

[mysql@mysql1 ~]$ innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --copy-back /data/mysqldata/backup/2014-07-10_09-29-32/

 

恢复操作可以在任意机器上执行,只要您拥有完整备份集,可以把XtraBackup当做数据库迁移工具

 

打包和压缩备份集

XtraBackup支持流(stream)模式,能够直接将备份输出到指定的格式进行处理,比如tarxbstream

 

[mysql@mysql1 ~]$ innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --user=xtrabk --password=onlybackup --stream=tar /tmp | gzip -> /data/mysqldata/backup/xtra_fullbackup.tar.gz

 

 

 

全备

innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --user=xtrabk --password='onlybackup' /data/mysqldata/backup/

 

修改数据

(system@localhost) [mysql]> create table mytable(a int);

Query OK, 0 rows affected (0.06 sec)

(system@localhost) [mysql]> insert into mytable values (1);

Query OK, 1 row affected (0.04 sec)

(system@localhost) [mysql]> insert into mytable values (2);

Query OK, 1 row affected (0.01 sec)

(system@localhost) [mysql]> insert into mytable values (3);

Query OK, 1 row affected (0.00 sec)

(system@localhost) [mysql]> insert into mytable values (4);

Query OK, 1 row affected (0.00 sec)

(system@localhost) [mysql]> insert into mytable values (5);

Query OK, 1 row affected (0.01 sec)

 

进行第一增量备份

innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --user=xtrabk --password='onlybackup' --incremental --incremental-basedir=/data/mysqldata/backup/2015-02-14_19-08-11 /data/mysqldata/backup_inc

 

修改数据

(system@localhost) [mysql]> insert into mytable values (6);

Query OK, 1 row affected (0.01 sec)

(system@localhost) [mysql]> insert into mytable values (7);

Query OK, 1 row affected (0.01 sec)

(system@localhost) [mysql]> insert into mytable values (8);

Query OK, 1 row affected (0.00 sec)

(system@localhost) [mysql]> insert into mytable values (9);

Query OK, 1 row affected (0.00 sec)

(system@localhost) [mysql]> insert into mytable values (10);

Query OK, 1 row affected (0.00 sec)

 

(system@localhost) [mysql]> select * from mytable;

+------+

| a    |

+------+

|    1 |

|    2 |

|    3 |

|    4 |

|    5 |

|    6 |

|    7 |

|    8 |

|    9 |

|   10 |

+------+

10 rows in set (0.00 sec)

 

进行第二次增量备份

innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --user=xtrabk --password='onlybackup' --incremental --incremental-basedir=/data/mysqldata/backup_inc/2015-02-14_19-10-14 /data/mysqldata/backup_inc

 

进行恢复

对全量恢复做处理

innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --apply-log --redo-only /data/mysqldata/backup/2015-02-14_19-08-11/

 

进行第一次增量备份恢复

innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --apply-log --redo-only /data/mysqldata/backup/2015-02-14_19-08-11/ --incremental-dir=/data/mysqldata/backup_inc/2015-02-14_19-10-14/

 

进行第二次增量备份恢复

innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --apply-log --redo-only /data/mysqldata/backup/2015-02-14_19-08-11/ --incremental-dir=/data/mysqldata/backup_inc/2015-02-14_19-12-21/

 

建议再执行一遍innobackupex --apply-log

innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --apply-log /data/mysqldata/backup/2015-02-14_19-08-11/

 

执行copy操作

innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --copy-back /data/mysqldata/backup/2015-02-14_19-08-11/

 

 

进行数据验证

 

分享到:
评论

相关推荐

    innobackupex、xtrabackup使用说明及备份脚本

    《MySQL数据库备份:innobackupex与xtrabackup详解及实战脚本》 在MySQL数据库管理中,数据安全至关重要,而备份是保障数据安全的重要手段。本文将详细介绍两个用于MySQL数据库物理备份的工具——innobackupex和...

    基于xtrabackup的MySQL数据库备份及还原Shell脚本.zip

    本教程将详细介绍如何使用`xtrabackup`结合Shell脚本来实现MySQL数据库的备份与还原。 首先,我们需要理解`xtrabackup`的工作原理。`xtrabackup`通过读取InnoDB的数据文件和Redo日志,生成一个完整的物理备份。由于...

    Xtrabackup备份与恢复.pdf

    Xtrabackup备份与恢复 Xtrabackup是一个用于MySQL数据库物理热备的备份工具,由Percona公司开发,支持MySQL、Percona server和MariaDB,开源免费。其主要特点是能够对数据库进行增量备份,支持InnoDB和XtraDB两种...

    基于xtrabackup2.4(innobackupex)的数据库可配置的备份脚本

    基于xtrabackup2.4的数据库备份脚本,支持全库备份、指定库备份、压缩备份。备份规则:周一至周六增量备份,周日全库备份,自动管理备份数据和备份日志。如果有格式问题,应该是windows的空格和换行不同于Linux,...

    MySQL 备份工具Xtrabackup.docx

    Xtrabackup包含xtrabackup和innobackupex两个工具,前者专注于InnoDB和xtradb的数据备份,而innobackupex作为perl脚本,提供了对包括MyISAM在内的其他数据引擎的支持。 在实际应用中,可以根据业务需求制定不同的...

    percona-xtrabackup热备份软件

    percona-xtrabackup是一款强大的在线热备份工具,主要包括xtrabackup和innobackupex两个组件。

    xtrabackup备份恢复shell脚本

    《Xtrabackup备份与恢复:Shell脚本详解》 在MySQL数据库管理中,数据安全至关重要,而定期备份和有效的恢复策略是保障数据安全的关键环节。Xtrabackup是一款开源的、针对InnoDB存储引擎的热备份工具,它能够在不...

    基于xtrabackup8.0的数据库压缩可配置的备份脚本

    基于xtrabackup8.0的数据库备份脚本,支持全库压缩备份、排除指定数据库压缩备份以及指定数据库压缩备份。备份规则:周一至周六增量备份,周日全库备份,自动管理备份和备份日志。如果有格式问题,应该是windows的...

    Xtrabackup 备份

    - **`innobackupex`**:是基于 Perl 脚本构建的,它扩展了 `xtrabackup` 的功能,支持同时备份 InnoDB 和 MyISAM 类型的数据表,并且可以处理一些特定的场景,比如在从属服务器(slave)上备份数据。 #### 工作原理...

    Percona-XtraBackup-2.4.9.zip

    innobackupex 则封装了 xtrabackup,同时可以备份 MyISAM 数据表。Xtrabackup 做备份的 时候不能备份表结构、触发器等等,智能区分.idb 数据文件。另外 innobackupex 还不能完全支持增量 备份,需要和 xtrabackup ...

    xtrabackup自动备份脚本

    基于xtrabackup 2.4及docker版本mysql数据库可配置的压缩备份脚本,支持mysql5.6、5.7,目前仅支持数据库全量备份,默认备份数据保留35天

    percona-xtrabackup-24-2.4.20-1.el7.x86_64.rpm

     Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。  Xtrabackup有两个主要的工具:xtrabackup、innobackupex  1、...

    XtraBackup 备份与恢复实例讲解.docx

    XtraBackup 备份与恢复实例讲解 XtraBackup 是 Percona 公司开发的一款开源的 MySQL 备份工具,主要用于备份和恢复 MySQL 数据库。下面将从 XtraBackup 的参数选项方面对其进行讲解。 1. --defaults-file=[MY.CNF]...

    使用Xtrabackup进行MySQL备份

    【使用Xtrabackup进行MySQL备份】是一个高效且适合高负载服务器的备份策略。Percona XtraBackup是一款由Percona公司开发的开源MySQL备份工具,尤其针对InnoDB和XtraDB存储引擎提供了热备份功能,这意味着在备份过程...

    mysql5.6备份实例教程(innobackupex工具)

    Xtrabackup 和 innobackupex 是两个用于 MySQL 数据备份的重要工具,尤其适用于InnoDB存储引擎的数据备份。InnoDB 提供事务处理、行级锁定以及外键约束,使其成为许多应用程序的首选存储引擎。 Xtrabackup 是一个...

    percona-xtrabackup-80-8.0.11-1.el7.x86_64.rpm

     Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。  Xtrabackup有两个主要的工具:xtrabackup、innobackupex  1、...

    XtraBackup(MySQL备份) v1.6 for Win

    XtraBackup是一个用来备份 MySQL 的 InnoDB 数据库的开源工具。例如执行增量备份的命令是: # ./xtrabackup --backup --target-dir=/backup/delta --incremental-basedir=/backup/base

    xtrabackup 详细操作说明

    总结来说,Xtrabackup是一款强大的MySQL数据库备份工具,尤其适合处理InnoDB和XtraDB引擎的热备份,其在线备份、增量备份和远程备份等功能使得数据库管理更加高效和便捷。安装和使用过程中需要注意配置文件的设置,...

    11.5: percona软件介绍 、 innobackupex备份与恢复 、 总结和答疑.docx

    Percona软件介绍、InnoDB备份与恢复、备份与恢复实践 Percona是一个开源的MySQL高性能替代方案,提供了许多高级特性,包括性能优化、备份和恢复、高可用性等。在本节中,我们将对Percona软件进行介绍,并实践InnoDB...

Global site tag (gtag.js) - Google Analytics