Percon-Xtrabackup备份

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

  • (1)备份过程快速、可靠;
  • (2)备份过程不会打断正在执行的事务;
  • (3)能够基于压缩等功能节约磁盘空间和流量;
  • (4)自动实现备份检验;
  • (5)还原速度快;

一、下载和安装

XtraBackup现在最新版本为2.1.5,官方也提供了2.0的版本可供下载,官方链接地址:http://www.percona.com/software/percona-xtrabackup;可以下载源码编译安装,也可以下载适合的RPM包或使用yum进行安装。由于没有需要特殊定制的,因此建议直接使用RPM安装即可。

安装方法一:

下载RPM安装包:

wget http://www.percona.com/downloads/XtraBackup/LATEST/RPM/rhel6/x86_64/percona-xtrabackup-2.1.5-680.rhel6.x86_64.rpm

安装依赖:

[root@localhost ~]# yum install -y perl-DBD-MySQL perl-DBI  perl-Time-HiRes libaio*

安装:

[root@localhost ~]# rpm -ivh percona-xtrabackup-2.1.5-680.rhel6.x86_64.rpm

Preparing...                      ########################################### [100%]

1:percona-xtrabackup     ########################################### [100%]

安装方法二:

安装percona源:

[root@localhost ~]# rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm

使用yum安装percona-xtrabackup:

[root@localhost ~]# yum -y install percona-xtrabackup

查看安装结果:

[root@iZ2zeh44pi6rlahxj7s9azZ mnt ]# rpm -qa |grep  xtrabackup

percona-xtrabackup-2.1.5-680.rhel6.x86_64

[root@iZ2zeh44pi6rlahxj7s9azZ mnt ]# rpm -ql percona-xtrabackup-2.1.5-680.rhel6.x86_64

/usr/bin/innobackupex

/usr/bin/innobackupex-1.5.1

/usr/bin/xbcrypt

/usr/bin/xbstream

/usr/bin/xtrabackup

/usr/bin/xtrabackup_55

/usr/bin/xtrabackup_56

/usr/share/doc/percona-xtrabackup-2.1.5

/usr/share/doc/percona-xtrabackup-2.1.5/COPYING

安装方法三:

二进制包安装:

进入网站选择的合适的二进制包https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.3.2/binary/

[root@iZ2zeh44pi6rlahxj7s9azZ mnt]# wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.3.2/binary/tarball/percona-xtrabackup-2.3.2-Linux-x86_64.tar.gz

[root@iZ2zeh44pi6rlahxj7s9azZ mnt]# tar -xvf percona-xtrabackup-2.3.2-Linux-x86_64.tar.gz

[root@iZ2zeh44pi6rlahxj7s9azZ mnt]# cd percona-xtrabackup-2.3.2-Linux-x86_64

[root@iZ2zeh44pi6rlahxj7s9azZ percona-xtrabackup-2.3.2-Linux-x86_64]# cp bin/innobackupex /usr/bin

[root@iZ2zeh44pi6rlahxj7s9azZ percona-xtrabackup-2.3.2-Linux-x86_64]# cp bin/xtrabackup* /usr/bin

安装相关插件(重要)

[root@iZ2zeh44pi6rlahxj7s9azZ mnt]#yum install perl-DBI -y

[root@iZ2zeh44pi6rlahxj7s9azZ mnt]#yum install perl-DBD-MySQL -y

[root@iZ2zeh44pi6rlahxj7s9azZ mnt]#yum install perl-Time-HiRes -y

[root@iZ2zeh44pi6rlahxj7s9azZ mnt]#yum install perl-IO-Socket-SSL –y

[root@iZ2zeh44pi6rlahxj7s9azZ mnt]#yum install perl-Time-HiRes libaio*

[root@iZ2zeh44pi6rlahxj7s9azZ mnt]#yum install perl-TermReadKey.x86_64 -y

[root@iZ2zeh44pi6rlahxj7s9azZ mnt]#wget     https://www.percona.com/downloads/perconatoolkit/3.0.3/binary/redhat/7/x86_64/percona-toolkit-3.0.3-1.el7.x86_64.rpm

