文档章节

xtrabackup对MySQL数据库的备份及恢复

ZhouLS
 ZhouLS
发布于 2013/09/26 11:26
字数 1739
阅读 2138
收藏 117
xtrabackup 是 percona 的一个开源项目,可以热备份innodb ,XtraDB,和MyISAM(会锁表)
对MyISAM存储引擎会锁表,也是很郁闷的因为线上使用的是Innodb和MyISAM两种存储引擎,比较头疼!!
Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品
Percona? 
MySqL的衍生版 Percona Server
Percona 为 MySQL 数据库服务器进行了改进,在功能和性能上较 MySQL 有着很显著的提升。该版本提升了在高负载情况下的 InnoDB 的性能、为 DBA 提供一些非常有用的性能诊断工具;另外有更多的参数和命令来控制服务器行为。
Percona Server 只包含 MySQL 的服务器版,并没有提供相应对 MySQL 的 Connector 和 GUI 工具进行改进。
Percona Server 使用了一些 google-mysql-tools, Proven Scaling, Open Query 对 MySQL 进行改造。
官站:http://www.percona.com/ 这个站点有详细的文档介绍,不过是E文,


下面就来看一下Xtrbackup这个工具的使用吧。


首先安装这个xtrbackup工具,安装方法官网上有yum和rpm包安装两种方式的详细的介绍就不再写了,朋友们自己看。在这里我使用的yum的安装方式比较便捷。
yum源设置方法:

http://www.percona.com/doc/percona-xtrabackup/2.1/installation/yum_repo.html

vim /etc/yum.repos.d/Percona.repo
添加以下内容:
[percona]
name = CentOS $releasever - Percona
baseurl=http://repo.percona.com/centos/$releasever/os/$basearch/
enabled = 1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-percona
gpgcheck = 1
下载key文件写到<span style=\"\\\\"\\\\\\\\"font-family:consolas,\\\\"\">yum install percona-xtrabackup-2.0.1-446.rhel6.x86_64 -y
当然也可以下载源码包编译安装

下载地址: http://www.percona.com/downloads/XtraBackup/XtraBackup-2.1.5/binary/Linux

主要来说一下xtrbackup对MySqL数据库的备份和恢复。


Xtrabackup有两个主要的工具:xtrabackup、innobackupex
  (1)xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表
  (2)innobackupex-1.5.1则封装了xtrabackup,是一个脚本封装,所以能同时备份处理innodb和myisam,但在处理myisam时需要加一个读锁
  (3)使用帮助:http://www.percona.com/docs/wiki/percona-xtrabackup:start
下面来使用这个工具:
一定要确定mysql配置文件my.cnf中必须有datadir=/data/mysql/这项。下面有说明。
先来一次全量备份:
innobackupex-1.5.1 --defaults-file=/etc/my.cnf --no-timestamp --host=localhost --port=3306 --user=root --password=redhat /data/bak_data/full_bak
这个目录里面就是备份的内容了,可以看一下都有什么东西:
数据库的主配置文件:backup-my.cnf
Innodb日志文件:ibdata1
数据库中的所有数据库目录:innobackup、mysql、performance_schema、phpmyadmin、test、wordpress
最后就是innobackupex备份的二进制日志和日志信息,备份的标志点:
xtrabackup_binary
xtrabackup_binlog_info
xtrabackup_checkpoints
xtrabackup_logfile
下面来使用innobackupex增量备份:
第一次增量备份:
innobackupex-1.5.1 --defaults-file=/etc/my.cnf --no-timestamp --host=localhost --port=3306 --user=root --password=redhat --incremental --incremental-basedir=/data/bak_data/full_bak /data/bak_data/one_backup
第二次增量备份:
innobackupex-1.5.1 --defaults-file=/etc/my.cnf --no-timestamp --host=localhost --port=3306 --user=root --password=redhat --incremental --incremental-basedir=/data/bak_data/one_backup /data/bak_data/two_backup
第三次增量备份:
innobackupex-1.5.1 --defaults-file=/etc/my.cnf --no-timestamp --host=localhost --port=3306 --user=root --password=redhat --incremental --incremental-basedir=/data/bak_data/two_backup /data/bak_data/three_backup

