Linux-xtrabackup工具-总结(Linux xtrabackup tool – Summary)

工具介绍

Percona 公司

官网:www.percona.com

  • percona-server
  • InnoDB –> XtraDB

Xtrabackup备份工具

percona提供的mysql数据库备份工具,惟一开源的能够对innodb和xtradb数据库进行热备的工具

手册:https://www.percona.com/doc/percona-xtrabackup/LATEST/index.html

下载:  https://www.percona.com/downloads/

xtrabackup 特点:

  • 备份还原过程快速、可靠
  • 备份过程不会打断正在执行的事务
  • 能够基于压缩等功能节约磁盘空间和流量
  • 自动实现备份检验
  • 开源,免费

xtrabackup工具文件组成

  • Xtrabackup2.2       版之前包括4个可执行文件
  • innobackupex: Perl     脚本
  • xtrabackup: C/C++, 编译的二进制程序
  • xbcrypt:                      加解密
  • xbstream:                  支持并发写的流文件格式

说明:xtrabackup 是用来备份 InnoDB 表的,不能备份非 InnoDB 表,和 MySQL Server 没有交互innobackupex 脚本用来备份非 InnoDB 表,同时会调用 xtrabackup 命令来备份 InnoDB 表,还会和 MySQL Server 发送命令进行交互,如加全局读锁(FTWRL)、获取位点(SHOW SLAVE STATUS) 等。即innobackupex是在 xtrabackup 之上做了一层封装实现的

  • xtrabackup的新版变化

xtrabackup版本升级到2.4后,相比之前的2.1有了比较大的变化:innobackupex 功能全部集成到 xtrabackup 里面,只有一个 binary程序,另外为了兼容考虑,innobackupex作为 xtrabackup 的软链 接,即xtrabackup现在支持非Innodb表备份,并且 Innobackupex 在下一版本中移除,建议通过 xtrabackup替换innobackupex

  • 备份生成的相关文件

使用innobackupex备份时,其会调用xtrabackup备份所有的InnoDB表,复制所有关于表结构定义的相 关文件(.frm)、以及MyISAM、MERGE、CSV和ARCHIVE表的相关文件,同时还会备份触发器和数据库配 置信息相关的文件。这些文件会被保存至一个以时间命名的目录中,在备份时,innobackupex还会在备 份目录中创建如下文件:

  • xtrabackup_info:文本文件,innobackupex工具执行时的相关信息,包括版本,备份选项,备份 时长,备份LSN(log sequence number日志序列号),BINLOG的位置
    xtrabackup_checkpoints:文本文件,备份类型(如完全或增量)、备份状态(如是否已经为 prepared状态)和LSN范围信息,每个InnoDB页(通常为16k大小)都会包含一个日志序列号LSN。 LSN是整个数据库系统的系统版本号,每个页面相关的LSN能够表明此页面最近是如何发生改变的
    xtrabackup_binlog_info:文本文件,MySQL服务器当前正在使用的二进制日志文件及至备份这一 刻为止二进制日志事件的位置,可利用实现基于binlog的恢复
    backup-my.cnf:文本文件,备份命令用到的配置选项信息
    xtrabackup_logfile:备份生成的二进制日志文件

  • xtrabackup_info:文本文件,innobackupex工具执行时的相关信息,包括版本,备份选项,备份 时长,备份LSN(log sequence number日志序列号),BINLOG的位置
  • xtrabackup_checkpoints:文本文件,备份类型(如完全或增量)、备份状态(如是否已经为 prepared状态)和LSN范围信息,每个InnoDB页(通常为16k大小)都会包含一个日志序列号LSN。 LSN是整个数据库系统的系统版本号,每个页面相关的LSN能够表明此页面最近是如何发生改变的
  • xtrabackup_binlog_info:文本文件,MySQL服务器当前正在使用的二进制日志文件及至备份这一 刻为止二进制日志事件的位置,可利用实现基于binlog的恢复
  • backup-my.cnf:文本文件,备份命令用到的配置选项信息
  • xtrabackup_logfile:备份生成的二进制日志文件

xtrabackup 安装

在EPEL源中

yum install percona-xtrabackup

最新版本下载安装:

https://www.percona.com/downloads/Percona-XtraBackup-LATEST/

xtrabackup 用法

xtrabackup工具备份和还原,需要三步实现

  • 备份:对数据库做完全或增量备份
  • 预准备: 还原前,先对备份的数据,整理至一个临时目录
  • 还原:将整理好的数据,复制回数据库目录中

xtrabackup 选项参考:

https://docs.percona.com/percona-xtrabackup/latest/genindex.html

语法

innobackupex [option] BACKUP-ROOT-DIR

选项

