Xtrabackup

一、安装

接纳Xtrabackup举行mysql数据库的备份

采用Xtrabackup来达成数据库的备份

Xtrabackup是有percona公司付出的一款开源备份工具,它与ibbackup这些备份工具不一样的是。ibbackup是二个收款的备份工具,而且在其备份质量上,ibbackup不如Xtrabackup。ibbackup和Xtrabackup都对Innodb存款和储蓄引擎帮忙在线物理完全备份和在线物理增量备份,对MyISAM存款和储蓄引擎来说,只支持温备份而已。

运用Xtrabackup备份mysql数据库步骤如下:

一、安装

1、简介

Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,那也是世界上惟一一款开源的能够对innodb和xtradb存款和储蓄引擎的数据库进行热备的工具。xtradb是Innodb的增强版,在其个性上比Innodb要好,特点如下:

(1)备份进度急忙、可信赖;

(2)备份过程不会堵塞正在实践的事务;

(3)能够基于压缩等功能节约磁盘空间和流量;

(4)自动达成备份检验;

(5)还原速度快;

2、安装

其最新版的软件可从   获得。本文基于锐界HEL5.8的系统,因而,直接下载相应版本的rpm包安装即可,那里不再演示其进度。

安装完毕之后,会生成3个/usr/bin/innobackupex脚本文件,那个剧本文件封装了xtrabackup,能同时处理Innodb和Myisam,但在拍卖Myisam时索要加3个读锁。

3、innobackupex简介

innobackupex

innobackupex有更强的功效,它构成了xtrabackup和其他的一些作用,他不仅仅能够全量备份/苏醒,还足以依据时间的增量备份与还原。

innobackupex备份原理

innobackupex首先调用xtrabackup来备份innodb数据文件,当xtrabackup达成后,innobackupex就翻开文件xtrabackup_suspended
;然后实施“FLUSH TABLES WITH READ LOCK”来备份别的的文本

innobackupex恢复生机原理

innobackupex首先读取my.cnf,查看变量(datadir,innodb_data_home_dir,innodb_data_file_path,innodb_log_group_home_dir)对应的目录是存在,明确相关目录存在后,然后先copy
myisam表和目录,然后在copy innodb的表、索引和日志

② 、备份的完毕

壹 、完全备份

# innobackupex –user=DBUSER –password=DBUSERPASS 
/path/to/BACKUP-DIR/

一经要动用三个细小权限的用户展开备份,则可依据如下命令创立此类用户:

mysql> CREATE USER  ’bkpuser’@’localhost’ IDENTIFIED BY ’s3cret’;

mysql> REVOKE ALL P途乐IVILEGES, GRANT OPTION FROM
’bkpuser’;(借使出错,则足以不添加)

mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.*
TO ’bkpuser’@’localhost’ ;

mysql> FLUSH PRIVILEGES;

使用innobakupex备份时,其会调用xtrabackup备份全部的InnoDB表,复制全数有关表结构定义的连带文件(.frm)、以及MyISAM、ME安德拉GE、CSV和A智跑C血崩E表的相关文书,同时还会备份触发器和数据库配置新闻相关的文件。这个文件会被保存至三个以时日命名的目录中

在备份的同时,innobackupex还会在备份目录中开创如下文件:(1)xtrabackup_checkpoints
——
备份类型(如完全或增量)、备份状态(如是或不是已经为prepared状态)和LSN(日志连串号)范围消息;

各种InnoDB页(平常为16k尺寸)都会蕴藏2个日志系列号,即LSN。LSN是全体数据库系统的系统版本号,每一种页面相关的LSN能够注脚此页面近期是何许发生转移的。

(2)xtrabackup_binlog_info ——
mysql服务器当前正在使用的二进制日志文件及至备份这一刻完毕二进制日志事件的岗位。

(3)xtrabackup_binlog_pos_innodb ——
二进制日志文件及用于InnoDB或XtraDB表的二进制日志文件的眼下position。

(4)xtrabackup_binary —— 备份中用到的xtrabackup的可执行文件;

(5)backup-my.cnf —— 备份命令用到的布局选项音信;

在使用innobackupex举办备份时,还足以应用–no-timestamp选项来堵住命令自动创设三个以时间命名的目录;如此一来,innobackupex命令将会成立三个BACKUP-DI奥德赛目录来囤积备份数据。

贰 、准备(prepare)贰个截然备份

相似处境下,在备份实现后,数据尚且不可能用来复苏操作,因为备份的数量中恐怕会包罗尚未提交的作业或曾经交付但从分化步至数据文件中的事务。因而,此时数据文件仍处理不雷同状态。“准备”的要害职能正是通过回滚未提交的事情及一块已经交由的事体至数据文件也使得数据文件处于一致性状态。

innobakupex命令的–apply-log选项可用于达成上述功用。如上面包车型地铁授命:#
innobackupex –apply-log  /path/to/BACKUP-DIR

只要执行科学,其最终输出的几行消息一般如下:

xtrabackup: starting shutdown with innodb_fast_shutdown = 1

InnoDB: FTS optimize thread exiting.

InnoDB: Starting shutdown…

InnoDB: Shutdown completed; log sequence number 1640470

020124 06:22:05  innobackupex: completed OK!

在贯彻“准备”的历程中,innobackupex经常还是能够利用–use-memory选项来钦定其得以选用的内部存储器的轻重,暗许日常为100M。假如有丰裕的内存可用,能够多分割一些内部存款和储蓄器给prepare的经过,以拉长其形成速度。

三 、从一个截然备份中回复数据,苏醒数据时,mysql服务器能够不在线(离线苏醒数据)