以上是把每次增量备份为一个目录,也可以备份为一个压缩包

压缩备份的方式:
innobackupex-1.5.1 --defaults-file=/etc/my.cnf --no-timestamp --host=localhost --port=3306 --user=root --password=redhat --stream=tar /data/bak_data/ 2>/data/back_data/2.log | gzip - > /data/bak_data/full_bak.tar.gz
(测试了不下10次,压缩包里只一个backup-my.cnf文件,非常郁闷!)
还是用普通的吧,比较稳当!


下面来看一下如何恢复数据,这里有两方式来恢复。要恢复数据要先停mysql数据库服务,要不停下也是可以的,个人感觉停下比较好一点。
两种方式共同的部分:
1、进行一次基础恢复也就是:
innobackupex-1.5.1 /data/bak_data/full_bak --apply-log
2、进行增量恢复:
innobackupex-1.5.1 /data/bak_data/full_bak --incremental --incremental-dir=/data/bak_data/one_backup --apply-log   #恢复的是第一次增量备份的,
innobackupex-1.5.1 /data/bak_data/full_bak --incremental --incremental-dir=/data/bak_data/two_backup --apply-log    #恢复的是第二次增量备份的,
innobackupex-1.5.1 /data/bak_data/full_bak --incremental --incremental-dir=/data/bak_data/three_backup --apply-log    #恢复的是第三次增量备份的,
以次类推,有多少增量就恢复多少,最后数据库全部数据会在/data/bak_data/full_bak这个目录下,

