xtrabackup备份恢复Mysql

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介:

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),以达到数据的一致性。
备份分为两个过程:

  1. backup,备份阶段,追踪事务日志和复制数据文件(物理备份)。

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

XtraBackup的优点

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

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

  3. 节约磁盘空间和网络带宽

  4. 自动完成备份鉴定

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

一、安装percona-xtrabackup

1.官网下载

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

3.rpm -ivh 安装包.rpm

二、innobackupex备份全库

1.备份

1
2
innobackupex --defaults- file = /usr/local/mysql_2/my .cnf 
--user=root --password=password  --socket= /tmp/mysql_2 .sock  /usr/local/backup

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

2.恢复

1
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

三、全量备份及恢复

  1. 备份

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.恢复

1
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/

1
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/

执行两次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.先全量备份:

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.在全量的基础上增量备份: 

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/incre/1  --incremental-basedir= /usr/local/backup/base/2016-2-10/

3.恢复

1
mysql>drop database db3;
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/
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/  --incremental- dir = /usr/local/backup/incre/1/
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是否恢复




      本文转自YU文武貝 51CTO博客,原文链接:,http://blog.51cto.com/linuxerxy/1741522如需转载请自行联系原作者






相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
10月前
|
存储 关系型数据库 MySQL
利用Xtrabackup进行mysql增量备份和全量备份
利用Xtrabackup进行mysql增量备份和全量备份
114 0
|
4月前
|
存储 关系型数据库 MySQL
利用Xtrabackup进行mysql增量备份和全量备份
利用Xtrabackup进行mysql增量备份和全量备份
210 0
|
5月前
|
关系型数据库 MySQL 数据库
零基础带你学习MySQL—备份恢复数据库(三)
零基础带你学习MySQL—备份恢复数据库(三)
|
6月前
|
关系型数据库 MySQL 数据库
HBR混合云备份的MySQL云备份底层使用的是xtrabackup吗?
HBR混合云备份的MySQL云备份底层使用的是xtrabackup吗?
36 1
|
5月前
|
关系型数据库 MySQL 数据库
xtrabackup 备份还原mysql
通过使用xtrabackup 备份还原mysql数据库
47 3
|
9月前
|
关系型数据库 MySQL 测试技术
MySQL备份恢复-2
MySQL备份恢复-2
66 0
|
9月前
|
存储 安全 关系型数据库
MySQL备份恢复
MySQL备份恢复
65 0
|
11月前
|
SQL 关系型数据库 MySQL
xtrabackup备份MySQL超时的解决办法
xtrabackup备份MySQL时,可能会出现拿不到锁而超时失败的现象,这里说明解决办法。
135 0
|
12月前
|
存储 关系型数据库 MySQL
|
12月前
|
SQL 监控 关系型数据库
MySQL 备份恢复
MySQL 备份恢复