innobackupex命令的–copy-back选项用于实施恢复生机操作,其通过复制全部数据有关的文书至mysql服务器DATADI安德拉目录中来进行恢复生机进度。innobackupex通过backup-my.cnf来获得DATADILacrosse目录的相干信息。

# innobackupex –copy-back  /path/to/BACKUP-DIR

假使实施科学,其出口音信的末段几行常常如下:

innobackupex: Starting to copy InnoDB log files

innobackupex: in ‘/tmp/backup/2002-01-24_06-09-50’

innobackupex: back to original InnoDB log directory ‘/mydata/data’

innobackupex: Copying ‘/tmp/backup/2002-01-24_06-09-50/ib_logfile0’ to
‘/mydata/data/ib_logfile0’

innobackupex: Copying ‘/tmp/backup/2002-01-24_06-09-50/ib_logfile1’ to
‘/mydata/data/ib_logfile1’

innobackupex: Finished copying back files.

020124 06:29:22  innobackupex: completed OK!

请确定保障如上音讯的最行一行现身“innobackupex: completed OK!”。

当数据恢复生机至DATADI大切诺基目录以往,还必要确定保证全数数据文件的属主和属组均为不易的用户,如mysql,不然,在启动mysqld从前还须要事先修改数据文件的属主和属组。如:

# chown -R  mysql:mysql  /mydata/data/

假定不修改数据目录及其该目录下具有文件的属主和属组,那么将会造成mysqld运转不了。会冒出如下错误提醒音讯:

Starting MySQL…The server quit without updating PID file
[FAILED]/data/localhost.pid).

④ 、使用innobackupex实行增量备份

每种InnoDB的页面都会蕴藏三个LSN信息,每当相关的数额爆发改变,相关的页面包车型地铁LSN就会活动拉长。那正是InnoDB表能够展开增量备份的基本功,即innobackupex通过备份上次通通备份之后发出转移的页面来促成。

要促成率先次增量备份,能够行使上边包车型客车命令进行:

# innobackupex –incremental /backup –incremental-basedir=BASEDIR

其中,BASEDI瑞虎指的是全然备份所在的目录,此命令执行完结后,innobackupex命令会在/backup目录中成立八个新的以时日命名的目录以存放全部的增量备份数据。其余,在执行过增量备份之后再一遍实行增量备份时,其–incremental-basedir应该针对上三遍的增量备份所在的目录。

急需小心的是,增量备份仅能动用于InnoDB或XtraDB表,对于MyISAM表而言,执行增量备份时其实实行的是完全备份。

“准备”(prepare)增量备份与“准备“完全备份有着一些见仁见智,尤其要注意的是:

(1)要求在每一种备份(包涵完全和种种增量备份)上,将已经提交的事情进行“重播”。“重播”之后,全数的备份数据将联合到完全备份上。

(2)基于全部的备份将未提交的事情举办“回滚”。

于是乎,操作就改成了:# innobackupex –apply-log –redo-only BASE-DIR

随着执行:# innobackupex –apply-log –redo-only BASE-DIR
–incremental-dir=INCREMENTAL-DIR-1

日后是第二个增量:# innobackupex –apply-log –redo-only BASE-DIR
–incremental-dir=INCREMENTAL-DIR-2

个中BASE-DICR-V指的是一心备份所在的目录,而INCREMENTAL-DI凯雷德-1指的是率先次增量备份的目录,INCREMENTAL-DI揽胜极光-2指的是第贰回增量备份的目录,别的依次类推,即要是有频仍增量备份,每3次都要实践如上操作;

最后,全体(完全备份和增量备份)复苏进程进行如下命令:

# innobackupex –copy-back  /path/to/BACKUP-DIR

/path/to/BACKUP-DIOdyssey为完全备份所在目录

⑤ 、Xtrabackup的“流”及“备份压缩”作用

Xtrabackup对备份的数据文件帮忙“流”功能,即能够将备份的数码经过STDOUT传输给tar程序举行归档,而不是默许的第②手保存至某备份目录中。要使用此意义,仅须求利用–stream选项即可。如:

