XtraBackup是Percona公司搞的一个开源的备份工具,是目前开源软件里做的最好的一款MySQL备份工具,在全球有着广泛的用户群体。

前天(2011年4月12日)刚刚发布的版本是1.6,官方页面显示的链接地址还有点问题,实际的下载的地址是:

http://www.percona.com/downloads/XtraBackup/

我下载的是源码:http://www.percona.com/redir/downloads/XtraBackup/XtraBackup-1.6/source/xtrabackup-1.6.tar.gz

[root@localhost backup]# wget http://www.percona.com/redir/downloads/XtraBackup/XtraBackup-1.6/source/xtrabackup-1.6.tar.gz
--16:30:34--  http://www.percona.com/redir/downloads/XtraBackup/XtraBackup-1.6/source/xtrabackup-1.6.tar.gz
Resolving www.percona.com... 65.49.72.130
Connecting to www.percona.com|65.49.72.130|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: /downloads/XtraBackup/XtraBackup-1.6/source/xtrabackup-1.6.tar.gz [following]
--16:30:35--  http://www.percona.com/downloads/XtraBackup/XtraBackup-1.6/source/xtrabackup-1.6.tar.gz
Reusing existing connection to www.percona.com:80.
HTTP request sent, awaiting response... 200 OK
Length: 49867645 (48M) [application/x-gzip]
Saving to: `xtrabackup-1.6.tar.gz'
100%[=====================>] 49,867,645  61.5K/s   in 16m 8s
16:46:45 (50.3 KB/s) - `xtrabackup-1.6.tar.gz' saved [49867645/49867645]

[root@localhost backup]# wget http://www.percona.com/redir/downloads/XtraBackup/XtraBackup-1.6/source/xtrabackup-1.6.tar.gz

--16:30:34--  http://www.percona.com/redir/downloads/XtraBackup/XtraBackup-1.6/source/xtrabackup-1.6.tar.gz

Resolving www.percona.com... 65.49.72.130

Connecting to www.percona.com|65.49.72.130|:80... connected.

HTTP request sent, awaiting response... 302 Found

Location: /downloads/XtraBackup/XtraBackup-1.6/source/xtrabackup-1.6.tar.gz [following]

--16:30:35--  http://www.percona.com/downloads/XtraBackup/XtraBackup-1.6/source/xtrabackup-1.6.tar.gz

Reusing existing connection to www.percona.com:80.

HTTP request sent, awaiting response... 200 OK

Length: 49867645 (48M) [application/x-gzip]

Saving to: `xtrabackup-1.6.tar.gz'

100%[=============>] 49,867,645  61.5K/s   in 16m 8s

16:46:45 (50.3 KB/s) - `xtrabackup-1.6.tar.gz' saved [49867645/49867645]

之所以这么大,是因为这个包里打包了编译需要的两个MySQL Source, 从方便用户的角度看这样也无可厚非,比如上一个1.5版本就必须和MySQL5.5.8版本的源码编译,我在5.5.9下打patch的时候会报错。

[root@localhost backup]# tar zxvf xtrabackup-1.6.tar.gz

[root@localhost backup]# cd xtrabackup-1.6

[root@localhost xtrabackup-1.6]# ll

total 48112

-rw-r--r-- 1 banping banping      658 Apr 12 21:32 BUILD.txt

-rw-r--r-- 1 banping banping    19070 Apr 12 21:32 COPYING

drwxr-xr-x 2 banping banping     4096 Apr 12 21:32 doc

-rwxr-xr-x 1 banping banping    91146 Apr 12 21:32 innobackupex

lrwxrwxrwx 1 banping banping       12 Apr 14 17:12 innobackupex-1.5.1 -> innobackupex

-rw-r--r-- 1 banping banping   145354 Apr 12 21:34 libtar-1.2.11.tar.gz

-rw-r--r-- 1 banping banping     7976 Apr 12 21:32 Makefile

-rw-r--r-- 1 banping banping 24795624 Apr 12 21:34 mysql-5.1.56.tar.gz

-rw-r--r-- 1 banping banping 23877968 Apr 12 21:34 mysql-5.5.10.tar.gz

drwxr-xr-x 2 banping banping     4096 Apr 12 21:32 patches

drwxr-xr-x 6 banping banping     4096 Apr 12 21:32 test

drwxr-xr-x 4 banping banping     4096 Apr 12 21:32 utils

-rw-r--r-- 1 banping banping   174073 Apr 12 21:32 xtrabackup.c