[root@iZ2zeh44pi6rlahxj7s9azZ mnt]#rpm -ivh percona-toolkit-3.0.3-1.el7.x86_64.rpm

Xtrabackup中主要包含两个工具:

xtrabackup:是用于热备份innodb, xtradb表中数据的工具,不能备份其他类型的表,也不能备份数据表结构;

innobackupex:是将xtrabackup进行封装的perl脚本,提供了备份myisam表的能力。

二、使用xtrabackup实现对MySQL的备份:

2.1 完全备份:

基本语法1(信息尽量不全,顺序也很重要):

# innobackupex --defaults-file=/etc/my.cnf --user=user_name --host=IP --password='password' --port=dk     

/data/backup

基本语法2:

xtrabackup --backup --target-dir=/data/backup/

用户所具备的权限(insert、select、create、super、process、create table space、replication client、reload、lock tables):

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

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

mysql> FLUSH PRIVILEGES;

(1)还不支持mysql最新版的

mysql> select version();

+------------+

| version()  |

+------------+

| 5.7.19-log |

+------------+

1 row in set (0.00 sec)

[root@iZ2zeh44pi6rlahxj7s9azZ mnt]#innobackupex --user=root --host=127.0.0.1 --password='abc123' -P3307 --defaults-file=/data/my3307/my.cnf /data/backup/

170802 11:26:37 innobackupex: Starting the backup operation

IMPORTANT: Please check that the backup run completes successfully.

           At the end of a successful backup run innobackupex

           prints "completed OK!".

170802 11:26:37  version_check Connecting to MySQL server with DSN 'dbi:mysql:;mysql_read_default_group=xtrabackup;host=127.0.0.1;port=3307;mysql_socket=/data/my3307/run/mysql.sock' as 'root'  (using password: YES).

170802 11:26:37  version_check Connected to MySQL server

170802 11:26:37  version_check Executing a version check against the server...

170802 11:26:37  version_check Done.

170802 11:26:37 Connecting to MySQL server host: 127.0.0.1, user: root, password: set, port: 3307, socket: /data/my3307/run/mysql.sock

Error: Unsupported server version: '5.7.19-log'. Please report a bug at https://bugs.launchpad.net/percona-xtrabackup

(2)

mysql> select version();

+-----------+

| version() |

+-----------+

| 5.6.37    |

+-----------+

1 row in set (0.00 sec)

[root@iZ2zeh44pi6rlahxj7s9azZ mnt]# innobackupex --user=root --host=127.0.0.1 /data/backup/

170802 11:25:27 innobackupex: Starting the backup operation

IMPORTANT: Please check that the backup run completes successfully.

           At the end of a successful backup run innobackupex

           prints "completed OK!".

170802 11:25:27  version_check Connecting to MySQL server with DSN 'dbi:mysql:;mysql_read_default_group=xtrabackup;host=127.0.0.1;mysql_socket=/var/lib/mysql/mysql.sock' as 'root'  (using password: NO).

···

170802 11:25:31  version_check Done.

170802 11:25:31 Connecting to MySQL server host: 127.0.0.1, user: root, password: not set, port: 0, socket: 

170802 11:25:33 Executing UNLOCK TABLES

170802 11:25:33 All tables unlocked

170802 11:25:33 Backup created in directory '/data/backup//2017-08-02_11-25-27'

170802 11:25:33 [00] Writing backup-my.cnf

170802 11:25:33 [00]        ...done

170802 11:25:33 [00] Writing xtrabackup_info

170802 11:25:33 [00]        ...done

xtrabackup: Transaction log of lsn (1626133) to (1626133) was copied.

170802 11:25:33 completed OK!

结果:

[root@iZ2zeh44pi6rlahxj7s9azZ backup]# ls

2017-08-02_14-05-03

[root@iZ2zeh44pi6rlahxj7s9azZ backup]# cd 2017-08-02_14-05-03/

[root@iZ2zeh44pi6rlahxj7s9azZ 2017-08-02_14-05-03]# ls