下面就分两方式来恢复数据到正式的数据库中
第一种比较简单的方式,直接把/data/bak_data/full_bak这个目录下的文件全部复制到数据库的存放数据的目录中:
cp -r /data/bak_data/full_bak/* /data/mysql/data/
为了能正常启动服务,修改数据目录的用户权限,
chown mysql:mysq -R /data/mysql
如不出意外,重启之后数据库服务就是正常。通常情况下能正常启动。
这种方式会使数据库的数据目录有其他的文件,cp之后会有xtrabackup_binary、xtrabackup_binlog_info、xtrabackup_checkpoints、xtrabackup_logfile、backup-my.cnf、ibdata1、ib_logfile0、ib_logfile1 文件,如果innodb日志文件:ibdata1、ib_logfile0、ib_logfile1之前就是放在这个目录中可以不用清理掉,建议其他除数据库目录之外的文件要清理一下。或者复制到相应的目录中去。

第二方式,使用innobackupex-1.5.1 --copy-back这个选项来把数据得到数据库存储的目录中去,在这之前要清空数据库数据存放目录/data/mysql/data目录的文件和innodb日志目录/data/mysql/mysql_innodb目录的文件,然后执行下面的命令即可。如果不清空,下面命令在执行过程会报错,提示你要清空那些目录。
innobackupex-1.5.1 --copy-back /data/bak_data/full_bak
执行完后,上面来个目录中的文件属主和属组都发生了变化,不是mysql用户了,如果直接重启mysql服务会报错,修改为mysql用户就可以了
执行:
chown mysql:mysql /data/mysql -R

关于Xtrbackup工具的使用先就写到这里,在这里还有一个问题没得到解决,希望看到的朋友们如果也遇到相同的问题可以一起讨论下。
问题文章前面也提到过,就是使用压缩备份里总是不成功。即:
压缩备份:
innobackupex-1.5.1 --defaults-file=/etc/my.cnf --no-timestamp --host=localhost --port=3306 --user=root --password=redhat --stream=tar /data/bak_data/  2>/data/back_data/2.log | gzip - > /data/bak_data/full_bak.tar.gz
(测试了不下10次,压缩包里只一个backup-my.cnf文件,非常郁闷!)


希望看到的朋友们能指点下,谢谢。


上面的那个问题已经解决了,多谢跛腿的狐狸 的指点

原因如下,我备份完之后解压时少用了一个参数。我用的是:tar zxvf full_bak.tar.gz 所以解压出来后就一个backup-my.cnf文件,多谢跛腿的狐狸 的指点,使用-i这个参数,即:tar -izxvf full_bak.tar.gz解压出来后就是全是备份的文件和目录了。这个参数的解释如下:-i, --ignore-zeros  忽略归档中的零字节块(即文件结尾)

© 著作权归作者所有

共有 人打赏支持
ZhouLS

ZhouLS

粉丝 16
博文 9
码字总数 8719
作品 0
浦东
系统管理员
私信 提问
加载中

评论(3)

ZhouLS
ZhouLS

引用来自“跛腿的狐狸”的评论

你是解压缩的时候只有一个backup-my.cnf么?解压缩的时候是tar izxf full_bak.tar.gz

非常感谢谢,我又测试了一下,果然是没有加i那个选项,所以解压出来就只有一个bakup-my.cnf文件,加上i选项之后所有备份的东西就出现了。
ZhouLS
ZhouLS

引用来自“跛腿的狐狸”的评论

你是解压缩的时候只有一个backup-my.cnf么?解压缩的时候是tar izxf full_bak.tar.gz

对的解压后只有一个bacup-my.cnf,我用的是tar zxvf full_bak.tar.gz 没有加i那个选项。。
跛腿的狐狸
跛腿的狐狸
你是解压缩的时候只有一个backup-my.cnf么?解压缩的时候是tar izxf full_bak.tar.gz
mysql备份工具innobackupex,xtrabackup-2.1安装与测试

一、Xtrabackup介绍 1.1:Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。 Xtra...

SANSOM
2013/09/10
0
3
mysql快速备份xtrabackup和innobackupex

Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写). Xtrabackup有两个主要的工具:xtrabackup、innobackupex (1)xtrabackup只能备份InnoDB和XtraDB两种数...

庆沉
2015/07/17
0
0
实战 innobackupex 全量备份&恢复 MySQL

1、背景 我们有一台业务数据库一直都只做了主从,虽然一定程度上解决了读写性能问题,但是这个是有风险的,比如某同学删除主库数据,从库也会跟着删除,所以及时的备份还是很有必要的。计划是...

大数据之路
2013/04/22
0
1
利用Xtrabackup进行数据库的备份与恢复

版权声明:知识就是为了传播! https://blog.csdn.net/weixin_36171533/article/details/86477970 Xtrabackup介绍 Xtrabackup是由percona开源的免费数据库热备份软件,它能对InnoDB数据库和X...

JESSE_JAVA
01/14
0
0
xtrabackup 备份还原单库/表

使用 mysqldump 逻辑备份还原单个数据库/表非常方便。但是,当数据量比较大的时候,对逻辑备份进行恢复的时间太长了。这个时候选择物理备份的方式能大大缩短其中时间。 使用 xtrabackup 进行...

geamover
2018/05/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

容器服务

简介 容器服务提供高性能可伸缩的容器应用管理服务,支持用 Docker 和 Kubernetes 进行容器化应用的生命周期管理,提供多种应用发布方式和持续交付能力并支持微服务架构。 产品架构 容器服务...

狼王黄师傅
昨天
3
0
高性能应用缓存设计方案

为什么 不管是刻意或者偶尔看其他大神或者大师在讨论高性能架构时,自己都是认真的去看缓存是怎么用呢?认认真真的看完发现缓存这一块他们说的都是一个WebApp或者服务的缓存结构或者缓存实现...

呼呼南风
昨天
12
0
寻找一种易于理解的一致性算法(扩展版)

摘要 Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos 算法相同的功能和性能,但是它的算法结构和 Paxos 不同,使得 Raft 算法更加容易理解并且更容易构建实际的系统。为了提升可...

Tiny熊
昨天
2
0
聊聊GarbageCollectionNotificationInfo

序 本文主要研究一下GarbageCollectionNotificationInfo CompositeData java.management/javax/management/openmbean/CompositeData.java public interface CompositeData { public Co......

go4it
昨天
3
0
阿里云ECS的1M带宽理解

本文就给大家科普下阿里云ECS的固定1M带宽的含义。 “下行带宽”和“上行带宽” 为了更好的理解,需要先给大家解释个词“下行带宽”和“上行带宽”: 下行带宽:粗略的解释就是下载数据的最大...

echojson
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部