没有文档说怎么安装,官方的文档都还没更新,自己摸索了一下,搞明白怎么用了。这里可见包里已经封装了innobackupex程序,这是个可执行程序,可以备份包括MyISAM、InnoDB和XtraDB在内的一个完整数据库实例,同时它封装了对xtrabackup的调用,其实就是一个perl写的脚本。而xtrabackup就是备份innodb和xtradb的程序。那么接下来我们要做的就是编译生成这个xtrabackup可执行文件。

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

......

[root@localhost xtrabackup-1.6]# ll

total 48140

-rw-r--r--  1 banping banping      658 Apr 12 21:32 BUILD.txt

-rw-r--r--  1 banping banping    19070 Apr 12 21:32 COPYING

drwxr-xr-x  2 banping banping     4096 Apr 12 21:32 doc

-rwxr-xr-x  1 banping banping    91146 Apr 12 21:32 innobackupex

lrwxrwxrwx  1 banping banping       12 Apr 14 17:12 innobackupex-1.5.1 -> innobackupex

drwxr-xr-x  9    2000 users       4096 Apr 14 20:03 libtar-1.2.11

-rw-r--r--  1 banping banping   145354 Apr 12 21:34 libtar-1.2.11.tar.gz

-rw-r--r--  1 banping banping     7976 Apr 12 21:32 Makefile

-rw-r--r--  1 banping banping 24795624 Apr 12 21:34 mysql-5.1.56.tar.gz

drwxr-xr-x 32    7161 wheel       4096 Apr 14 20:01 mysql-5.5.10

-rw-r--r--  1 banping banping 23877968 Apr 12 21:34 mysql-5.5.10.tar.gz

drwxr-xr-x  2 banping banping     4096 Apr 12 21:32 patches

-rw-r--r--  1 root    root           0 Apr 14 19:58 stderr

-rw-r--r--  1 root    root         339 Apr 14 19:58 stdout

drwxr-xr-x  6 banping banping     4096 Apr 12 21:32 test

drwxr-xr-x  4 banping banping     4096 Apr 14 17:18 utils

-rw-r--r--  1 banping banping   174073 Apr 12 21:32 xtrabackup.c

这个脚本会根据我们的参数选择解包5.5.10版本的mysql代码,然后在对应的目录生成xtrabackup程序:

[root@localhost xtrabackup-1.6]# cd mysql-5.5.10/storage/innobase/xtrabackup/

[root@localhost xtrabackup]# ll

total 11448

-rw-r--r-- 1 root root     7976 Apr 14 20:03 Makefile

-rw-r--r-- 1 root root   174073 Apr 14 20:03 xtrabackup.c

-rwxr-xr-x 1 root root 11064287 Apr 14 20:03 xtrabackup_innodb55

-rw-r--r-- 1 root root   430024 Apr 14 20:03 xtrabackup.o

这个xtrabackup_innodb55文件就是我们备份innodb的工具了。

由于我的MySQL是源码安装的,可以建立2个软链接:

[root@localhost bin]# ln -s /home/mysql/3306/bin/mysql /usr/bin/mysql

[root@localhost xtrabackup-1.6]# ln -s /home/mysql/backup/xtrabackup-1.6/xtrabackup_innodb55 /usr/bin/xtrabackup_55

然后就可以用innobackupex程序备份数据库了,注意的是my.cnf里datadir这个参数是必须要指定的,xtrabackup_55根据它去定位innodb数据文件的位置。当然如果直接用xtrabackup_55这个程序可以通过参数来指定。

[root@localhost xtrabackup-1.6]# ./innobackupex --host=192.168.0.35 --port=3306 --user=banpingdbuser --password=mypassword --databases=banpingdb --defaults-file=/home/mysql/3306/my.cnf /tmp/mysqlbackup/

InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy

and Percona Inc 2009-2011.  All Rights Reserved.

This software is published under

the GNU GENERAL PUBLIC LICENSE Version 2, June 1991.

110414 20:18:55  innobackupex: Starting mysql with options:  --defaults-file='/home/mysql/3306/my.cnf' --password='mypassword' --user='banpingdbuser' --host='192.168.0.35' --port='3306' --unbuffered --

110414 20:18:55  innobackupex: Connected to database with mysql child process (pid=21752)

110414 20:19:01  innobackupex: Connection to database server closed

IMPORTANT: Please check that the backup run completes successfully.

At the end of a successful backup run innobackupex

prints "completed OK!".

innobackupex: Using mysql  Ver 14.14 Distrib 5.5.9, for Linux (x86_64) using readline 5.1

