1、innobackupex原理:
备份原理
1)、首先会开启一个后台检测进程,实时检测myql redo的变化,一旦发现redo中有新日志写入,立即将日志记入后台日志文件xtrabackup_log中
2)、复制innodb的数据文件和系统表空间文件ibdata1
3)、执行flush tables with read lock操作(防止数据表发生DDL操作,并且在这一时刻获得binlog的位置),复制.frm、.MYI、.MYD等文件
恢复原理
1)、启动xtrabackup内嵌的innodb实例
2)、回放xtrabackup日志xtrabackup_log
3)、将提交的事务信息变更应用到innodb数据/表空间,同时回滚未提交的事务。
2、操作模拟
操作目的:不停库的情况下将10.200.70.185的数据备份并恢复到10.200.70.183中
操作系统:centos 6.5
innobackupex版本:1.5.1
操作如下
1)、全备(在10.200.70.185上操作)
# cd /home/mysql
# mkdir data
# innobackupex --user=root password=martin --defaults-file=/usr/local/mysql/data/my.cnf -- data/
会在当前路径下的data文件夹下生成当前时间的文件夹
# ls ./data
2016-12-22_21-07-10
2)、数据传输(在10.200.70.185上操作)
# cd /home/mysql/data
# scp -r 2016-12-22_21-07-10 10.200.70.183:/home/mysql/datadir
会将185上的全备数据传输到183的/home/mysql/datadir(如没有改文件夹,scp之前需要在183上新建)
在10.200.70.183上操作
3)、应用日志
# cd /home/mysql/datadir
# innobackupex --apply-log ./2016-12-22_21-07-10/
4)、停库并清空data下的数据
# /etc/init.d/mysql.server stop
# cd /usr/local/mysql/
# mv data data_old
# mkdir data
# cp data_old/my.cnf data/
5)、拷贝文件
# innobackupex --defaults-file=/usr/local/mysql/data/my.cnf --copy-back /home/mysql/datadir/2016-12-22_21-07-10/
6)、启动数据库
先更改属主
# chown -R mysql.mysql /usr/local/mysql
启动
# /etc/init.d/mysql.server start