Xtrabackup 是percona公司的开源项目,用以实现类似innodb官方的热备份工具InnoDB Hot Backup的功能,能够非常快速地备份与恢复mysql数据库。 Xtrabackup中包含两个工具:
xtrabackup是用于热备份innodb, xtradb表中数据的工具,不能备份其他类型的表,也不能备份数据表结构;
innobackupex是将xtrabackup进行封装的perl脚本,提供了备份myisam表的能力。
下面介绍xtrabackup的全部、增量的备份与恢复。
一、下载与安装
1、下载
[root@centos64 opt]# [root@centos64 opt]# wget http://www.percona.com/downloads/XtraBackup/XtraBackup-2.1.9/RPM/rhel6/i386/percona-xtrabackup-2.1.9-744.rhel6.i686.rpm
2、安装依赖库
[root@centos64 opt]# yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr bison libtool ncurses-devel zlib-devel perl-Time-HiRes perl-DBD-MySQL -y
3、解压
[root@centos64 opt]# rpm -ivh percona-xtrabackup-2.1.9-744.rhel6.i686.rpm
至此,Xtrabackup 初步安装完成。
其中,
innobackupex是我们要使用的备份工具;
xtrabackup是被封装在innobackupex之中的,innobackupex运行时需要调用它;
4、对某个数据库进行全部备份的命令介绍
innobackupex --user=root --password=root --defaults-file=/etc/my.cnf --database=test --stream=tar /tmp/data/ 2>/tmp/data/err.log|gzip 1>/tmp/data/test.tar.gz
说明:
--database=test 单独对test数据库做备份 ,若是不添加此参数那就那就是对全库做备份
2>/tmp/data/err.log 输出信息写入日志中
1>/tmp/data/test.tar.gz 打包压缩存储到该文件中
二、对数据库的全部备份与恢复
(1)先进入mysql里创建一个新的test数据库
mysql> drop database test;
mysql> create database test;
mysql> use test;
mysql> create table test (id int);
mysql> insert into test values(1);
mysql> insert into test values(2);
mysql> insert into test values(3);
mysql> insert into test values(4);
mysql> insert into test values(5);
mysql> flush privileges;
(2)然后备份test的整个数据库
[root@centos64_1 ~]# vi /tmp/backup.sh
[root@centos64_1 ~]# chmod +x /tmp/backup.sh
backup.sh脚本内容如下:
#!/bin/bash
user='root'
passwd='root'
database=test
my_config='/etc/my.cnf'
log=$database-$(date +%Y%m%d%H%M).log
str=$database-$(date +%Y%m%d%H%M).tar.gz
backup_dir='/tmp/data'
echo "Start to backup at $(date +%Y%m%d%H%M)"
if [ ! -d "$backup_dir" ];then
mkdir $backup_dir
fi
innobackupex --user=$user --password=$passwd --defaults-file=$my_config --database=$database --stream=tar $backup_dir 2>$backup_dir/$log | gzip 1>$backup_dir/$str
if [ $? -eq 0 ];then
echo "Backup is finish! at $(date +%Y%m%d%H%M)"
exit 0
else
echo "Backup is Fail! at $(date +%Y%m%d%H%M)"
exit 1
fi
运行脚本:
[root@centos64_1 ~]# sh /tmp/backup.sh
Start to backup at 201501141131
Backup is finish! at 201501141131
[root@centos64_1 ~]#
然后到data里查看结果:
[root@centos64_1 ~]# cd /tmp/data/
[root@centos64_1 data]# ll
total 40
-rw-r--r-- 1 root root 3493 Jan 14 15:50 test-201501141550.log
-rw-r--r-- 1 root root 36031 Jan 14 15:50 test-201501141550.tar.gz
[root@centos64_1 data]# cat test-201501141550.log
InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy
and Percona LLC and/or its affiliates 2009-2013. All Rights Reserved.
This software is published under
the GNU GENERAL PUBLIC LICENSE Version 2, June 1991.
Get the latest version of Percona XtraBackup, documentation, and help resources:
http://www.percona.com/xb/p
150114 15:50:33 innobackupex: Connecting to MySQL server with DSN 'dbi:mysql:;mysql_read_default_file=/etc/my.cnf;mysql_read_default_group=xtrabackup' as 'root' (using password: YES).
150114 15:50:33 innobackupex: Connected to MySQL server
150114 15:50:33 innobackupex: Executing a version check against the server...
# A software update is available:
# * Security vulnerability. See http://www.mysqlperformanceblog.com/2012/09/10/introducing-the-version-check-feature-in-percona-toolkit/
150114 15:50:41 innobackupex: Done.
IMPORTANT: Please check that the backup run completes successfully.
At the end of a successful backup run innobackupex
prints "completed OK!".
innobackupex: Using mysql server version 5.5.14-log
innobackupex: Created backup directory /tmp/data
150114 15:50:41 innobackupex: Starting ibbackup with command: xtrabackup_55 --defaults-file="/etc/my.cnf" --defaults-group="mysqld" --backup --suspend-at-end --target-dir=/tmp --tmpdir=/tmp --stream=tar
innobackupex: Waiting for ibbackup (pid=25747) to suspend
innobackupex: Suspend file '/tmp/xtrabackup_suspended_2'
xtrabackup_55 version 2.1.9 for Percona Server 5.5.35 Linux (i686) (revision id: 744)
xtrabackup: uses posix_fadvise().
xtrabackup: cd to /opt/data/mysql
xtrabackup: open files limit requested 0, set to 1024
xtrabackup: using the following InnoDB configuration:
xtrabackup: innodb_data_home_dir = ./
xtrabackup: innodb_data_file_path = ibdata1:10M:autoextend
xtrabackup: innodb_log_group_home_dir = ./
xtrabackup: innodb_log_files_in_group = 2
xtrabackup: innodb_log_file_size = 5242880
>> log scanned up to (1603244)
[01] Streaming ./ibdata1
>> log scanned up to (1603244)
[01] ...done
>> log scanned up to (1603244)
xtrabackup: Creating suspend file '/tmp/xtrabackup_suspended_2' with pid '25747'
150114 15:50:44 innobackupex: Continuing after ibbackup has suspended
150114 15:50:44 innobackupex: Starting to lock all tables...
>> log scanned up to (1603244)
150114 15:50:45 innobackupex: All tables locked and flushed to disk
150114 15:50:45 innobackupex: Starting to backup non-InnoDB tables and files
innobackupex: in subdirectories of '/opt/data/mysql'
innobackupex: Backing up file '/opt/data/mysql/test/test.frm'
innobackupex: Backing up file '/opt/data/mysql/test/db.opt'
150114 15:50:45 innobackupex: Finished backing up non-InnoDB tables and files
150114 15:50:45 innobackupex: Waiting for log copying to finish
xtrabackup: The latest check point (for incremental): '1603244'
xtrabackup: Stopping log copying thread.
.>> log scanned up to (1603244)
xtrabackup: Creating suspend file '/tmp/xtrabackup_log_copied' with pid '25747'
xtrabackup: Transaction log of lsn (1603244) to (1603244) was copied.
150114 15:50:46 innobackupex: All tables unlocked
innobackupex: Backup created in directory '/tmp/data'
innobackupex: MySQL binlog position: filename 'mysql-bin.000007', position 107
150114 15:50:46 innobackupex: Connection to database server closed
innobackupex: You must use -i (--ignore-zeros) option for extraction of the tar stream.
150114 15:50:46 innobackupex: completed OK!
[root@centos64_1 data]#
可以看到备份完成了.
(3)恢复数据库
先关闭mysql服务,然后再删除test数据库文件.
[root@centos64 opt]# service mysqld stop
[root@centos64 mysql]# pwd
/opt/data/mysql
[root@centos64 mysql]# rm -rf test/
开始恢复数据库,先把之前/tmp/data里的数据库压缩版给解压。
[root@centos64_1 data]# mkdir -p /tmp/restore
[root@centos64_1 data]# tar -izxvf test-201501141550.tar.gz -C /tmp/restore
注意:这里tar解包必须使用-i参数,否则解压出来的文件只有一个backup-my.cnf
此时的目录结构如下:
[root@centos64_1 restore]# ll
total 18456
-rw-r--r-- 1 root root 260 Jan 14 15:50 backup-my.cnf
-rw-rw---- 1 root root 18874368 Jan 14 15:37 ibdata1
drwxr-xr-x 2 root root 4096 Jan 14 16:13 test
-rw-r--r-- 1 root root 13 Jan 14 15:50 xtrabackup_binary
-rw-r--r-- 1 root root 23 Jan 14 15:50 xtrabackup_binlog_info
-rw-rw---- 1 root root 89 Jan 14 15:50 xtrabackup_checkpoints
-rw-rw---- 1 root root 2560 Jan 14 15:50 xtrabackup_logfile
然后将备份文件中的日志应用到备份文件中的数据文件上。
[root@centos64_1 data]# innobackupex --user=root --password=root --apply-log /tmp/restore/
InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy
and Percona LLC and/or its affiliates 2009-2013. All Rights Reserved.
This software is published under
the GNU GENERAL PUBLIC LICENSE Version 2, June 1991.
Get the latest version of Percona XtraBackup, documentation, and help resources:
http://www.percona.com/xb/p
IMPORTANT: Please check that the apply-log run completes successfully.
At the end of a successful apply-log run innobackupex
prints "completed OK!".
150114 16:17:45 innobackupex: Starting ibbackup with command: xtrabackup_55 --defaults-file="/tmp/restore/backup-my.cnf" --defaults-group="mysqld" --prepare --target-dir=/tmp/restore --tmpdir=/tmp
xtrabackup_55 version 2.1.9 for Percona Server 5.5.35 Linux (i686) (revision id: 744)
xtrabackup: cd to /tmp/restore
xtrabackup: This target seems to be not prepared yet.
xtrabackup: xtrabackup_logfile detected: size=2097152, start_lsn=(1603244)
xtrabackup: using the following InnoDB configuration for recovery:
xtrabackup: innodb_data_home_dir = ./
xtrabackup: innodb_data_file_path = ibdata1:10M:autoextend
xtrabackup: innodb_log_group_home_dir = ./
xtrabackup: innodb_log_files_in_group = 1
xtrabackup: innodb_log_file_size = 2097152
xtrabackup: using the following InnoDB configuration for recovery:
xtrabackup: innodb_data_home_dir = ./
xtrabackup: innodb_data_file_path = ibdata1:10M:autoextend
xtrabackup: innodb_log_group_home_dir = ./
xtrabackup: innodb_log_files_in_group = 1
xtrabackup: innodb_log_file_size = 2097152
xtrabackup: Starting InnoDB instance for recovery.
xtrabackup: Using 104857600 bytes for buffer pool (set by --use-memory parameter)
150114 16:17:45 InnoDB: The InnoDB memory heap is disabled
150114 16:17:45 InnoDB: Mutexes and rw_locks use GCC atomic builtins
150114 16:17:45 InnoDB: Compressed tables use zlib 1.2.3
150114 16:17:45 InnoDB: Initializing buffer pool, size = 100.0M
150114 16:17:45 InnoDB: Completed initialization of buffer pool
150114 16:17:45 InnoDB: highest supported file format is Barracuda.
150114 16:17:46 InnoDB: Waiting for the background threads to start
150114 16:17:47 Percona XtraDB (http://www.percona.com) 5.5.35-33.0 started; log sequence number 1603244
[notice (again)]
If you use binary log and don't use any hack of group commit,
the binary log position seems to be:
InnoDB: Last MySQL binlog file position 0 2263, file name ./mysql-bin.000004
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
150114 16:17:47 InnoDB: Starting shutdown...
150114 16:17:51 InnoDB: Shutdown completed; log sequence number 1604458
150114 16:17:51 innobackupex: Restarting xtrabackup with command: xtrabackup_55 --defaults-file="/tmp/restore/backup-my.cnf" --defaults-group="mysqld" --prepare --target-dir=/tmp/restore --tmpdir=/tmp
for creating ib_logfile*
xtrabackup_55 version 2.1.9 for Percona Server 5.5.35 Linux (i686) (revision id: 744)
xtrabackup: cd to /tmp/restore
xtrabackup: This target seems to be already prepared.
xtrabackup: notice: xtrabackup_logfile was already used to '--prepare'.
xtrabackup: using the following InnoDB configuration for recovery:
xtrabackup: innodb_data_home_dir = ./
xtrabackup: innodb_data_file_path = ibdata1:10M:autoextend
xtrabackup: innodb_log_group_home_dir = ./
xtrabackup: innodb_log_files_in_group = 2
xtrabackup: innodb_log_file_size = 5242880
xtrabackup: using the following InnoDB configuration for recovery:
xtrabackup: innodb_data_home_dir = ./
xtrabackup: innodb_data_file_path = ibdata1:10M:autoextend
xtrabackup: innodb_log_group_home_dir = ./
xtrabackup: innodb_log_files_in_group = 2
xtrabackup: innodb_log_file_size = 5242880
xtrabackup: Starting InnoDB instance for recovery.
xtrabackup: Using 104857600 bytes for buffer pool (set by --use-memory parameter)
150114 16:17:51 InnoDB: The InnoDB memory heap is disabled
150114 16:17:51 InnoDB: Mutexes and rw_locks use GCC atomic builtins
150114 16:17:51 InnoDB: Compressed tables use zlib 1.2.3
150114 16:17:51 InnoDB: Initializing buffer pool, size = 100.0M
150114 16:17:51 InnoDB: Completed initialization of buffer pool
150114 16:17:51 InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 5 MB
InnoDB: Database physically writes the file full: wait...
150114 16:17:51 InnoDB: Log file ./ib_logfile1 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile1 size to 5 MB
InnoDB: Database physically writes the file full: wait...
150114 16:17:51 InnoDB: highest supported file format is Barracuda.
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
150114 16:17:51 InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Last MySQL binlog file position 0 2263, file name ./mysql-bin.000004
150114 16:17:52 InnoDB: Waiting for the background threads to start
150114 16:17:53 Percona XtraDB (http://www.percona.com) 5.5.35-33.0 started; log sequence number 1604620
[notice (again)]
If you use binary log and don't use any hack of group commit,
the binary log position seems to be:
InnoDB: Last MySQL binlog file position 0 2263, file name ./mysql-bin.000004
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
150114 16:17:53 InnoDB: Starting shutdown...
150114 16:17:57 InnoDB: Shutdown completed; log sequence number 1604620
150114 16:17:57 innobackupex: completed OK!
[root@centos64_1 data]#
此时的目录结构如下:
[root@centos64_1 restore]# ll
total 30744
-rw-r--r-- 1 root root 260 Jan 14 15:50 backup-my.cnf
-rw-rw---- 1 root root 18874368 Jan 14 16:17 ibdata1
-rw-r--r-- 1 root root 5242880 Jan 14 16:17 ib_logfile0
-rw-r--r-- 1 root root 5242880 Jan 14 16:17 ib_logfile1
drwxr-xr-x 2 root root 4096 Jan 14 16:13 test
-rw-r--r-- 1 root root 13 Jan 14 15:50 xtrabackup_binary
-rw-r--r-- 1 root root 23 Jan 14 15:50 xtrabackup_binlog_info
-rw-r--r-- 1 root root 24 Jan 14 16:17 xtrabackup_binlog_pos_innodb
-rw-rw---- 1 root root 89 Jan 14 16:17 xtrabackup_checkpoints
-rw-rw---- 1 root root 2097152 Jan 14 16:17 xtrabackup_logfile
[root@centos64_1 restore]#
这里的--apply-log指明是将日志应用到数据文件上,完成之后将备份文件中的数据恢复到数据库中。
把test目录复制到/opt/data/mysql目录 中:
[root@centos64_1 restore]# rsync -avz test ib* /opt/data/mysql/
然后再修改test的用户与组为mysql:
[root@centos64_1 mysql]# chown -R mysql:mysql test
[root@centos64_1 mysql]# chown mysql.mysql ib*
然后启动mysql,并查看test数据库的表里内容。
[root@centos64_1 mysql]# service mysqld start
mysql> use test;
Database changed
mysql> select * from test;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
+------+
5 rows in set (0.05 sec)
mysql>
可以看到数据库已经恢复完成。
可能大家有个疑问,为什么我这里不像很多网上的文章里是在apply-log后,使用copy-back如果使用/usr/bin/innobackupex --copy-back命令后,会报Original data directory is not empty! at /usr/local/xtrabackup/bin/innobackupex line 538.恢复的目录必须为空。经查官网,这是xtrabackup的一个BUG。
innobackupex�Ccopy-back was run. With this bug fix, innobackupex�Ccopy-back operation if the destination is not empty, avoiding potential data loss or a strang combination of a restored backup and previous data. Bug Fixed: #737569 (Valentine Gostev) will now error out of the did not check that MySQL datadir was empty before
所以在apply-log后直接复制数据目录到数据库的位置上吧。
三、对数据库的增量备份与恢复
为了进行增量备份,先对数据库添加一些数据:
mysql> insert into test values(11);
mysql> insert into test values(12);
mysql> insert into test values(13);
mysql> insert into test values(14);
mysql> insert into test values(15);
mysql> flush privileges;
然后进行增量的备份:
[root@centos64 data]# innobackupex --user=root --password=root --database=test --incremental --incremental-basedir=/tmp/restore/ /tmp/data
InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy
and Percona LLC and/or its affiliates 2009-2013. All Rights Reserved.
This software is published under
the GNU GENERAL PUBLIC LICENSE Version 2, June 1991.
Get the latest version of Percona XtraBackup, documentation, and help resources:
http://www.percona.com/xb/p
150114 17:30:14 innobackupex: Connecting to MySQL server with DSN 'dbi:mysql:;mysql_read_default_group=xtrabackup' as 'root' (using password: YES).
150114 17:30:14 innobackupex: Connected to MySQL server
150114 17:30:14 innobackupex: Executing a version check against the server...
150114 17:30:14 innobackupex: Done.
IMPORTANT: Please check that the backup run completes successfully.
At the end of a successful backup run innobackupex
prints "completed OK!".
innobackupex: Using mysql server version 5.5.14-log
innobackupex: Created backup directory /tmp/data/2015-01-14_17-30-14
150114 17:30:14 innobackupex: Starting ibbackup with command: xtrabackup_55 --defaults-group="mysqld" --backup --suspend-at-end --target-dir=/tmp/data/2015-01-14_17-30-14 --tmpdir=/tmp --incremental-basedir='/tmp/restore/'
innobackupex: Waiting for ibbackup (pid=28406) to suspend
innobackupex: Suspend file '/tmp/data/2015-01-14_17-30-14/xtrabackup_suspended_2'
xtrabackup_55 version 2.1.9 for Percona Server 5.5.35 Linux (i686) (revision id: 744)
incremental backup from 1603244 is enabled.
xtrabackup: uses posix_fadvise().
xtrabackup: cd to /opt/data/mysql
xtrabackup: open files limit requested 0, set to 1024
xtrabackup: using the following InnoDB configuration:
xtrabackup: innodb_data_home_dir = ./
xtrabackup: innodb_data_file_path = ibdata1:10M:autoextend
xtrabackup: innodb_log_group_home_dir = ./
xtrabackup: innodb_log_files_in_group = 2
xtrabackup: innodb_log_file_size = 5242880
>> log scanned up to (1606817)
xtrabackup: using the full scan for incremental backup
>> log scanned up to (1606817)
>> log scanned up to (1606817)
>> log scanned up to (1606817)
>> log scanned up to (1606817)
>> log scanned up to (1606817)
>> log scanned up to (1606817)
>> log scanned up to (1606817)
>> log scanned up to (1606817)
>> log scanned up to (1606817)
>> log scanned up to (1606817)
>> log scanned up to (1606817)
>> log scanned up to (1606817)
>> log scanned up to (1606817)
>> log scanned up to (1606817)
>> log scanned up to (1606817)
>> log scanned up to (1606817)
>> log scanned up to (1606817)
>> log scanned up to (1606817)
>> log scanned up to (1606817)
>> log scanned up to (1606817)
>> log scanned up to (1606817)
>> log scanned up to (1606817)
>> log scanned up to (1606817)
>> log scanned up to (1606817)
[01] Copying ./ibdata1 to /tmp/data/2015-01-14_17-30-14/ibdata1.delta
>> log scanned up to (1606817)
[01] ...done
>> log scanned up to (1606817)
xtrabackup: Creating suspend file '/tmp/data/2015-01-14_17-30-14/xtrabackup_suspended_2' with pid '28406'
150114 17:30:41 innobackupex: Continuing after ibbackup has suspended
150114 17:30:41 innobackupex: Starting to lock all tables...
150114 17:30:41 innobackupex: All tables locked and flushed to disk
150114 17:30:41 innobackupex: Starting to backup non-InnoDB tables and files
innobackupex: in subdirectories of '/opt/data/mysql'
innobackupex: Backing up file '/opt/data/mysql/test/test.frm'
innobackupex: Backing up file '/opt/data/mysql/test/db.opt'
150114 17:30:42 innobackupex: Finished backing up non-InnoDB tables and files
150114 17:30:42 innobackupex: Waiting for log copying to finish
xtrabackup: The latest check point (for incremental): '1606817'
xtrabackup: Stopping log copying thread.
.>> log scanned up to (1606817)
xtrabackup: Creating suspend file '/tmp/data/2015-01-14_17-30-14/xtrabackup_log_copied' with pid '28406'
xtrabackup: Transaction log of lsn (1606817) to (1606817) was copied.
150114 17:30:43 innobackupex: All tables unlocked
innobackupex: Backup created in directory '/tmp/data/2015-01-14_17-30-14'
innobackupex: MySQL binlog position: filename 'mysql-bin.000008', position 1111
150114 17:30:43 innobackupex: Connection to database server closed
150114 17:30:43 innobackupex: completed OK!
[root@centos64 data]#
其中,--incremental指明是增量备份,--incremental-basedir指定上次完整备份或者增量备份文件的位置。这里的增量备份其实只针对的是InnoDB,对于MyISAM来说,还是完整备份。
在进行增量备份的恢复之前,先关闭数据库,然后删除数据库test。
[root@centos64 data]# service mysqld stop
[root@centos64_1 mysql]# rm -rf test/
增量备份的恢复:
[root@centos64 data]# innobackupex -user=root --password=root --defaults-file=/etc/my.cnf --apply-log /tmp/restore/ --incremental-dir=/tmp/data/2015-01-14_17-30-14/
InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oy
and Percona LLC and/or its affiliates 2009-2013. All Rights Reserved.
This software is published under
the GNU GENERAL PUBLIC LICENSE Version 2, June 1991.
Get the latest version of Percona XtraBackup, documentation, and help resources:
http://www.percona.com/xb/p
IMPORTANT: Please check that the apply-log run completes successfully.
At the end of a successful apply-log run innobackupex
prints "completed OK!".
150114 17:36:54 innobackupex: Starting ibbackup with command: xtrabackup_55 --defaults-file="/etc/my.cnf" --defaults-group="mysqld" --prepare --target-dir=/tmp/restore --incremental-dir=/tmp/data/2015-01-14_17-30-14/ --tmpdir=/tmp
xtrabackup_55 version 2.1.9 for Percona Server 5.5.35 Linux (i686) (revision id: 744)
incremental backup from 1603244 is enabled.
xtrabackup: cd to /tmp/restore
xtrabackup: This target seems to be already prepared.
xtrabackup: xtrabackup_logfile detected: size=2097152, start_lsn=(1606817)
xtrabackup: using the following InnoDB configuration for recovery:
xtrabackup: innodb_data_home_dir = ./
xtrabackup: innodb_data_file_path = ibdata1:10M:autoextend
xtrabackup: innodb_log_group_home_dir = /tmp/data/2015-01-14_17-30-14/
xtrabackup: innodb_log_files_in_group = 1
xtrabackup: innodb_log_file_size = 2097152
xtrabackup: page size for /tmp/data/2015-01-14_17-30-14//ibdata1.delta is 16384 bytes
Applying /tmp/data/2015-01-14_17-30-14//ibdata1.delta to ././ibdata1...
xtrabackup: using the following InnoDB configuration for recovery:
xtrabackup: innodb_data_home_dir = ./
xtrabackup: innodb_data_file_path = ibdata1:10M:autoextend
xtrabackup: innodb_log_group_home_dir = /tmp/data/2015-01-14_17-30-14/
xtrabackup: innodb_log_files_in_group = 1
xtrabackup: innodb_log_file_size = 2097152
xtrabackup: Starting InnoDB instance for recovery.
xtrabackup: Using 104857600 bytes for buffer pool (set by --use-memory parameter)
150114 17:36:54 InnoDB: The InnoDB memory heap is disabled
150114 17:36:54 InnoDB: Mutexes and rw_locks use GCC atomic builtins
150114 17:36:54 InnoDB: Compressed tables use zlib 1.2.3
150114 17:36:57 InnoDB: Initializing buffer pool, size = 100.0M
150114 17:36:59 InnoDB: Completed initialization of buffer pool
150114 17:36:59 InnoDB: highest supported file format is Barracuda.
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
150114 17:36:59 InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Last MySQL binlog file position 0 1032, file name ./mysql-bin.000008
150114 17:37:02 Percona XtraDB (http://www.percona.com) 5.5.35-33.0 started; log sequence number 1606817
[notice (again)]
If you use binary log and don't use any hack of group commit,
the binary log position seems to be:
InnoDB: Last MySQL binlog file position 0 1032, file name ./mysql-bin.000008
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
150114 17:37:02 InnoDB: Starting shutdown...
150114 17:37:07 InnoDB: Shutdown completed; log sequence number 1606817
innobackupex: Starting to copy non-InnoDB files in '/tmp/data/2015-01-14_17-30-14/'
innobackupex: to the full backup directory '/tmp/restore'
innobackupex: Copying '/tmp/data/2015-01-14_17-30-14/xtrabackup_binlog_info' to '/tmp/restore/xtrabackup_binlog_info'
innobackupex: Copying '/tmp/data/2015-01-14_17-30-14/test/test.frm' to '/tmp/restore/test/test.frm'
innobackupex: Copying '/tmp/data/2015-01-14_17-30-14/test/db.opt' to '/tmp/restore/test/db.opt'
150114 17:37:07 innobackupex: completed OK!
[root@centos64 data]#
然后再进入恢复的目录/tmp/data,跟全部备份一样,把test恢复到/opt/data/mysql里:
[root@centos64 2015-01-14_17-30-14]# rsync -avz test ib* /opt/data/mysql/
sending incremental file list
ibdata1.delta
ibdata1.meta
test/
test/db.opt
test/test.frm
sent 5454 bytes received 92 bytes 11092.00 bytes/sec
total size is 385493 speedup is 69.51
[root@centos64 2015-01-14_17-30-14]#
[root@centos64_1 mysql]# chown -R mysql:mysql test/ ib*
然后启动msyql,并查看test数据库里test表的内容:
[root@centos64_1 mysql]# service mysqld start
mysql> use test;
Database changed
mysql> select * from test;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 11 |
| 12 |
| 13 |
| 14 |
| 15 |
+------+
10 rows in set (0.00 sec)
至此增量备份已经恢复完成。