innobackupex: Using mysql server version Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

innobackupex: Created backup directory /tmp/mysqlbackup/2011-04-14_20-19-01

110414 20:19:01  innobackupex: Starting mysql with options:  --defaults-file='/home/mysql/3306/my.cnf' --password='mypassword' --user='banpingdbuser' --host='192.168.0.35' --port='3306' --unbuffered --

110414 20:19:01  innobackupex: Connected to database with mysql child process (pid=21783)

110414 20:19:05  innobackupex: Connection to database server closed

110414 20:19:05  innobackupex: Starting ibbackup with command: xtrabackup_55  --defaults-file="/home/mysql/3306/my.cnf" --backup --suspend-at-end --target-dir=/tmp/mysqlbackup/2011-04-14_20-19-01

innobackupex: Waiting for ibbackup (pid=21809) to suspend

innobackupex: Suspend file '/tmp/mysqlbackup/2011-04-14_20-19-01/xtrabackup_suspended'

xtrabackup_55  Ver undefined Rev undefined for 5.5.10 Linux (x86_64)

xtrabackup: uses posix_fadvise().

xtrabackup: cd to /home/mysql/3306/data

xtrabackup: Target instance is assumed as followings.

xtrabackup:   innodb_data_home_dir = /home/mysql/3306/data

xtrabackup:   innodb_data_file_path = ibdata1:10M:autoextend

xtrabackup:   innodb_log_group_home_dir = /home/mysql/3306/redolog

xtrabackup:   innodb_log_files_in_group = 3

xtrabackup:   innodb_log_file_size = 5242880

110414 20:19:05 InnoDB: Using Linux native AIO

110414 20:19:06  InnoDB: Warning: allocated tablespace 286, old maximum was 0

>> log scanned up to (188888442)

[01] Copying /home/mysql/3306/data/ibdata1

to /tmp/mysqlbackup/2011-04-14_20-19-01/ibdata1

[01]        ...done

[01] Copying ./banpingdb/sys_post_type.ibd

to /tmp/mysqlbackup/2011-04-14_20-19-01/banpingdb/sys_post_type.ibd

[01]        ...done

[01] Copying ./banpingdb/w_board.ibd

to /tmp/mysqlbackup/2011-04-14_20-19-01/banpingdb/w_board.ibd

[01]        ...done

[01] Copying ./test/t.ibd

to /tmp/mysqlbackup/2011-04-14_20-19-01/test/t.ibd

[01]        ...done

110414 20:19:15  innobackupex: Continuing after ibbackup has suspended

110414 20:19:15  innobackupex: Starting mysql with options:  --defaults-file='/home/mysql/3306/my.cnf' --password='mypassword' --user='banpingdbuser' --host='192.168.0.35' --port='3306' --unbuffered --

110414 20:19:15  innobackupex: Connected to database with mysql child process (pid=21827)

>> log scanned up to (188888855)

110414 20:19:19  innobackupex: Starting to lock all tables...

>> log scanned up to (188889267)

>> log scanned up to (188889267)

110414 20:19:29  innobackupex: All tables locked and flushed to disk

110414 20:19:29  innobackupex: Starting to backup .frm, .MRG, .MYD, .MYI,

innobackupex: .TRG, .TRN, .ARM, .ARZ, .CSM, .CSV and .opt files in

innobackupex: subdirectories of '/home/mysql/3306/data'

innobackupex: Backing up files '/home/mysql/3306/data/banpingdb/*.{frm,MYD,MYI,MRG,TRG,TRN,ARM,ARZ,CSM,CSV,opt,par}' (129 files)

110414 20:19:30  innobackupex: Finished backing up .frm, .MRG, .MYD, .MYI, .TRG, .TRN, .ARM, .ARZ, .CSV, .CSM and .opt files

innobackupex: Resuming ibbackup

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

>> log scanned up to (188889267)

xtrabackup: Stopping log copying thread.

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

110414 20:19:32  innobackupex: All tables unlocked

110414 20:19:32  innobackupex: Connection to database server closed

innobackupex: Backup created in directory '/tmp/mysqlbackup/2011-04-14_20-19-01'

innobackupex: MySQL binlog position: filename 'bin.000011', position 45557372           mysql,information_schema,performance_schema

110414 20:19:32  innobackupex: completed OK!

参考文档:

http://www.percona.com/docs/wiki/percona-xtrabackup:xtrabackup_manual

 

One Response to 源码安装XtraBackup备份MySQL5.5数据库

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>