# innobackupex –stream=tar  /backup | gzip > /backup/`date
+%F_%H-%M-%S`.tar.gz

照旧也足以采取类似如下命令将数据备份至别的服务器:

# innobackupex –stream=tar  /backup |
ssh  [email protected] “cat
–  > /backups/`date +%F_%H-%M-%S`.tar”

其它,在实施本地备份时,还足以应用–parallel选项对八个文件实行并行复制。此选项用于钦点在复制时运转的线程数目。当然,在实际上海展览中心开备份时要采纳此功用的便利性,也要求启用innodb_file_per_table选项或共享的表空间通过innodb_动用Xtrabackup举行mysql数据库的备份,Xtrabackup数据库备份工具。data_file_path选项存款和储蓄在多个ibdata文件中。对某一数据库的两个公文的复制不能够利用到此效率。其简单利用办法如下:#
innobackupex –parallel  /path/to/backup

同时,innobackupex备份的数据文件也足以储存至远程主机,那能够运用–remote-host选项来落到实处:

#
innobackupex  [email protected]/path/IN/REMOTE/HOST/to/backup

六 、导入或导出单张表

暗中同意景况下,InnoDB表不能够透过直接复制表文件的方法在mysql服务器之间进行移植,固然使用了innodb_file_per_table选项。而采用Xtrabackup工具得以完毕此种功用,然则,此时需求“导出”表的mysql服务器启用了innodb_file_per_table选项(严谨来说,是要“导出”的表在其创造从前,mysql服务器就启用了innodb_file_per_table选项),并且“导入”表的服务器同时启用了innodb_file_per_table和innodb_expand_import选项。

(1)“导出”表

导出表是在备份的prepare阶段实行的,由此,一旦完全备份达成,就足以在prepare进程中通过–export选项将某表导出了:

# innobackupex –apply-log –export /path/to/backup

此命令会为每一个innodb表的表空间创立三个以.exp结尾的文本,这一个以.exp结尾的公文则能够用于导入至其余服务器。

(2)“导入”表

要在mysql服务器上导入来自于任何服务器的某innodb表,要求先在眼下服务器上创制2个跟原表表结构同样的表,而后才能促成将表导入:

mysql> CREATE TABLE mytable (…)  ENGINE=InnoDB;

接下来将此表的表空间删除:mysql> ALTE智跑 TABLE mydatabase.mytable 
DISCA中华VD TABLESPACE;

接下去,以往自于“导出”表的服务器的mytable表的mytable.ibd和mytable.exp文件复制到当前服务器的数据目录,然后利用如下命令将其“导入”:mysql>
ALTEPRADO TABLE mydatabase.mytable  IMPO宝马7系T TABLESPACE;

⑦ 、使用Xtrabackup对数据库举办一些备份

Xtrabackup也足以兑现部分备份,即只备份有些或一些钦赐的数据库或某数据库中的有个别或有些表。但要使用此功用,必须启用innodb_file_per_table选项,即每张表保存为1个独立的文书。同时,其也不帮忙–stream选项,即不帮衬将数据通过管道传输给其它程序开始展览处理。

此外,还原部分备份跟过来全部数额的备份也截然差异,即你不可能透过不难地将prepared的一些备份使用–copy-back选项直接复制回数据目录,而是要经过导入表的样子来落到实处苏醒。当然,有个别情形下,部分备份也得以间接通过–copy-back举办还原,但那种措施还原而来的数目多数会生出多少分歧的难题,因而,无论怎么样不引进应用那种方法。

(1)成立部分备份

创造部分备份的法子有二种:正则表明式(–include),
枚举表文件(–tables-file)和列出要备份的数据库(–databases)。

(a)使用–include

行使–include时,须要为其钦命要备份的表的欧洲经济共同体名称,即形如databasename.tablename,如:

# innobackupex –include=’^mageedu[.]tb1′  /path/to/backup

(b)使用–tables-file

此选项的参数需即便1个文本名,此文件中每行李包裹括1个要备份的表的完整名称;如:

# echo -e ‘mageedu.tb1\nmageedu.tb2’ > /tmp/tables.txt

# innobackupex –tables-file=/tmp/tables.txt  /path/to/backup

(c)使用–databases

此选项接受的参数为多少名,假设要钦定多个数据库,互相间要求以空格隔开分离;同时,在钦命某数据库时,也得以只钦定个中的某张表。别的,此选项也足以接受二个文件为参数,文件中每一作为三个要备份的指标。如:

# innobackupex –databases=”mageedu testdb”  /path/to/backup

(2)准备(preparing)部分备份

prepare部分备份的长河看似于导出表的长河,要利用–export选项进行:

# innobackupex –apply-log –export  /pat/to/partial/backup

此命令执行进程中,innobackupex会调用xtrabackup命令从数额字典中移除缺点和失误的表,因而,会来得出不少有关“表不设有”类的警告消息。同时,也会显得出为备份文件中设有的表创立.exp文件的相干音信。

(3)还原部分备份还原部分备份的长河跟导入表的长河一样。当然,也能够由此一直复制prepared状态的备份间接至数据目录中落实恢复生机,可是那时须要数据目录处于同一状态。

利用Xtrabackup来完结数据库的备份
Xtrabackup是有percona集团支出的一款开源备份工具,它与ibbackup这几个备份工…

前言

一般我们都以运用xtrabackup工具来备份数据库,它是二个专业的备份工具,先来不难介绍下它。

合法原理

 1、简介

Xtrabackup

percona提供的mysql数据库备份工具,惟一开源的能够对innodb和xtradb数据库,它的增量备份不是依照二进制日志文件来平复数据的,是基于mysql数据块。

特点:

  • 备份还原进度快速、可相信
  • 备份进度不会卡住正在执行的事务
  • 可见依据压缩等功用节约磁盘空间和流量
  • 活动达成备份检验
  • 开源,免费

在InnoDB内部会爱惜1个redo日志文件,大家也足以叫做事务日志文件。事务日志会储存每多个InnoDB表数据的记录修改。当InnoDB运转时,InnoDB会检查数据文件和业务日志,并推行七个步骤:它接纳(前滚)已经交给的工作日志到数据文件,并将修改过但并未付诸的数目举行回滚操作。

Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,那也是世界上惟一一款开源的能够对innodb和xtradb数据库实行热备的工具。特点:

Xtrabackup用法

Xtrabackup在运行时会记住log
sequencenumber(LSN),并且复制全体的数据文件。复制进度须要一些时间,所以那里面若是数据文件有转移,那么将会使数据库处于3个例外的时间点。那时,xtrabackup会运转1个后台进程,用于监视事务日志,并从业务日志复制最新的改动。Xtrabackup必须不停的做那么些操作,是因为工作日志是会轮转重复的写入,并且作业日志能够被选定。所以xtrabackup自运营上马,就不停的将事情日志中每一种数据文件的改动都记录下来。

(1)备份进度便捷、可靠;

备份时精选

xtrabackup –backup

–user:该选用表示备份账号

–password:该选拔表示备份的密码

–host:该采纳表示备份数据库的地点

–databases:该选拔接受的参数为数量名,倘若要钦命多少个数据库,相互间须要以空格隔开分离;如:”xtra_test
dba_test”,同时,在钦命某数据库时,也可以只钦命在那之中的某张表。如:”mydatabase.mytable”。该选项对innodb引擎表无效,照旧会备份全数innodb表

–defaults-file:该选取内定从哪些文件读取MySQL配置,必须放在命令行第三个选用地点

–incremental:该选用表示创设五个增量备份,须要内定–incremental-basedir

–incremental-basedir:该选用内定为前3次全备份或增量备份的目录,与–incremental同时选择

–incremental-dir:该选取表示复苏时增量备份的目录

–include=name:内定表名,格式:databasename.tablename

地方就是xtrabackup的备份进度。接下来是准备(prepare)进度。在这几个进度中,xtrabackup使用在此之前复制的业务日志,对种种数据文件执行灾殃复苏(就好像mysql刚运转时要做的等同)。当这么些进程甘休后,数据库就足以做复苏还原了。

(2)备份进度不会阻塞正在举办的事务;

Prepare于准备选项

prepare

–apply-log:此选项功能是经过回滚未提交的业务及一块已经提交的事务至数据文件使数据文件处于一致性状态

–use-memory:该选用表示和–apply-log选项一起使用,prepare
备份的时候,xtrabackup做crash
recovery分配的内部存款和储蓄器大小,单位字节。也可(1MB,1M,1G,1GB),推荐1G

–export:意味着开启可导出单身的表之后再导入其余Mysql中

–redo-only:此选项在prepare base full
backup,往中间merge增量备份时候使用

以上的历程在xtrabackup的编写翻译二进制造进度序中贯彻。程序innobackupex能够允许大家备份MyISAM表和frm文件从而扩张了便利和功力。Innobackupex会运维xtrabackup,直到xtrabackup复制数据文件后,然后实施FLUSH
TABLES WITH READ
LOCK来阻止新的写入进来并把MyISAM表数据刷到硬盘上,之后复制MyISAM数据文件,最后获释锁。

(3)能够依照压缩等成效节约磁盘空间和流量;

还原时选拔

–copy-back:复制

–move-back:移动

备份MyISAM和InnoDB表最后会处在同一,在准备(prepare)进程甘休后,InnoDB表数据现已前滚到一切备份截至的点,而不是回滚到xtrabackup刚开端时的点。那么些时辰点与实践FLUSH
TABLES WITH READ
LOCK的光阴点同样,所以myisam表数据与InnoDB表数据是手拉手的。类似oracle的,InnoDB的prepare进程能够称之为recover(复苏),myisam的数码复制进程能够称作restore(还原)。

(4)自动完结备份检验;

备份生产的相关文件

1)xtrabackup_info:innobackupex工具实施时的连锁新闻,包含版本,备份选项,备份时间长度,备份LSN,BINLOG的任务

2)xtrabackup_checkpoints:备份类型(如完全或增量)、备份状态(如是不是业已为prepared状态)和LSN(日志类别号)范围音信,每一种InnoDB页(日常为16k大大小小)都会包蕴三个日记体系号,即LSN。LSN是整套数据库系统的系统版本号,各类页面相关的LSN能够申明此页面方今是怎么产生改变的

3)xtrabackup_binlog_info:MySQL服务器当前正在利用的二进制日志文件及至备份这一刻扫尾二进制日志事件的职位,可选用完毕基于binlog的过来

4)backup-my.cnf:备份命令用到的配备选项消息

5)xtrabackup_logfile:备份生成的日志文件

Xtrabackup和innobackupex那两个工具都提供了诸多前文没有涉嫌的功力特色。手册上有对一一职能都有详细的牵线。简单介绍下,这一个工具提供了如流(streaming)备份,增量(incremental)备份等,通过复制数据文件,复制日志文件和提交日志到数据文件(前滚)达成了各个复合备份形式。

(5)还原速度快;

回复注意事项

1.datadir目录必须为空。除非钦点innobackupex
–force-non-emptydirectorires选项钦命,不然–copy-backup选项不会覆盖

2.restore回复以前,必须shutdown截止MySQL服务,不可能将多个运营中的实例restore到datadir目录中

3.改动回复文件的权杖为mysql

4.结尾二次增量备份还原要回滚事务

5.二进制安装的mysql假若出新甘休不了服务就用killall –9 mysqld
杀掉进度进而完毕截止服务

Xtrabackup有八个相当重要的工具:xtrabackup、innobackupex

 

实战

壹 、xtrabackup只可以备份InnoDB和XtraDB三种数据表,而不能够备份MyISAM数据表

2、安装

规划

① 、两台主机17和37,个中17当主mysql服务器,37用来苏醒的主机,

贰 、目录,二个存放完整备份的目录,N个存放增量备份的目录

澳门金沙国际 1

说明:

full目录:  存放完全备份

inc1目录:存放第三回的增量备份

inc2目录:存放首回的增量备份

二 、innobackupex-1.5.1则封装了xtrabackup,是1个剧本封装,所以能同时备份处理innodb和myisam,但在拍卖myisam时需求加3个读锁

 

备份阶段

一 、完全备份数据库

xtrabackup -pcentos --backup --target-dir=/backups/full/
# --backup表示备份
# --target-dir=填写备份到哪里

二 、往表中追加多少

mysql -pcentos hellodb -e "insert students (name,age) values('gaodao01',20)"

澳门金沙国际 2
三 、第二回增量备份

xtrabackup –pcentos --backup --target-dir=/backups/inc1/ --incremental-basedir=/backups/full
# --incremental-basedir表示基于谁的增量备份,写上上一次的备份路径
#

澳门金沙国际 3

④ 、再度修改数据表

mysql -pcentos hellodb -e "insert students (name,age) values('gaodao02',21)"

澳门金沙国际 4

五 、第1次增量备份

xtrabackup -pcentos --backup --target-dir=/backups/inc2/ --incremental-basedir=/backups/inc1/

澳门金沙国际 5

安装

其新颖版的软件可从  得到。本文基于索罗德HEL5.8的系列,由此,直接下载相应版本的rpm包安装即可,那里不再演示其经过。

卷土重来星等

表达:还原的时候大家要考虑到前四次不要回滚,最终1遍还原要回滚,还原主机要设置xtrabackup工具

一 、把备份的目录传送到要还原的主机上

scp -r /backups/ 192.168.43.37:/

贰 、停服务并清空mysql数据

systemctl stop mysqld
rm -rf /app/mysql/*

叁 、完全备份的预处理

xtrabackup  --prepare --apply-log-only --target-dir=/backups/full

# --prepare 表示还原
# --apply-log-only 表示不回滚

肆 、第三遍增量备份预处理

xtrabackup --prepare --apply-log-only --target-dir=/backups/full --incremental-dir=/backups/inc1

# 同样不回滚

五 、第三次增量备份预处理

xtrabackup --prepare  --target-dir=/backups/full --incremental-dir=/backups/inc2
# 这是最后一次,所以要回滚不完整的事务

六 、复制处理好的多少到实在的寄放数据库目录下

xtrabackup --copy-back --target-dir=/backups/full
# 它会根据你的配置文件my.cnf来读取存放位置

⑦ 、修改数据库文件权限

chown -R mysql.mysql /app/mysql/

以上还原到了备份时的意况,我们备份完二次增量后又加了条记下,还没来得急三回增量备份就宕机了,所以重复利用二进制日志文件还原到新型意况

⑧ 、通过二进制文件还原到最新处境

1)以下图普通话件记录了回复到的任务

澳门金沙国际 6

2)从主人机导出二进制文件日志

mysqlbinlog --start-position=1039 /app/logs/mysql-bin.000003 >/app/binlog.sql

3)scp传送到对象主机来还原

  • 首先在安排文件中参与禁止全数人访问选项

skip-networking
  • 起步服务

systemctl start mysqld
  • 导入二进制日志

mysql -pcentos <binlog.sql

4)进入数据库验证

澳门金沙国际 7

5)OK 苏醒达成,删除配置文件中的skip-networking仁同一视启服务

systemctl restart mysqld

更加多美貌内容请移步

官网下载

 

#wget

② 、备份的落到实处

下载安装所需依赖包,从MySQL 5.7.5发端Boost库是少不了的

 

#wget 

一 、完全备份

#yum install cmake gcc gcc-c++ libaiolibaio-devel automake autoconf bzr
bison libtool ncurses-devel libgcrypt-devellibcurl-devel libev-devel
python-sphinx perl-Digest-MD5 perl-DBD-MySQL -y

 

#cp percona-xtrabackup-2.4.4.tar.gz/usr/local/src/

# innobackupex –user=DBUSER –password=DBUSERPASS
 /path/to/BACKUP-DIR/

#cp boost_1_59_0.tar.gz /usr/local/src/

 

#cd /usr/local/src/

假若要采用三个小小的权限的用户展开备份,则可遵照如下命令创制此类用户:

#tar zxf boost_1_59_0.tar.gz

mysql> CREATE USER ’bkpuser’@’localhost’ IDENTIFIED BY ’s3cret’;

安装xtrabackup

mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM ’bkpuser’;

#tar zxf percona-xtrabackup-2.4.4.tar.gz

mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO
’bkpuser’@’localhost’;

#cd percona-xtrabackup-2.4.4

mysql> FLUSH PRIVILEGES;

#cmake -DBUILD_CONFIG=xtrabackup_release-DDOWNLOAD_BOOST=1
-DWITH_BOOST=../boost_1_59_0

 

#make -j4

采纳innobakupex备份时,其会调用xtrabackup备份全体的InnoDB表,复制全部有关表结构定义的连锁文书(.frm)、以及MyISAM、MECR-VGE、CSV和A中华VCHIVE表的相关文书,同时还会备份触发器和数据库配置音信相关的文件。那么些文件会被封存至一个以时日命令的目录中。

#make install

 

#ln -s/usr/local/xtrabackup/bin/innobackupex /usr/bin/

在备份的同时,innobackupex还会在备份目录中创制如下文件:

#ln -s /usr/local/xtrabackup/bin/xtrabackup/usr/bin/

(1)xtrabackup_checkpoints ——
备份类型(如完全或增量)、备份状态(如是不是已经为prepared状态)和LSN(日志种类号)范围音信;

常用选项:

 

–defaults-file        #数据库的配置文件路径

各种InnoDB页(平时为16k高低)都会含有三个日记类别号,即LSN。LSN是整个数据库系统的体系版本号,每种页面相关的LSN能够证明此页面近年来是哪些爆发改变的。

–apply-log           #预备在一个备份上运维mysql服务。

 

–copy-back          
#从备份目录拷贝数据,索引,日志到my.cnf文件里规定的起来地方。

(2)xtrabackup_binlog_info
—— mysql服务器当前正值使用的二进制日志文件及至备份这一阵子达成二进制日志事件的地点。

–no-timestamp        
#开创备份时不自动生成时间目录,能够自定义备份目录名例如:/backups/mysql/base

 

–databases          #用于钦定要备份的数据库,多少个库文件使用办法:
“database1 database2″

(3)xtrabackup_binlog_pos_innodb ——
二进制日志文件及用于InnoDB或XtraDB表的二进制日志文件的如今position。

–incremental        
#在全备份的基础上进行增量备份,后跟增量备份存贮目录路径

 

–incremental-basedir=DIRECTORY  
 #增量备份所急需的全备份路径目录或上次做增量备份的目录路径

(4)xtrabackup_binary —— 备份中用到的xtrabackup的可执行文件;

–incremental-dir=DIRECTORY       #增量备份存贮的目录路径

 

–redo-only                
#用于准备增量备份内容把多少统一到全备份目录,合营incremental-dir增量备份目录使用。

(5)backup-my.cnf —— 备份命令用到的安插选项消息;

–force-non-empty-directories    
#假使是一定库备份还原,不需求删掉整个mysql目录,只是特定库的及相关文书就足以,还原时累加此参数就不会报错。

 

备份

在选拔innobackupex进行备份时,仍可以运用–no-timestamp选项来阻拦命令自动创制七个以时日命名的目录;如此一来,innobackupex命令将会创制三个BACKUP-DIMurano目录来存款和储蓄备份数据。

完全备份

 

#innobackupex–defaults-file=/data/mysql/data3307/my.cnf –user=root
–password=123456–socket=/data/mysql/data3307/mysql.sock /back/full/

2、准备(prepare)3个完全备份

–host:钦命备份服务器IP

 

–defaults-file:钦命数据库配置文件

相似景色下,在备份落成后,数据尚且不可能用来复苏操作,因为备份的数量中大概会蕴藏尚未提交的作业或早已交由但尚未同步至数据文件中的事务。由此,此时数据文件仍处理不一致等状态。“准备”的首要功用就是通过回滚未提交的事体及协助进行已经付诸的政工至数据文件也使得数据文件处于一致性状态。

–user=root:备份用户

 

–password=123456:备份用户密码

innobakupex命令的–apply-log选项可用于贯彻上述作用。如上边的指令:

–socket=/data/mysql/data3307/mysql.sock:指定sock文件

 

/back/full:数据库完全备份目录

# innobackupex –apply-log  /path/to/BACKUP-DIR

增量备份

若果履行科学,其最终输出的几行音讯日常如下:

进展第一回增量备份,需求在有贰遍完整备份的底蕴上海展览中心开

xtrabackup: starting shutdown with innodb_fast_shutdown = 1

#innobackupex–defaults-file=/data/mysql/data3307/my.cnf –user=root
–password=123456–socket=/data/mysql/data3307/mysql.sock –incremental
/back/incre/ –incremental-basedir=/back/full/2016-07-28_01-46-28/

120407  9:01:36  InnoDB: Starting shutdown…

–incremental /back/incre:钦命此次增量备份存放目录

120407  9:01:40  InnoDB: Shutdown completed; log sequence number
92036620

–incremental-basedir=/back/full/2016-07-28_01-46-28:钦点完整备份存放目录

120407 09:01:40  innobackupex: completed OK!

举行第二遍增量备份

 

#innobackupex –defaults-file=/data/mysql/data3307/my.cnf–user=root
–password=123456 –socket=/data/mysql/data3307/mysql.sock–incremental
/back/incre/  –incremental-basedir=/back/incre/2016-07-28_01-50-41/

在实现“准备”的进度中,innobackupex经常还足以动用–use-memory选项来钦点其得以选择的内部存款和储蓄器的大大小小,私下认可平常为100M。如若有丰裕的内部存款和储蓄器可用,可以多分割一些内部存款和储蓄器给prepare的进度,以抓牢其成就进程。

–incremental /back/incre:钦点此次增量备份存放目录

 

–incremental-basedir=/back/incre/2016-07-28_01-50-41:钦赐是第①个增量备份目录为参考试场点进行增量备份

 

以此类推。。。

叁 、从三个一心备份中平复数据

数据苏醒

 

一齐备份恢复生机

innobackupex命令的–copy-back选项用于实践复苏操作,其经过复制全体数据有关的公文至mysql服务器DATADIEvoque目录中来施行复苏进程。innobackupex通过backup-my.cnf来收获DATADIKoleos目录的连锁新闻。

#/etc/init.d/mysql3307 stop

 

#innobackupex –user=root
–password=123456–socket=/data/mysql/data3307/mysql.sock –apply-log
–use-memory=100M /back/full/2016-08-08_00-46-06/

# innobackupex –copy-back  /path/to/BACKUP-DIR

#mv /data/mysql/data3307  /data/mysql/data3307.bak

若果执行不利,其出口音讯的终极几行常常如下:

#mkdir –p /data/mysql/data3307

innobackupex: Starting to copy InnoDB log files

#innobackupex –user=root
–password=123456–socket=/data/mysql/data3307/mysql.sock
–copy-back–datadir=/data/mysql/data3307
/back/full/2016-08-08_00-46-06/

innobackupex: in ‘/backup/2012-04-07_08-17-03’

#cp /data/mysql/data3307.bak/my.cnf  /data/mysql/data3307/

innobackupex: back to original InnoDB log directory ‘/mydata/data’

#chown –R mysql.mysql /data/mysql/data3307

innobackupex: Finished copying back files.

#/etc/init.d/mysql3307 start

 

增量备份苏醒

120407 09:36:10  innobackupex: completed OK!

停止mysql

 

#/etc/init.d/mysql3307 stop

请保管如上新闻的最行一行出现“innobackupex: completed OK!”。

动用完全备份

 

#innobackupex –user=root
–password=123456–socket=/data/mysql/data3307/mysql.sock –apply-log
–use-memory=100M –redo-only/back/full/2016-08-08_00-46-06/

当数据复苏至DATADI帕杰罗目录未来,还亟需保证全数数据文件的属主和属组均为正确的用户,如mysql,不然,在起步mysqld此前还索要事先修改数据文件的属主和属组。如:

将首先次增量备份应用到完全备份上

 

#innobackupex –user=root
–password=123456–socket=/data/mysql/data3307/mysql.sock –apply-log
–use-memory=100M –redo-only/back/full/2016-08-08_00-46-06/
–incremental-dir=/back/incre/2016-07-28_01-46-28/

# chown -R  mysql:mysql  /mydata/data/

将第一遍增量备份应用到完全备份上

 

#innobackupex –user=root
–password=123456–socket=/data/mysql/data3307/mysql.sock –apply-log
–use-memory=100M –redo-only /back/full/2016-08-08_00-46-06/
–incremental-dir=/back/incre/2016-07-28_01-50-41/

 

以此类推。。。最后三个增量库不加–redo-only选项

叁 、使用innobackupex实行增量备份

创设mysql数据目录

 

#mv /data/mysql/data3307/data/mysql/data3307.bak

各种InnoDB的页面都会包括一个LSN信息,每当相关的多寡产生变动,相关的页面包车型客车LSN就会自行增加。那就是InnoDB表能够拓展增量备份的基础,即innobackupex通过备份上次通通备份之后产生变更的页面来促成。

#mkdir /data/mysql/data3307

 

将完全备份恢复生机到数据库中

要促成率先次增量备份,能够运用上面包车型地铁命令实行:

#innobackupex –user=root
–password=123456–socket=/data/mysql/data3307/mysql.sock –copy-back
–datadir=/data/mysql/data3307/back/full/2016-08-08_00-46-06/

 

启动mysql

# innobackupex –incremental /backup –incremental-basedir=BASEDIR

#cp data3307.bak/my.cnf data3307/

 

#chown -R mysql.mysql data3307

在那之中,BASEDI瑞鹰指的是完全备份所在的目录,此命令执行完结后,innobackupex命令会在/backup目录中创建3个新的以时间命名的目录以存放全部的增量备份数据。其它,在实践过增量备份之后再贰回实行增量备份时,其–incremental-basedir应该本着上三次的增量备份所在的目录。

#/etc/init.d/mysql3307 start

 

翻看数据是还是不是苏醒

亟待小心的是,增量备份仅能选择于InnoDB或XtraDB表,对于MyISAM表而言,执行增量备份时其实举办的是完全备份。

备份的公文表达

 

(1)xtrabackup_checkpoints
――备份类型(如完全或增量)、备份状态(如是还是不是已经为prepared状态)和LSN(日志类别号)范围消息;

“准备”(prepare)增量备份与整治完全备份有着一些例外,特别要专注的是:

每种InnoDB页(平日为16k大小)都会含有三个日记种类号,即LSN。LSN是整整数据库系统的系统版本号,每种页面相关的LSN能够评释此页面近来是如何产生变动的。

(1)需求在每一种备份(包含完全和各种增量备份)上,将已经付诸的作业实行“重放”。“重播”之后,全数的备份数据将联合到完全备份上。

#cat xtrabackup_checkpoints

(2)基于全体的备份将未提交的作业进行“回滚”。

backup_type = full-backuped        #注脚那是全备

 

from_lsn = 0                  #全备的lsn起始号

于是,操作就成为了:

to_lsn = 2026561686             #全备记录到的最大类别号

# innobackupex –apply-log –redo-only BASE-DIR

last_lsn = 2026562643           #全备实现后当前的日记种类号

 

compact = 0                  #注明没有展开打包

随之执行:

(2)xtrabackup_binlog_info ――
mysql服务器当前正在选择的二进制日志文件及至备份这一刻终了二进制日志事件的岗位。

# innobackupex –apply-log –redo-only BASE-DIR
–incremental-dir=INCREMENTAL-DIR-1

#cat xtrabackup_binlog_info

 

mysql-bin.0000011371180-1-175

从此以往是第3个增量:

(3)backup-my.cnf
――备份命令用到的配备选项音信和备份毫不相关的不会记录,备份配置文件的话供给独自备份。

# innobackupex –apply-log –redo-only BASE-DIR
–incremental-dir=INCREMENTAL-DIR-2

#cat backup-my.cnf

 

# This MySQL options file was generated byinnobackupex.

里面BASE-DIXC90指的是一点一滴备份所在的目录,而INCREMENTAL-DI昂科威-1指的是第三遍增量备份的目录,INCREMENTAL-DI科雷傲-2指的是第3遍增量备份的目录,别的依次类推,即只要有反复增量备份,每1遍都要进行如上操作;

# The MySQL server

 

[mysqld]

四 、Xtrabackup的“流”及“备份压缩”成效

innodb_checksum_algorithm=innodb

 

innodb_log_checksum_algorithm=innodb

Xtrabackup对备份的数据文件援救“流”效能,即可以将备份的数量通过STDOUT传输给tar程序举办归档,而不是暗许的一直保存至某备份目录中。要接纳此作用,仅必要使用–stream选项即可。如:

innodb_澳门金沙国际,data_file_path=ibdata1:12M:autoextend

 

innodb_log_files_in_group=2

# innobackupex –stream=tar  /backup | gzip > /backup/`date
+%F_%H-%M-%S`.tar.gz

innodb_log_file_size=50331648

 

innodb_fast_checksum=false

甚至也得以利用类似如下命令将数据备份至其余服务器:

innodb_page_size=16384

# innobackupex –stream=tar  /backup | ssh user@www.magedu.com  “cat –
 > /backups/`date +%F_%H-%M-%S`.tar” 

innodb_log_block_size=512

 

innodb_undo_directory=.

其余,在实施本地备份时,还是能够使用–parallel选项对多个公文进行并行复制。此选项用于钦定在复制时起步的线程数目。当然,在实际开展备份时要利用此意义的便利性,也急需启用innodb_file_per_table选项或共享的表空间通过innodb_data_file_path选项存款和储蓄在八个ibdata文件中。对某一数据库的两个文件的复制不能够采用到此效率。其简要利用办法如下:

innodb_undo_tablespaces=0

# innobackupex –parallel  /path/to/backup

server_id=1

 

redo_log_version=0

并且,innobackupex备份的数据文件也足以储存至远程主机,那足以应用–remote-host选项来落到实处:

(4)xtrabackup_info
――记录了mariadb的版本音信和局部本性音信,还原是检测版本匹配度时用到。

# innobackupex –remote-host=root@www.magedu.com
 /path/IN/REMOTE/HOST/to/backup

#cat xtrabackup_info

     

uuid = cda678f9-4dde-11e6-9906-0050562d6ff0

 

name =

五 、导入或导出单张表

tool_name = innobackupex

 

tool_command =–defaults-file=/data/mysql/data3307/my.cnf
–use-memory=4G –user=root–password=… –port=3307
–socket=/data/mysql/data3307/mysql.sock
–incremental/back/dump/incre/2016-07-20_02-28-40
–incremental-basedir/back/dump/incre/2016-07-20_02-28-40/2016-07-20_02-29-12

私下认可情状下,InnoDB表无法因而一贯复制表文件的点子在mysql服务器之间进行移植,就算使用了innodb_file_per_table选项。而使用Xtrabackup工具得以完成此种作用,不过,此时内需“导出”表的mysql服务器启用了innodb_file_per_table选项(严苛来说,是要“导出”的表在其制造在此之前,mysql服务器就启用了innodb_file_per_table选项),并且“导入”表的服务器同时启用了innodb_file_per_table和innodb_expand_import选项。

tool_version = 2.4.4

 

ibbackup_version = 2.4.4

(1)“导出”表

server_version = 10.1.14-MariaDB

导出表是在备份的prepare阶段实行的,因而,一旦完全备份完结,就足以在preparef进度中通过–export选项将某表导出了:

start_time = 2016-07-20 02:29:58

# innobackupex –apply-log –export /path/to/backup

end_time = 2016-07-20 02:30:00

 

lock_time = 0

此命令会为各类innodb表的表空间成立二个以.exp结尾的文书,这一个以.exp结尾的文本则能够用来导入至此外服务器。

binlog_pos = filename ‘master-bin.000031’,position ‘1532’, GTID of the
last change ‘0-1-4383’

 

innodb_from_lsn = 1729763

(2)“导入”表

innodb_to_lsn = 1735728

要在mysql服务器上导入来自于此外服务器的某innodb表,须求先在近年来服务器上创设二个跟原表表结构同样的表,而后才能落到实处将表导入:

partial = N

mysql> CREATE TABLE mytable (…)  ENGINE=InnoDB;

incremental = Y

 

format = file

下一场将此表的表空间删除:

compact = N

mysql> ALTER TABLE mydatabase.mytable  DISCARD TABLESPACE;

compressed = N

 

encrypted = N

接下去,现在自于“导出”表的服务器的mytable表的mytable.ibd和mytable.exp文件复制到当前服务器的多少目录,然后选用如下命令将其“导入”:

mysql> ALTER TABLE mydatabase.mytable  IMPORT TABLESPACE;

 

 

6、使用Xtrabackup对数据库进行部分备份

 

Xtrabackup也能够达成部分备份,即只备份某些或一些钦命的数据库或某数据库中的某些或某个表。但要使用此意义,必须启用innodb_file_per_table选项,即每张表保存为3个单独的文件。同时,其也不协助–stream选项,即不帮忙将数据经过管道传输给此外程序举行拍卖。

 

其余,还原部分备份跟过来全体数据的备份也截然差异,即你无法透过简单地将prepared的一些备份使用–copy-back选项直接复制回数据目录,而是要经过导入表的大方平素促成恢复生机。当然,有些意况下,部分备份也得以向来通过–copy-back进行回复,但那种办法还原而来的数目多数会发出多少不等同的标题,因而,无论怎么样不引进应用这种艺术。

 

(1)创设部分备份

 

创制部分备份的措施有三种:正则表达式(–include), 枚举表文件(–tables-file)和列出要备份的数据库(–databases)。

 

(a)使用–include

应用–include时,须求为其钦命要备份的表的完全名称,即形如databasename.tablename,如:

# innobackupex –include=’^mageedu[.]tb1′  /path/to/backup

 

(b)使用–tables-file

此选项的参数需如若多个文件名,此文件中每行李包裹括2个要备份的表的一体化名称;如:

# echo -e ‘mageedu.tb1\nmageedu.tb2’ > /tmp/tables.txt

# innobackupex –tables-file=/tmp/tables.txt  /path/to/backup

 

(c)使用–databases

此选项接受的参数为多少名,假如要钦赐八个数据库,互相间必要以空格隔开;同时,在钦定某数据库时,也可以只钦点在那之中的某张表。其它,此选项也足以承受2个文本为参数,文件中每一行事多个要备份的对象。如:

# innobackupex –databases=’mageedu.tb1 testdb”  /path/to/backup

 

(2)整理(preparing)部分备份
 

prepare部分备份的历程看似于导出表的长河,要利用–export选项举行:

# innobackupex –apply-log –export  /pat/to/partial/backup

 

此命令执行进度中,innobackupex会调用xtrabackup命令从数额字典中移除缺点和失误的表,因而,会显示出许多关于“表不存在”类的警戒音信。同时,也会显得出为备份文件中留存的表创设.exp文件的连带音信。

 

(3)还原部分备份
 

还原部分备份的进度跟导入表的进程同样。当然,也可以透过向来复制prepared状态的备份直接至数据目录中落到实处恢复,不要此时供给数据目录处于同一状态。

相关文章