xtrabackup(innobackupex)备份工具-介绍 安装工具

--安装percona backup备份工具

--安装依赖包

yum -y install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr bison libtool  zlib-devel libgcrypt-devel  libcurl-devel  crypt*  libgcrypt* python-sphinx openssl   imake libxml2-devel expat-devel   ncurses5-devel ncurses-devle   vim-common  libgpg-error-devel   libidn-devel perl-DBI  perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL

yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr bison libtool ncurses-devel zlib-devel 

--

rpm -ivh perl-DBI-1.609-4.el6.x86_64.rpm

rpm -ivh  perl-DBD-MySQL-4.013-3.el6.x86_64.rpm

rpm -ivh libev-devel-4.15-21.1.x86_64.rpm

rpm -ivh libev4-4.15-7.1.x86_64.rpm

--解压percona-xtrabackup(官网下载对应版本 以下是二进制安装 https://www.percona.com/downloads/XtraBackup/LATEST/

使用已有的tar.gz传送文件

tar -zvxf percona-xtrabackup-2.4.6-Linux-x86_64.tar.gz

[root@mysqldb bin]# cd percona-xtrabackup-2.4.6-Linux-x86_64

[root@mysqldb bin]# vi ~/.bash_profile

[root@mysqldb bin]# source ~/.bash_profile

--testing~

[root@mysqldb bin]# innobackupex --help

--创建备份用户

CREATE USER 'backup'@'%' IDENTIFIED BY 'rootroot';

GRANT RELOAD,LOCK TABLES,REPLICATION CLIENT,CREATE TABLESPACE,SUPER ON *.* TO 'backup'@'%';

--规划备份目录路径

注意是和系统表空间一致

innodb_data_home_dir=/mysql/data/3306/data/data1

3)其他: 不使用

cp/tar/scp/rsync 最适合停机复制和拷贝

mylvmbackup:lvm-snapshot  基于LVM快照备份 比较麻烦 早起使用 替换品mysqlbackup+xtrabackup

mysqlhotcopy:只针对MyISAM 不支持innodb 已经被废掉了 替换品mysqldump

2.1xtrabackup备份工具介绍  2.4.11,在之前备份会产生死锁 2.3.3之后不会死锁

1)支持官方Mysql、Percona、MariaDB

2)支持在线热备 不会影响正在执行的事务 对server不会带来性能问题

3)备份速度快 

4)支持压缩

5)支持加密

6)支持自动实现备份校验

7)恢复速度快

8)支持在线迁移表

9)支持创建一个slave从库

10)支持并行

11)支持全备 增量备份 部分备份

XtraBackup产品有两个工具:innobackupex,xtrbackup

1)xtrbackup(new):主要备份innodb xtraDB两种表

2)innobackupex封装了xtrabackup 同时可以备份MyISAM数据表

目前2.4 innobackupex功能全部集成到xtrabackup里面  innobackupex作为xtrabackup的一个软连接

xtrabackup支持非innodb表 在下一个版本中 官方消息中说要把innobackupex从产品中移除。

缺点:

1.不支持脱产备份

2不支持直接备份到磁盘设备

3.不支持云备份

4.如果备份myisam 还存在阻塞

--xtrabackup相关参数介绍

1.innobackupex相关参数

1)备份相关参数

innobackupex [--compress] [--compress-threads=NUMBER-OF-THREADS]

[--compress-chunk-size=CHUNK-SIZE]

[--encrypt=ENCRYPTION-algorithm]

[--encrypt-threads=NUMBER-OF-THREADS] [--encrypt-chunk-size=CHUNK-SIZE]

[--encrypt-key=LITERAL-ENCRYPTION-key] |

[--encryption-key-file=MY.KEY]

[--include=regexp] [--user=name]

[--password=WORD] [--port=port] [--socket=socket]

[--no-timestamp] [--ibbackup=IBBACKUP-binary]

[--slave-info] [--galera-info] [--stream=tar|xbstream]

[--defaults-file=MY.CNF] [--defaults-group=group-name]

[--databases=list] [--no-lock]

[--tmpdir=directory] [--tables-file=file]

[--history=name]

[--incremental] [--incremental-basedir]

[--incremental-dir] [--incremental-force-scan]

[--incremental-lsn]

[--incremental-history-name=name]

[--incremental-history-uuid=uuid]

[--close-files] [--compact]

backup-ROOT-DIR

2)准备阶段的参数

innobackupex --apply-log [--use-memory=B]

[--defaults-file=MY.CNF]

[--export] [--redo-only] [--ibbackup=IBBACKUP-binary]

backup-DIR

innobackupex --copy-back [--defaults-file=MY.CNF]

