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]
之所以这么大,是因为这个包里打包了编译需要的两个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数据库
发表评论 取消回复
技术组织
最近评论
- 皇冠网址 - www.2532777.com|3ey2wm 发表在《过年》
- www.198818.com|osk4tf 发表在《过年》
- pary 发表在《为Postfix增加DKIM功能》
- 竹纤维产品 发表在《过年》
- Asher 发表在《从2011到2012》
- sphinx安装 - 凹凸曼博客 发表在《安装sphinx的php扩展小记》
历史归档
广告位







[...] http://www.banping.com/2011/04/14/xtrabackup-mysql55/ [...]