--user:#该选项表示备份账号
--password:#该选项表示备份的密码
--host:#该选项表示备份数据库的地址
--databases:#该选项接受的参数为数据库名,如果要指定多个数据库,彼此间需要以空格隔开;
如:"xtra_test dba_test",同时,在指定某数据库时,也可以只指定其中的某张表。
如:"mydatabase.mytable"。该选项对innodb引擎表无效,还是会备份所有innodb表
--defaults-file:#该选项指定从哪个文件读取MySQL配置,必须放在命令行第一个选项位置
--incremental:#该选项表示创建一个增量备份,需要指定--incremental-basedir
--incremental-basedir:#该选项指定为前一次全备份或增量备份的目录,与--incremental同时使用
--incremental-dir:#该选项表示还原时增量备份的目录
--include=name:#指定表名,格式:databasename.tablename

Prepare预准备:

innobackupex --apply-log [option] BACKUP-DIR

选项说明:

--apply-log:#一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚
未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处理不一致状态。此选项作
用是通过回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态
--use-memory:#和--apply-log选项一起使用,当prepare 备份时,做crash recovery分配的内存大
小,单位字节,也可1MB,1M,1G,1GB等,推荐1G
--export:#表示开启可导出单独的表之后再导入其他Mysql中
--redo-only:#此选项在prepare base full backup,往其中合并增量备份时候使用,但不包括对最后
一个增量备份的合并

还原:

innobackupex --copy-back [选项] BACKUP-DIR
innobackupex --move-back [选项] [--defaults-group=GROUP-NAME] BACKUP-DIR

选项说明:

--copy-back:#做数据恢复时将备份数据文件拷贝到MySQL服务器的datadir
--move-back:#这个选项与--copy-back相似,唯一的区别是它不拷贝文件,而是移动文件到目的地。这
个选项移除backup文件,用时候必须小心。使用场景:没有足够的磁盘空间同事保留数据文件和Backup副本
--force-non-empty-directories #指定该参数时候,使得innobackupex --copy-back或--moveback选项转移文件到非空目录,已存在的文件不会被覆盖。如果--copy-back和--move-back文件需要从备
份目录拷贝一个在datadir已经存在的文件,会报错失败

还原注意事项:

  • datadir 目录必须为空。除非指定innobackupex –force-non-empty-directorires选项指定,否则– copy-back选项不会覆盖
  • 在restore之前,必须shutdown MySQL实例,不能将一个运行中的实例restore到datadir目录中
  • 由于文件属性会被保留,大部分情况下需要在启动实例之前将文件的属主改为mysql,这些文件将 属于创建备份的用户, 执行chown -R mysql:mysql /data/mysql,以上需要在用户调用 innobackupex之前完成
————————

Tool introduction

Percona 公司

官网:www.percona.com

  • percona-server
  • InnoDB –> XtraDB

Xtrabackup backup tool

The MySQL database backup tool provided by percona is the only open-source tool that can hot standby InnoDB and xtradb databases

手册:https://www.percona.com/doc/percona-xtrabackup/LATEST/index.html

下载:  https://www.percona.com/downloads/

xtrabackup 特点:

  • The backup and restore process is fast and reliable
  • The backup process does not interrupt ongoing transactions
  • It can save disk space and traffic based on compression and other functions
  • Automatic backup verification
  • Open source, free

Xtrabackup tool file composition

  • Xtrabackup2. Before version 2, there were 4 executable files
  • innobackupex: Perl     脚本
  • Xtrabackup: C / C + +, compiled binary program
  • xbcrypt:                      加解密
  • Xbstream: stream file format supporting concurrent writing

Note: xtrabackup is used to back up InnoDB tables and cannot back up non InnoDB tables. There is no interaction with MySQL server. Innobackupex script is used to back up non InnoDB tables. At the same time, xtrabackup command will be called to back up InnoDB tables. It will also interact with MySQL server sending commands, such as adding global read lock (ftwrl), show slave status, etc. That is, innobackup ex is implemented by a layer of encapsulation on top of xtrabackup

  • xtrabackup的新版变化

After the xtrabackup version is upgraded to 2.4, there is a big change compared with the previous 2.1: innobackupex functions are all integrated into xtrabackup, and there is only one binary program. In addition, for compatibility, innobackupex is used as the soft link of xtrabackup, that is, xtrabackup now supports non InnoDB table backup, and innobackupex is removed in the next version. It is recommended to replace innobackupex through xtrabackup

  • Backup generated related files

