innobackupex 支持所有mysql引擎数据备份恢复安装配置方法及原理介绍,访问下面链接
http://michaelkang.blog.51cto.com/1553154/1216826
测试环境介绍:
#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
本地IP:92.168.1.199
远端服务器IP:192.168.1.200
系统环境同“4.1测试环境介绍”
目的:备份当前机器下的数据到192.168.1.200的/data/3306/backup/目录下,进行数据恢复启动。(建立主从同步时使用)
step:1
查看本地数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| ptmind |
| ptmind_common |
+--------------------+
5 rows in set (0.29 sec)
mysql> use ptmind_common;
Database changed
mysql> show tables;
+------------------------------------+
| Tables_in_ptmind_common |
+------------------------------------+
| dtl_full_pv_detail |
中间省略|
| tst_pn_detail |
| tst_pv_detail |
+------------------------------------+
60 rows in set (0.00 sec)
step:2
我为了方便做了证书,导入到了对端服务器,另外发现如果两台服务器不做无密码认证,从本地往远端服务器无法备份。
证书生成及导入到对端服务器操作如下:
ssh-keygen
ssh-copy-id [email protected]
step:3
备份当前机器下的所有数据到192.168.1.200的/data/3306/backup/目录下
备份命令1
innobackupex --user=root --defaults-file=/data/3306/my.cnf --stream=tar /data/3306/data | ssh [email protected] cat ">" /data/3306/backup/test.tar
备份命令2
innobackupex --user=root --defaults-file=/data/3306/my.cnf --stream=tar /data/3306/data|ssh [email protected] cat ">"/data/3306/backup/mysqlbackup$(date +%Y-%m-%d_%H_%M_%S).tar
参数解释:
–stream=tar : 告诉xtrabackup,备份需要以tar的文件流方式输出。
--no-lock的选项说明:
Use this option to disable table lock with "FLUSH TABLES WITH READ
LOCK". Use it only if ALL your tables are InnoDB and you DO NOT CARE
about the binary log position of the backup.
no-lock 参数用于指定备份时不锁定表。
--database:可以指定要备份的库 --database="ptmind_common kk"
建议使用2组参数,在远端机器生成的文件名按日期命名,mysqlbackup2013-06-04_15_30_50.tar
step:4
核实备份文件:
远端服务器生成备份文件;
[root@slave2 backup]# du -sh *
1.5G mysqlbackup2013-06-04_16_23_23.tar
在本地生成一个全备文件,对比两边生成全备文件大小是否一至。
innobackupex --defaults-file=/data/3306/my.cnf --user=root /data/3306/backup/
[root@slave1 backup]# du -sh *
1.5G 2013-06-04_16-36-03
经对比发现本地和远端生成备份文件大小一致,
本地备份文件内容如下:
[root@slave1 backup]# ll 2013-06-04_16-36-03/
total 1534520
-rw-r--r-- 1 root root 262 Jun 4 16:36 backup-my.cnf
-rw-r----- 1 root root 1570766848 Jun 4 16:36 ibdata1
drwxr-xr-x 2 root root 4096 Jun 4 16:38 mysql
drwxr-xr-x 2 root root 4096 Jun 4 16:37 performance_schema
drwxr-xr-x 2 root root 4096 Jun 4 16:37 ptmind
drwxr-xr-x 2 root root 540672 Jun 4 16:37 ptmind_common
-rw-r--r-- 1 root root 13 Jun 4 16:38 xtrabackup_binary
-rw-r--r-- 1 root root 23 Jun 4 16:36 xtrabackup_binlog_info
-rw-r----- 1 root root 95 Jun 4 16:38 xtrabackup_checkpoints
-rw-r----- 1 root root 2560 Jun 4 16:38 xtrabackup_logfile
解压远端服务器备份文件,查看内容如下:
[root@slave2 backup]# tar -ixvf mysqlbackup2013-06-04_16_23_23.tar
backup-my.cnf
ibdata1
xtrabackup_logfile
xtrabackup_checkpoints
xtrabackup_binary
查看远端解压完成的数据,进行对比和本地备份的文件一致
[root@slave2 backup]# ll
total 3121060
-rw-r--r-- 1 root root 262 Jun 4 16:54 backup-my.cnf
-rw-rw---- 1 root root 1570766848 Jun 4 01:35 ibdata1
drwxr-xr-x 2 root root 4096 Jun 4 17:01 mysql
drwxr-xr-x 2 root root 4096 Jun 4 17:01 performance_schema
drwxr-xr-x 2 root root 4096 Jun 4 17:01 ptmind
drwxr-xr-x 2 root root 393216 Jun 4 17:01 ptmind_common
-rw-r--r-- 1 root root 13 Jun 4 16:57 xtrabackup_binary
-rw-r--r-- 1 root root 23 Jun 4 16:56 xtrabackup_binlog_info
-rw-rw---- 1 root root 95 Jun 4 16:57 xtrabackup_checkpoints
-rw-rw---- 1 root root 2560 Jun 4 16:57 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/
step: 9
copy备份数据文件到原来数据位置
innobackupex-1.5.1 --defaults-file=/data/3306/my.cnf --user=root --copy-back /data/3306/backup/
step:10
修改数据文件权限为mysql
chown mysql.mysql -R data
[root@slave2 3306]# /etc/init.d/mysqld start
Starting MySQL................. SUCCESS!
step:11
查看验证本地数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| ptmind |
| ptmind_common |
+--------------------+
5 rows in set (0.29 sec)
mysql> use ptmind_common;
Database changed
mysql> show tables;
+------------------------------------+
| Tables_in_ptmind_common |
+------------------------------------+
| dtl_full_pv_detail |
中间省略|
| tst_pn_detail |
| tst_pv_detail |
+------------------------------------+
60 rows in set (0.00 sec)
ok,经过以上步骤顺利完成了使用innobackupex备份工具将本地数据备份到远端服务器并进行数据恢复的过程;