Percona XtraBackup 安装及使用说明

2,109 total views, 3 views today

一、安装 Xtrabackup

下载地址
https://www.percona.com/software/mysql-database/percona-xtrabackup

建议使用二进制包,简单方便
解压安装

添加到/etc/profile

二、创建备份专用账号

备份专用账号所需权限的用途:
● RELOAD and LOCK TABLES (unless the –no-lock option is specified) in order to FLUSH TABLES WITH
READ LOCK and FLUSH ENGINE LOGS prior to start copying the files, and LOCK TABLES FOR BACKUP
and LOCK BINLOG FOR BACKUP require this privilege when Backup Locks are used,
● REPLICATION CLIENT in order to obtain the binary log position,        // 为了获得二进制日志的position
● CREATE TABLESPACE in order to import tables (see Restoring Individual Tables),    // 为了导入表数据
● PROCESS  in order to see all threads which are running on the server (see Improved FLUSH TABLES WITH
READ LOCK handling),
● SUPER in order to start/stop the slave threads in a replication environment, use XtraDB Changed Page Tracking
for Incremental Backups and for Improved FLUSH TABLES WITH READ LOCK handling,        // 增量备份使用
● CREATE privilege in order to create the PERCONA_SCHEMA.xtrabackup_history database and table,         //用于创建PERCONA_SCHEMA.xtrabackup_history
● INSERT privilege in order to add history records to the PERCONA_SCHEMA.xtrabackup_history table,    //插入PERCONA_SCHEMA.xtrabackup_history
● SELECT privilege in order to use innobackupex –incremental-history-name or
innobackupex –incremental-history-uuid in order for the feature to look up the
innodb_to_lsn values in the PERCONA_SCHEMA.xtrabackup_history table.

备份专用账号所需的最小权限

三、备份
1、全备

查看备份日志最后部分,确定备份成功

innobackupex 调用 xtrabackup 备份所有InnoDB表的数据,拷贝数据库中所有表的定义,MyISAM、MERGE、CSV、ARCHIVE等引擎的数据和文件。
还包含触发器、数据库配置信息,这些文件都保存在以时间戳命名的目录中。

参数说明:

备份目录下xtrabackup_checkpoints文件记录了备份信息:

**应用日志,使备份数据恢复一致性**
全备之后,备份不能直接拿去恢复。备份的数据中包含未提交和已经提交但是没有同步到的数据文件中的事务,数据文件处于与不一致状态。percona在backup和restore之间,加入了perpare阶段,使数据文件最终一致。

参数说明:

备份目录下的xtrabackup_checkpoints文件记录了备份信息

2、增量备份
InnoDB增量备份基于LSN(log sequence number),每个InnoDB的page(一般16kb)都包含LSN,数据库每次修改LSN都会增加。
增量备份只备份比指定LSN号大的InnoDB pages。

(1)增量备份可以根据–incremental-basedir或者–incremental-lsn参数获取LSN,然后去备份大于该LSN的InnoDB pages。

第1种:–incremental-basedir,根据BASE-DIR中的xtrabackup_checkpoints文件,进行增量备份
增加备份基于全量备份,所以先进行全量备份。但是全量备份后,无需–apply-log进行一致性修复。
# 全量备份

此时,备份的lsn信息

再进行增量备份,增量备份读取全量备份目录下的xtrabackup_checkpoints文件,确定增量备份开始的LSN号。上面全备份的结束LSN为 178239401 。

增量备份信息

如果在 全量备份+增量备份的基础上,再次增量备份怎么做?
基于第一次的增量备份lsn,做第二次增量备份。
incremental-basedir指向第一次的增量备份即可,这样就能读取到第一次增量的结束LSN号。

第2种:–incremental-lsn指定SCN号,增量备份

(2)perpare 备份(Preparing an Incremental Backup with innobackupex)应用日志,使备份数据保持一致性
增加备份的perpare与全量备份有所不同:
● 在每个备份文件中重放提交事务,实现全量备份与增量备份合并(除了最后一个增量都需要添加–redo-only,只重放,不会回滚)。
● 然后再回滚未提交的事务(最后一个增量备份,不用添加–redo-only,既重放又回滚)。
● 而在全量备份中,perpare既前滚又回滚。

格式:
–全量备份perpare,只重放不回滚

–非末尾增量备份perpare,只重放不回滚

–末尾增量备份perpare,既重放又回滚

— 收尾

**1个全量备份,2个增量备份的perpare过程
首先,perpare全量备份,只重放事务,不回滚事务。

然后,perpare 第一个增量备份,需要添加–redo-only参数只重放,不回滚

perpare 第二个增量备份,无需添加–redo-only参数,既重放事务,又回滚事务,使备份保持数据一致性。

# 收尾,回滚未提交的事务。

四、恢复

1、全备恢复
恢复前关闭MySQL服务!
将原datadir目录备份拷贝到其他目录,清空datadir目录。
然用innobackupex 命令将innobackupex备份恢复到datadir目录。

注意:
<1> 命令中,必须指定 –defaults-file 参数确定my.cnf文件位置,方便恢复时找到原datadir路径,然后将备份恢复到该路径
<2> 恢复前,必须将原datadir目录清空,否则恢复不成功报 innobackupex: Error: Original data directory ‘/data/mysqldata/3306/data’ is not empty!
datadir不为空,可以加上–force-non-empty-directories参数强制恢复,但是不建议这种做法!
<3> –copy-back参数,表示将备份拷贝到MySQL的datadir目录。
<4> 恢复成功的标示:innobackupex: Finished copying back files.
160926 14:53:42  innobackupex: completed OK!
<5>    恢复前,请关闭MySQL服务。

2、增量备份恢复
先perpare,然后和全量备份一样恢复即可。

 

发表评论

必填项已用*标注