backup-my.cnf  ibdata1  mysql  performance_schema  test  xtrabackup_checkpoints  xtrabackup_info  xtrabackup_logfile

各文件说明:

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

每个InnoDB页(通常为16k大小)都会包含一个日志序列号,即LSN。LSN是整个数据库系统的系统版本号,每个页面相关的LSN能够表明此页面最近是如何发生改变的。

(2)xtrabackup_info —— mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置等信息。

(3)backup-my.cnf —— 备份命令用到的配置选项信息;

在使用innobackupex进行备份时,还可以使用--no-timestamp选项来阻止命令自动创建一个以时间命名的目录;如此一来,innobackupex命令将会创建一个BACKUP-DIR目录来存储备份数据。

 2.2增量备份:

[root@iZ2zeh44pi6rlahxj7s9azZ backup]# xtrabackup --backup --target-dir=/data/backup/inc1 --incremental-basedir=/data/backup

注:--target-dir=/data/backup/inc1 为增量备份所在的目录

--incremental-basedir=/data/backup 为增量备份之前备份的目录

[root@iZ2zeh44pi6rlahxj7s9azZ backups]# innobackupex --defaults-file=/etc/my.cnf --user=root --host=127.0.0.1 --incremental /data/backups/inc1 --incremental-basedir=/data/backups/2017-08-02_15-51-39/

注:--incremental-basedir=/data/backups/2017-08-02_15-51-39/ 全备目录

--incremental /data/backups/inc1 是增量备份目录

出现completed OK!即成功

 170802 15:10:15 [00]        ...done

170802 15:10:15 [00] Writing xtrabackup_info

170802 15:10:15 [00]        ...done

xtrabackup: Transaction log of lsn (1739172) to (1739172) was copied.

170802 15:10:15 completed OK!

[root@iZ2zeh44pi6rlahxj7s9azZ backup]# ls

backup-my.cnf  ibdata1  inc1  mysql  performance_schema  test  xtrabackup_checkpoints  xtrabackup_info  xtrabackup_logfile

分别查看xtrabackup_checkpoints文件可查看backup_type以及二进制日志的情况

[root@iZ2zeh44pi6rlahxj7s9azZ inc1]# vim /data/backup/xtrabackup_checkpoints

backup_type = full-backuped

from_lsn = 0

to_lsn = 1710465

last_lsn = 1710465

compact = 0

recover_binlog_info = 0

[root@iZ2zeh44pi6rlahxj7s9azZ inc1]# vim /data/backup/inc1/xtrabackup_checkpoints

backup_type = incremental

from_lsn = 1710465

to_lsn = 1739172

last_lsn = 1739172

compact = 0

recover_binlog_info = 0

2.3恢复(备份合并后mysql服务器停掉)

语法1:

[root@iZ2zeh44pi6rlahxj7s9azZ backup]# xtrabackup --copy-back --target-dir=/data/backup/

语法2(合并增量备份到全量备份,然后利用合并后全量备份恢复):

第一步是在所有备份目录下重做已提交的日志

[root@iZ2zeh44pi6rlahxj7s9azZ backups]# innobackupex --apply-log --redo-only BASE-DIR

[root@iZ2zeh44pi6rlahxj7s9azZ backups]# innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1

[root@iZ2zeh44pi6rlahxj7s9azZ backups]# innobackupex --apply-log BASE-DIR --incremental-dir=INCREMENTAL-DIR-2

BASE-DIR是指全备目录,INCREMENTAL-DIR-1是指第一次的增量备份,INCREMENTAL-DIR-2是指第二次的增量备份,以此类推。要注意的是:最后一步的增量备份并没有--redo-only选项

第二步 回滚未完成的日志

innobackupex --apply-log BASE-DIR

拷贝(默认为/var/lib/mysql,可以用--datadir=''指定)

[root@iZ2zeh44pi6rlahxj7s9azZ mysql]# innobackupex --copy-back /data/backups/2017-08-02_15-51-39/

出现completed OK!即为成功