[--defaults-group=group-name] backup-DIR

innobackupex --move-back [--defaults-file=MY.CNF]

[--defaults-group=group-name] backup-DIR

4)解压解密方面的参数

innobackupex [--decompress] [--decrypt=ENCRYPTION-algorithm]

[--encrypt-key=LITERAL-ENCRYPTION-key] |

[--encryption-key-file=MY.KEY]

[--parallel=NUMBER-OF-FORKS] backup-DIR

-- 2.3.2 xtrabackup 相关参数介绍

xtrabackup --help

-- 2.4.XtraBackup 备份恢复的流程与原理

xtrabackup支持innodb表 实际工作中用innobackupex 这个命令下个版本就被废掉了

innobackupex脚本是用来备份非InnoDB的

xtrabackup脚本备份innodb表

早期是xtrabackup工具由perl和c同时写的两个进程 导致两个之间通信不好 在2011年重写 innobackupex功能全部集成到xtrabackup

如果用innobackupex来备份 有innodb表 会自动调用xtrabackup脚本来备份

备份开始会开启一个后台检测进程 实时检测mysql redo的变化 一旦发现redo中有新日志写入 like将日志记入后台日志文件 xtrabackup_log中 之后复制InnoDB的数据文件和系统表空间文件ibdata1,待复制结束后 执行flush tables with read lock;

复制frm MYI MYD等文件 最后会发出unlock tables ,把表设置为可读写状态 最终停止xtrabackup_log.

备份的工作原理      

-- 2.4.1 xtrabackup 完全备份的流程(先实现一致性 再回滚数据)

1.start xtrabackup_log:

innobackupex 开启xtrabackup_log 监控线程,实时监测redo log 文件的变化,将新备份过程中新写入到事务日志中的日志(监控为了保证数据的一致性)

拷贝到innobackup_log(xtrabackup_log)文件中;同时开启xtrabackup 拷贝线程,开始拷贝innodb 文件。

2.copy .ibd,ibdata1/2/3:

开始拷贝innodb 文件

3.在复制innodb 文件结束后,进行flush tables with read lock;

4.拷贝非innodb 文件,copy .frm; myd; myi,misc files 等非innodb 类型的文件。

5.记录当前的binlog log position

6.表解锁:unlock tables;

7.停止xtrabackup_log 监控线程。

2.全备恢复

-- 2.4.2 xtrabackup 完全恢复的流程

-- oracle:先restore 还原文件,再recover 数据一致性。

-- mysql:先prepare(recover)数据一致性,再copy(restore)还原文件。(日志监测同步一致性)

1.对全备份文件进行xtrabackup_log 日志回放,并对提交的事务进行重做(apply redo log recored),同时回滚未提交的事务(undo space)。

这个过程叫prepare 阶段(类似于Oracle 的recover 过程),xtrabackup 会执行crash恢复。

-- 在prepare 过程中,恢复备份集的日志,会启动一个mysqld 的服务进程,来做恢复实现一致性。

-- 这个过程只针对innodb 表,非innodb(myisam)数据不是恢复的。所以建议大家以后不要再用myisam

2)将全备文件复制到mysql 下的data 目录中。(所有的)

-- 2.4.3 xtrabackup 增量备份的流程(用得少)

增量备份过程主要是通过拷贝InnoDB中有变更的页(LSN) 增量备份是基于全备的 第一次增备的数据必须要基于上一次的全备 之后每次增倍都是基于上一次增倍 最终达到一致性的增备。

1.start xtrabackup_log:

innobackupex 开启xtrabackup_log 监控线程,实时监测redo log 文件的变化,将新备份过程中新写入到事务日志中的日志

拷贝到innobackup_log(xtrabackup_log)文件中;同时开启xtrabackup 拷贝线程,开始拷贝innodb 文件。

2.开始拷贝自上次innodb 备份后变化的数据页,条件是:当前的lsn > 上次全备/增量

xtrabackup_checkpoints 中的lsn

3.copy .ibd,ibdata1/2/3:

开始拷贝innodb 文件

4.在复制innodb 文件结束后,进行flush tables with read lock;

5.拷贝非innodb 文件,copy .frm; myd; myi,misc files 等非innodb 类型的文件。

6.记录当前的binlog log position

7.表解锁:unlock tables;

8.停止xtrabackup_log 监控线程。

-- 2.4.4 xtrabackup 增量恢复的流程

1.恢复全备(prepare)

2.恢复增量,对未提交的事务进行回滚

3.对全备与增量备份合并后的文件进行apply_log

4.将备份文件拷贝到mysql data 目录下。

猜你喜欢

转载自blog.csdn.net/ichglauben/article/details/81302695