mysql xtrabackup还原_xtrabackup备份恢复Mysql

Mysql增量备份Xtrabackup中包含两个工具:xtrabackup - 用于热备份innodb, xtradb表的工具,不能备份其他表(MYISAM表)。innobackupex - 对xtrabackup封装的perl脚本,提供了myisam表备份的能力。(能进行整库和数据表备份)。

MySQL主从同步原理

MySQL主从同步是在MySQL主从复制(Master-Slave Replication)基础上实现的,通过设置在Master MySQL上的binlog(使其处于打开状态),Slave MySQL上通过一个I/O线程从Master MySQL上读取binlog,然后传输到Slave MySQL的中继日志中,然后Slave MySQL的SQL线程从中继日志中读取中继日志,然后应用到Slave MySQL的数据库中。这样实现了主从数据同步功能。

XtraBackup备份原理

innobackupex在后台线程不断追踪InnoDB的日志文件,然后复制InnoDB的数据文件。数据文件复制完成之后,日志的复制线程也会结束。这样就得到了不在同一时间点的数据副本和开始备份以后的事务日志。完成上面的步骤之后,就可以使用InnoDB崩溃恢复代码执行事务日志(redo log),以达到数据的一致性。

备份分为两个过程:backup,备份阶段,追踪事务日志和复制数据文件(物理备份)。

preparing,重放事务日志,使所有的数据处于同一个时间点,达到一致性状态。

XtraBackup的优点可以快速可靠的完成数据备份(复制数据文件和追踪事务日志)

数据备份过程中不会中断事务的处理(热备份)

节约磁盘空间和网络带宽

自动完成备份鉴定

因更快的恢复时间而提高在线时间

一、安装percona-xtrabackup

1.官网下载

2.yum -y install perl perl-devel libaio libaio-develperl-Time-HiRes perl-DBD-MySQ

3.rpm -ivh 安装包.rpm

二、innobackupex备份全库

1.备份innobackupex --defaults-file=/usr/local/mysql_2/my.cnf

--user=root --password=password  --socket=/tmp/mysql_2.sock /usr/local/backup

当然也可以只备份指定的库和表

2.恢复innobackupex --defaults-file=/usr/local/mysql_2/my.cnf --socket=/tmp/mysql_2.sock --user=root --password=password --apply-log /usr/local/backup/2016-01-26_18-32-02

innobackupex --defaults-file=/usr/local/mysql_2/my.cnf --socket=/tmp/mysql_2.sock --user=root --password=password --copy-back  /usr/local/backup/2016-01-26_18-32-02

三、全量备份及恢复备份xtrabackup --defaults-file=/usr/local/mysql_2/my.cnf --user=root --password=password --socket=/tmp/mysql_2.sock --backup --target-dir=/usr/local/backup/base/2016-2-10

2.恢复xtrabackup --defaults-file=/usr/local/mysql_2/my.cnf --user=root --password=password

--socket=/tmp/mysql_2.sock --prepare --target-dir=/usr/local/backup/base/2016-2-10/

xtrabackup --defaults-file=/usr/local/mysql_2/my.cnf --user=root --password=password

--socket=/tmp/mysql_2.sock --prepare --target-dir=/usr/local/backup/base/2016-2-10/

执行两次prepare,是因为第二次prepare会帮助我们生成redo log文件(重做日志文件),加快MySQL数据库启动的速度

3.

//将数据库停掉

#/etc/init.d/mysqld stop

//删除数据库目录下的ib*(ib开头的所有)文件。

#rm  /data/mysql_2/ib*

//将/usr/local/Backup/base/2016-2-10目录下的ib*文件拷贝到数据库目录。

#cd /data/mysql_2/

#cp /usr/local/Backup/base/2016-2-10/ib* ./

#chown -R mysql:mysql /data/mysql_2/

4.重启mysql,进入mysql检查是否恢复

四、增量备份及恢复

1.先全量备份:xtrabackup --defaults-file=/usr/local/mysql_2/my.cnf --user=root --password=password --socket=/tmp/mysql_2.sock --backup --target-dir=/usr/local/backup/base/2016-2-10

2.在全量的基础上增量备份:xtrabackup --defaults-file=/usr/local/mysql_2/my.cnf --user=root --password=password --socket=/tmp/mysql_2.sock --backup --target-dir=/usr/local/backup/incre/1 --incremental-basedir=/usr/local/backup/base/2016-2-10/

3.恢复mysql>drop database db3;xtrabackup --defaults-file=/usr/local/mysql_2/my.cnf --user=root --password=password --socket=/tmp/mysql_2.sock --prepare --apply-log-only --target-dir=/usr/local/backup/base/2016-2-10/xtrabackup --defaults-file=/usr/local/mysql_2/my.cnf --user=root --password=password --socket=/tmp/mysql_2.sock --prepare --apply-log-only --target-dir=/usr/local/backup/base/2016-2-10/ --incremental-dir=/usr/local/backup/incre/1/xtrabackup --defaults-file=/usr/local/mysql_2/my.cnf --user=root --password=password --socket=/tmp/mysql_2.sock --prepare --apply-log-only --target-dir=/usr/local/backup/base/2016-2-10/

增量备份也可以在前一个增量备份的基础继续增量备份,只不过这种方法会比较不安全,丢失前面的增量备份将导致后面的增量备份全都失效。

4.

//将数据库停掉

#/etc/init.d/mysqld stop

//删除数据库目录下的ib*(ib开头的所有)文件。

#rm  /data/mysql_2/ib*

//将/usr/local/Backup/base/2016-2-10目录下的ib*文件拷贝到数据库目录。

#cd /data/mysql_2/

#cp /usr/local/Backup/base/2016-2-10/ib* ./

#cp -r /usr/local/Backup/base/2016-2-10/db3 ./

#chown -R mysql:mysql /data/mysql_2/

4.重启mysql,进入mysql检查db3是否恢复

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值