170802 15:31:46 [01] Copying ./test/test2.ibd to /var/lib/mysql/test/test2.ibd

170802 15:31:46 [01]        ...done

170802 15:31:46 [01] Copying ./test/test2.frm to /var/lib/mysql/test/test2.frm

170802 15:31:46 [01]        ...done

170802 15:31:46 completed OK!

赋权:

chown -R mysql:mysql /var/lib/mysql

增量备份的恢复也是按照语法恢复,不同的是target-dir


二进制包卸载方法:

[root@iZ2zeh44pi6rlahxj7s9azZ backup]#  cd /usr/bin

[root@iZ2zeh44pi6rlahxj7s9azZ bin]# rm -rf innobackupex

[root@iZ2zeh44pi6rlahxj7s9azZ bin]# rm -rf xtrabackup*

--defaults-file 同xtrabackup的--defaults-file参数,指定配置文件的位置

--apply-log 对xtrabackup的--prepare参数的封装

--copy-back做数据恢复时将备份数据文件拷贝到MySQL服务器的datadir ;

--remote-host=HOSTNAME通过ssh将备份数据存储到进程服务器上;

--stream=[tar]备份文件输出格式, tar时使用tar4ibd , 该文件可在XtarBackup binary文件中获得.如果备份时有指定--stream=tar, 则tar4ibd文件所处目录一定要在$PATH中(因为使用的是tar4ibd去压缩, 在XtraBackup的binary包中可获得该文件)。
在 使用参数stream=tar备份的时候,你的xtrabackup_logfile可能会临时放在/tmp目录下,如果你备份的时候并发写入较大的话 xtrabackup_logfile可能会很大(5G+),很可能会撑满你的/tmp目录,可以通过参数--tmpdir指定目录来解决这个问题。

--tmpdir=DIRECTORY当有指定--remote-host or --stream时, 事务日志临时存储的目录, 默认采用MySQL配置文件中所指定的临时目录tmpdir

--redo-only --apply-log组,强制备份日志时只redo ,跳过rollback。这在做增量备份时非常必要。

--use-memory=#该参数在prepare的时候使用,控制prepare时innodb实例使用的内存量

--throttle=IOS同xtrabackup的--throttle参数
--sleep=是给ibbackup使用的,指定每备份1M数据,过程停止拷贝多少毫秒,也是为了在备份时尽量减小对正常业务的影响,具体可以查看ibbackup的手册 ;

--compress[=LEVEL]对备份数据迚行压缩,仅支持ibbackup,xtrabackup还没有实现;

--include=REGEXP对 xtrabackup参数--tables的封装,也支持ibbackup。备份包含的库表,例如:--include="test.*",意思是要备份 test库中所有的表。如果需要全备份,则省略这个参数;如果需要备份test库下的2个表:test1和test2,则写 成:--include="test.test1|test.test2"。也可以使用通配符,如:--include="test.test*"。

--databases=LIST列出需要备份的databases,如果没有指定该参数,所有包含MyISAM和InnoDB表的database都会被备份;

--uncompress解压备份的数据文件,支持ibbackup,xtrabackup还没有实现该功能;

--slave-info备份从库, 加上--slave-info备份目录下会多生成一个xtrabackup_slave_info 文件, 这里会保存主日志文件以及偏移, 文件内容类似于:CHANGE MASTER TO MASTER_LOG_FILE='', MASTER_LOG_POS=0

--socket=SOCKET 指定mysql.sock所在位置,以便备份进程登录mysql.

测试:

时间: 2024-09-01 21:26:55

Percon-Xtrabackup备份的相关文章

xtrabackup备份还原MySQL数据库

原文:xtrabackup备份还原MySQL数据库   mysqldump 备份鉴于其自身的某些特性(锁表,本质上备份出来insert脚本或者文本,不支持差异备份),不太适合对实时性要求比较高的情况Xtrabackup可以解决mysqldump存在的上述的一些问题,生产环境应用的也会更多一些.本文简单测试一下Xtrabackup对MySQL数据库的备份还原操作. 本着先把功能先撸起来再深入细节的原则,粗略地实现了一个备份还原,并未深入细节. 网上有不少xtrabackup的文章,因为环境不一样,

