innobackupex 支持所有mysql引擎数据备份恢复安装配置方法及原理介绍,访问下面链接
http://michaelkang.blog.51cto.com/1553154/1216826
1.测试环境介绍
#mysql数据目录
/data/3306/data
#备份文件存放目录
/data/3306/backup
#mysql配置文件位置
/data/3306/my.cnf
#备份前首先所需要建立一个备份所需的目录
mkdir -p /data/3306/backup
mysql 版本 :
[root@slave2 3306]# mysql -V
mysql Ver 14.14 Distrib 5.5.25, for Linux (x86_64) using EditLine wrapper
系统版本:
more /etc/redhat-release
CentOS release 6.2 (Final)
内核版本:
[root@slave2 3306]# uname -a
Linux slave2 2.6.32-220.el6.x86_64 #1 SMP Tue Dec 6 19:48:22 GMT 2011 x86_64 x86_64 x86_64 GNU/Linux
step:1
首先查看现有数据库文件;
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| ptmind_common |
+--------------------+
5 rows in set (0.00 sec)
step:2(测试全备)
在此基础上执行数据库全备
innobackupex --defaults-file=/data/3306/my.cnf --user=root /data/3306/backup/ 2>/data/3306/backup/mysqlbackup$(date +%Y-%m-%d_%H_%M_%S).log
2>/data/3306/backup/mysqlbackup$(date +%Y-%m-%d_%H_%M_%S).log是 将备份过程中的输出信息保存到mysqlbackup.log中,以下测试步骤中如果想备份输出日志打印到日志也可以添加此选项。
step:3
检查备份文件是否生成
[root@slave2 backup]# pwd
/data/3306/backup
[root@slave2 backup]# ll
total 8
drwxr-xr-x 6 root root 4096 Jun 4 19:04 2013-06-04_18-43-19 #全备文件夹
内容如下:
[root@slave2 backup]# ll 2013-06-04_18-43-19
total 1536564
-rw-r--r-- 1 root root 262 Jun 4 18:43 backup-my.cnf
-rw-r----- 1 root root 1570766848 Jun 4 19:04 ibdata1
drwxr-xr-x 2 root root 4096 Jun 4 19:04 kk
drwxr-xr-x 2 root root 4096 Jun 4 18:45 mysql
drwxr-xr-x 2 root root 4096 Jun 4 18:45 performance_schema
drwxr-xr-x 2 root root 540672 Jun 4 19:04 ptmind_common
-rw-r--r-- 1 root root 13 Jun 4 18:45 xtrabackup_binary
-rw-r--r-- 1 root root 25 Jun 4 19:04 xtrabackup_binlog_info
-rw-r----- 1 root root 95 Jun 4 19:04 xtrabackup_checkpoints
-rw-r----- 1 root root 2097152 Jun 4 19:01 xtrabackup_logfile
step:4(测试增量备份)
首先在在数据库新建一个数据库,并导入一点数据;
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| kk |
| mysql |
| performance_schema |
| ptmind_common |
+--------------------+
5 rows in set (0.00 sec)
mysql> use kk;
Database changed
mysql> show tables; #查看一下数据库表
+-----------------------------+
| Tables_in_kk |
+-----------------------------+
| Copy_(ref_backup_conf)_of_2 |
| Copy_of_ref_backup_conf |
| ref_backup_conf |
+-----------------------------+
3 rows in set (0.00 sec)
step:5 执行增量备份
Innobackupex针对某个库增量备份:
增量备份仅针对InnoDB这类支持事务的引擎,对于MyISAM等引擎,则仍然是全备了。
innobackupex --defaults-file=/data/3306/my.cnf --incremental --incremental-basedir=/data/3306/backup/2013-06-04_18-43-19 /data/3306/backup/ 2>/data/3306/backup/mysqlbackup$(date +%Y-%m-%d_%H_%M_%S).log
--incremental-basedir=/data/3306/backup/2013-06-04_18-43-19 #制定增量备份基于全亮备份文件;
step:6
验证备份文件是否生成
[root@slave2 backup]# du -sh *
1.5G 2013-06-04_18-43-19
17M 2013-06-04_18-53-33 #新生成增量备份文件,从文件大小可以看出只备份少量文件;
文件内容如下:
[root@slave2 backup]# ll 2013-06-04_18-53-33/
total 4752
-rw-r--r-- 1 root root 262 Jun 4 18:53 backup-my.cnf
-rw-r----- 1 root root 2195456 Jun 4 18:53 ibdata1.delta
-rw-r----- 1 root root 44 Jun 4 18:53 ibdata1.meta
drwxr-xr-x 2 root root 4096 Jun 4 18:53 kk
drwxr-xr-x 2 root root 4096 Jun 4 18:54 mysql
drwxr-xr-x 2 root root 4096 Jun 4 18:54 performance_schema
drwxr-xr-x 2 root root 540672 Jun 4 18:54 ptmind_common
-rw-r--r-- 1 root root 13 Jun 4 18:54 xtrabackup_binary
-rw-r--r-- 1 root root 25 Jun 4 18:53 xtrabackup_binlog_info
-rw-r----- 1 root root 102 Jun 4 18:54 xtrabackup_checkpoints
-rw-r----- 1 root root 2097152 Jun 4 19:04 xtrabackup_logfile
开始数据恢复测试;
step:7
删除/data/下文件夹,模拟数据丢失;
rm -rf /data/3306/data/*
step:8
首先全备恢复
innobackupex --defaults-file=/data/3306/my.cnf --user=root --apply-log --redo-only /data/3306/backup/2013-06-04_18-43-19
step:9
增量备份恢复
innobackupex --defaults-file=/data/3306/my.cnf --user=root --apply-log --redo-only /data/3306/backup/2013-06-04_18-43-19 --incremental-dir=/data/3306/backup/2013-06-04_18-53-33
step: 10
copy备份数据文件到原来数据位置
innobackupex-1.5.1 --defaults-file=/data/3306/my.cnf --user=root --copy-back /data/3306/backup/2013-06-04_18-43-19/
step:11
修改数据文件权限为mysql
chown mysql.mysql -R data
step:12
验证数据库已经恢复
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| kk | #新建一个KK的库
| mysql |
| performance_schema |
| ptmind_common |
+--------------------+
5 rows in set (0.00 sec)
ok,经过以上步骤顺利完成了使用innobackupex的数据本地备份恢复工作;