MySQL常用工具(三):热备工具innobackupex-backup文件夹

MySQL常用工具(三):热备工具innobackupex-backup文件夹

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

推荐阅读