MySQL · 物理备份 · Percona XtraBackup 备份原理

前言 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle).Percona Server 和 MariaDB,并且全部开源,真可谓是业界良心.我们 RDS MySQL 的物理备份就是基于这个工具做的. 项目的 blueprint 和 bug 讨论放在 Launchpad,代码之前也放在 Launchpad,现在已经迁移到 Github 啦,项目更新发布非常快,感兴趣的可以关注 :-) 本文

mysql xtrabackup 备份恢复实现分享_Mysql

简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具.特点: (1)备份过程快速.可靠: (2)备份过程不会打断正在执行的事务: (3)能够基于压缩等功能节约磁盘空间和流量: (4)自动实现备份检验: (5)还原速度快: Xtrabackup中包含两个工具: * xtrabackup - 用于热备份innodb, xtradb表的工具,不能备份其他表. * innobackupex

MySQL之Xtrabackup备份恢复数据库

一.Xtrabackup介绍 1.Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品. Xtrabackup有两个主要的工具:xtrabackup.innobackupex xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表.innobackupex是参考了InnoDB Hotbackup的innoback脚本修改

xtrabackup备份mysql“ib_logfile0 is of different”错误分析

今天用xtrabackup工具完整备份mysql数据库的时候出现"./ib_logfile0 is of different"错误,具体的日志信息如下: 我第一时间查询了百度和谷歌都没有找见相对应的答案.决定从错误日志入手,上面的日志提示说:mysql数据库inondb的日志文件的大小和mysql配置文件设置的innodb日志文件大小不一致而导致的. 首先查看一下mysql数据库innodb的日志文件的大小,发现innodb的日志文件的大小为5242880字节,即日志文件为5M. 紧接

mysql数据库中innobackupex xtrabackup备份/还原

大数据量备份与还原,始终是个难点.当MYSQL超10G,用mysqldump来导出就比较慢了.在这里推荐xtrabackup,这个工具比mysqldump要快很多. 1.Xtrabackup介绍 1,Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品. Xtrabackup有两个主要的工具:xtrabackup.innobackupex 1.xtraback

【Mysql】xtrabackup 备份和恢复测试

1 创建测试环境 mysql> create table t1 as select * from sbtest; Query OK, 1000000 rows affected (33.37 sec) Records: 1000000  Duplicates: 0  Warnings: 0 mysql> insert into t1 select * from t1;                           Query OK, 1000000 rows affected (1 mi

XtraBackup备份出现"Can't locate Digest/MD5.pm in @INC"

      在CentOS 7上安装了Xtrabackup 2.4.5(innobackupex version 2.4.5 Linux (x86_64) (revision id: e41c0be)),然后做备份时遇到下面错误信息"Can't locate Digest/MD5.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/sh

MySQL中xtrabackup备份恢复全攻略

   XtraBackup是Percona推出的一款备份工具,算是对于mysqldump的一个补充.对于大批量数据的导入使用mysqldump会出现一定的瓶颈,这一点做过一些数据迁移项目的同学可能感同身受.   数据迁移中的数据量,小有小的好,大有大的招,见招拆招,找到适合的场景是最佳的.     如果现在去Percona官网下载,就会发现最新的版本已经是2.4.6了.下载可以选择一个完整的打包,或者逐个的rpm根据需求来安装也可以.完整的工具大概在60M左右.     而目前的MySQL版本大

使用Xtrabackup在线备份及恢复MySQL

Xtrabackup是由percona开发的一个开源软件,它是innodb热备工具ibbackup(收费的商业软件)的一个开源替代品 .Xtrabackup由个部分组成:xtrabackup和innobackupex,其中xtrabackup工具用于备份innodb和 xtraDB引擎的表:而 innobackupex工具用于备份myisam和innodb引擎的表,本文将介绍如何用innobackupex工具做全量和增量备份. 官网:http://www.percona.com/docs/wik