xtrabackup 升级 mysql_创建MySQL数据库备份的好工具:XtraBackup

说到备份MySQL数据库,不少人可能会先想到其自带的命令行工具mysqldump,要说这个工具确实不错,操作简单调用灵活,不过mysqldump属于逻辑备份工具,类似ORACLE数据库中的export,小数据量时效率尚可,当数据量达到一定规模时,使用mysqldump执行备份的时间也许还可接受,但恢复时间基本就不能忍受了。

这种情况下就需要一种好用又高效的工具,xtrabackup就是其中一款,号称免费版的InnoDB HotBackup。

Xtrabackup提供了两种命令行工具:

xtrabackup:专用于备份InnoDB引擎的数据;

innobackupex:这是一个perl脚本,在执行过程中会调用xtrabackup命令,这样用该命令即可以实现备份InnoDB,也可以备份MyISAM引擎的对象。

Xtrabackup提供了Linux下常见的安装方式,包括RPM安装,源码编译方式,以及二进制版本安装,这里三思尝试下载了最新的1.6源码包,决定自行编译安装。

1.6版本的源码包相较之前大了数十倍,主要是由于源码包中同时包含了mysql5.1和mysql5.5的源码包,一个2M左右的小软件,居然内置了两个各有20余M的软件安装包,这真不是一般人都想的出来的。

由于1.6版本新推不久,官网中的文档都没有来的及更新完善,源码方式的安装文档也并不完整,三思也只能连蒙带猜,下列安装步骤有可能并非最佳安装方式,仅只是提供了一种,源码安装xtrabackup并使其可用的方式。

由于xtrabackup依赖libinnodb链接库,因此需要先编译InnoDB,而后再编译xtrabackup。要编译安装xtrabackup最简单的方式当然是使用提供的编译脚本,首先还是解压缩文件,并进入到安装目录:

[root@rhel5u3 software]# tar xvfz xtrabackup-1.6.tar.gz[root@rhel5u3 software]# cd xtrabackup-1.6

ll的话会看到目录有两mysql-5.1.56.tar.gz和mysql-5.5.10.tar.gz两个mysql源码包,正是这两个源码包占用了大量的空间。除此外还有一个innobackupex的perl脚本程序,该脚本可以直接执行,不过执行备份任何时会报:

sh: xtrabackup_55: command not found

innobackupex: fatal error: no 'mysqld' group in MySQL optionsinnobackupex: fatal error: OR no 'datadir' option in group 'mysqld' in MySQL options

提示xtrabackup_55命令不存在,接下来就是要编译xtrabackup。

在解压缩目录下执行utils/build.sh,注意一定要在xtrabackup安装目录内执行,执行时要指定与之匹配的MySQL数据库版本。

[root@rhel5u3 xtrabackup-1.6]# utils/build.sh

Build an xtrabackup binary against the specified InnoDB flavor.

Usage: build.sh CODEBASE

where CODEBASE can be one of the following values or aliases:

innodb51_builtin | 5.1        build against built-in InnoDB in MySQL 5.1

innodb55         | 5.5        build against InnoDB in MySQL 5.5

xtradb51         | xtradb   build against Percona Server with XtraDB 5.1  xtradb55         | xtradb55 build against Percona Server with XtraDB 5.5

三思安装的是mysql5.5,因此这里指定innodb55,执行命令如下:

[root@rhel5u3 xtrabackup-1.6]# utils/build.sh innodb55

该脚本会根据指定的引擎版本,自动解压缩适当的MySQL源码包并进行编译,这是最简单的安装方式。

命令执行完成之后,xtrabackup就可以用了,一般默认编译后该文件保存在xtrabackup-1.6/mysql-5.5.10/storage/innobase/xtrabackup/目录下,当然也可以通过find命令查找xtrabackup的具体路径。

创建两个软链接,以方便调用XtraBackup命令执行备份:

[root@rhel5u3 xtrabackup-1.6]# ln -s /data/software/xtrabackup-1.6/innobackupex /usr/local/mysql55/bin/innobackupex[root@rhel5u3 xtrabackup-1.6]# ln -s /data/software/xtrabackup-1.6/mysql-5.5.10/storage/innobase/xtrabackup/xtrabackup_innodb55 /usr/local/mysql55/bin/xtrabackup_55

将mysql55的bin加载到path环境变量,当然这步多数情况下应该在安装mysql时做过了:

[root@rhel5u3 xtrabackup-1.6]# export PATH=$PATH:/usr/local/mysql55/bin

至此,XtraBackup的源码安装就完成了,接下来就可以使用这些命令执行备份任务了。例如,调用xtrabackup命令执行备份,举个简单的备份示例如下:

[root@rhel5u3 ~]# xtrabackup_55 --defaults-file=/data/mysqldata/3306/my.cnf --backup --target-dir=/data/mysql_20110524

xtrabackup_55  Ver undefined Rev undefined for 5.5.10 Linux (x86_64)

xtrabackup: uses posix_fadvise().

xtrabackup: cd to /data/mysqldata/3306/data

xtrabackup: Target instance is assumed as followings.

xtrabackup:   innodb_data_home_dir = /data/mysqldata/3306/innodb_ts

xtrabackup:   innodb_data_file_path = ibdata1:10M:autoextend

xtrabackup:   innodb_log_group_home_dir = /data/mysqldata/3306/innodb_log

xtrabackup:   innodb_log_files_in_group = 2

xtrabackup:   innodb_log_file_size = 5242880

110524 17:31:16 InnoDB: Using Linux native AIO

>> log scanned up to (1598402)

[01] Copying /data/mysqldata/3306/innodb_ts/ibdata1

to /data/mysql_20110524/ibdata1

[01]        ...done

xtrabackup: The latest check point (for incremental): '1598402'

>> log scanned up to (1598402)

xtrabackup: Stopping log copying thread.xtrabackup: Transaction log of lsn (1598402) to (1598402) was copied.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值