When using innobackupex backup, it will call xtrabackup to back up all InnoDB tables, copy all relevant files (. FRM) about table structure definition, MyISAM, merge, CSV and archive tables, and back up files related to triggers and database configuration information. These files will be saved to a directory named by time. During backup, innobackupex will also create the following files in the backup directory:

  • xtrabackup_ Info: text file, information related to the execution of innobackupex tool, including version, backup options, backup duration, backup LSN (log sequence number), and binlog location
    xtrabackup_ Checkpoints: text file, backup type (such as full or incremental), backup status (such as whether it has been prepared) and LSN range information. Each InnoDB page (usually 16K in size) will contain a log serial number LSN. LSN is the system version number of the whole database system. The LSN related to each page can indicate how this page has changed recently
    xtrabackup_ binlog_ Info: text file, the binary log file currently used by MySQL server and the location of binary log events up to the moment of backup, which can be used to realize binlog based recovery
    backup-my. CNF: text file, the configuration option information used in the backup command
    xtrabackup_ Logfile: backup the generated binary log file
  • xtrabackup_info:文本文件,innobackupex工具执行时的相关信息,包括版本,备份选项,备份 时长,备份LSN(log sequence number日志序列号),BINLOG的位置
  • xtrabackup_ Checkpoints: text file, backup type (such as full or incremental), backup status (such as whether it has been prepared) and LSN range information. Each InnoDB page (usually 16K in size) will contain a log serial number LSN. LSN is the system version number of the whole database system. The LSN related to each page can indicate how this page has changed recently
  • xtrabackup_ binlog_ Info: text file, the binary log file currently used by MySQL server and the location of binary log events up to the moment of backup, which can be used to realize binlog based recovery
  • backup-my. CNF: text file, the configuration option information used in the backup command
  • xtrabackup_logfile:备份生成的二进制日志文件

xtrabackup 安装

In EPEL source

yum install percona-xtrabackup

Download and install the latest version:

https://www.percona.com/downloads/Percona-XtraBackup-LATEST/

xtrabackup 用法

Xtrabackup tool needs three steps to backup and restore

  • Backup: make a full or incremental backup of the database
  • Pre preparation: sort the backup data into a temporary directory before restoring
  • Restore: copy the sorted data back to the database directory

Xtrabackup option reference:

https://docs.percona.com/percona-xtrabackup/latest/genindex.html

grammar

innobackupex [option] BACKUP-ROOT-DIR

option

--user:#该选项表示备份账号
--password:#该选项表示备份的密码
--host:#该选项表示备份数据库的地址
--databases:#该选项接受的参数为数据库名,如果要指定多个数据库,彼此间需要以空格隔开;
如:"xtra_test dba_test",同时,在指定某数据库时,也可以只指定其中的某张表。
如:"mydatabase.mytable"。该选项对innodb引擎表无效,还是会备份所有innodb表
--defaults-file:#该选项指定从哪个文件读取MySQL配置,必须放在命令行第一个选项位置
--incremental:#该选项表示创建一个增量备份,需要指定--incremental-basedir
--incremental-basedir:#该选项指定为前一次全备份或增量备份的目录,与--incremental同时使用
--incremental-dir:#该选项表示还原时增量备份的目录
--include=name:#指定表名,格式:databasename.tablename

Prepare preparation:

innobackupex --apply-log [option] BACKUP-DIR

Option Description:

--apply-log:#一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚
未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处理不一致状态。此选项作
用是通过回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态
--use-memory:#和--apply-log选项一起使用,当prepare 备份时,做crash recovery分配的内存大
小,单位字节,也可1MB,1M,1G,1GB等,推荐1G
--export:#表示开启可导出单独的表之后再导入其他Mysql中
--redo-only:#此选项在prepare base full backup,往其中合并增量备份时候使用,但不包括对最后
一个增量备份的合并

Restore:

innobackupex --copy-back [选项] BACKUP-DIR
innobackupex --move-back [选项] [--defaults-group=GROUP-NAME] BACKUP-DIR

Option Description:

--copy-back:#做数据恢复时将备份数据文件拷贝到MySQL服务器的datadir
--move-back:#这个选项与--copy-back相似,唯一的区别是它不拷贝文件,而是移动文件到目的地。这
个选项移除backup文件,用时候必须小心。使用场景:没有足够的磁盘空间同事保留数据文件和Backup副本
--force-non-empty-directories #指定该参数时候,使得innobackupex --copy-back或--moveback选项转移文件到非空目录,已存在的文件不会被覆盖。如果--copy-back和--move-back文件需要从备
份目录拷贝一个在datadir已经存在的文件,会报错失败

Restore considerations:

  • datadir 目录必须为空。除非指定innobackupex –force-non-empty-directorires选项指定,否则– copy-back选项不会覆盖
  • 在restore之前,必须shutdown MySQL实例,不能将一个运行中的实例restore到datadir目录中
  • Since the file attributes will be retained, in most cases, the owner of the file needs to be changed to MySQL before starting the instance. These files will belong to the user who created the backup. Execute chown – R MySQL: MySQL / data / MySQL. The above needs to be completed before the user calls innobackupex