老规矩,开场白,刚开始用mysqldump,备份100G+的数据库,再加上服务器繁忙,备份速度像蜗牛似的,于是寻找更高效的备份方法。网上都说用xtrabackup比较适合备份大的数据库,而且备份效率也高,就尝试使用一次,结果明显感觉比mysqldump备份与恢复速度就是快不少,那以后就用它了。大礼拜日的在家也没事,结合生产环境,写了这篇文档,刚接触的朋友,可以参考下,不多说,入正题!

1、初次备份前准备工作

1.1 了解备份方式

热备份:读写不受影响(mysqldump-->innodb)

温备份:仅可以执行读操作(mysqldump-->myisam)

冷备份:离线备份,读写都不可用

逻辑备份:将数据导出文本文件中(mysqldump)

物理备份:将数据文件拷贝(xtrabackup、mysqlhotcopy)

完整备份:备份所有数据

增量备份:仅备份上次完整备份或增量备份以来变化的数据

差异备份:仅备份上次完整备份以来变化的数据

1.2 创建备份用户

1
2
     mysql> grant reload,lock tables,replication client on *.* to 'bak'@'localhost' identified by 'bak2015';
     mysql> flush privileges;

1.3 安装方式

CentOS:

# rpm -ivh http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

# yum install percona-xtrabackup  #xtrabackup2.2不支持MySQL5.1的Innodb引擎,如需要可安装2.0版本(https://www.percona.com/downloads/XtraBackup/XtraBackup-2.0.8/RPM/rhel6/x86_64/percona-xtrabackup-20-2.0.8-587.rhel6.x86_64.rpm)

Ubuntu:

# sudo apt-get install xtrabackup  #14.04默认有这个包,14.04之前版本如果没有再这个地址下载对应的版本:https://www.percona.com/downloads/XtraBackup/

1.4 了解常用参数

--user=     #指定数据库备份用户

--password=  #指定数据库备份用户密码

--port=     #指定数据库端口

--host=     #指定备份主机

--socket=    #指定socket文件路径

--databases=  #备份指定数据库,多个空格隔开,如--databases="dbname1 dbname2",不加备份所有库

--defaults-file=       #指定my.cnf配置文件

--apply-log         #日志回滚

--incremental=          #增量备份,后跟增量备份路径

--incremental-basedir=     #增量备份,指上次增量备份路径

--redo-only         #合并全备和增量备份数据文件

--copy-back         #将备份数据复制到数据库,数据库目录要为空

--no-timestamp          #生成备份文件不以时间戳为目录名

--stream=             #指定流的格式做备份,--stream=tar,将备份文件归档

--remote-host=user@ip DST_DIR #备份到远程主机

2、完整备份与恢复

2.1 完整备份

# innobackupex --user=bak --password='bak2015' /mysql_backup

2.2 备份恢复

# innobackupex --defaults-file=/etc/mysql/my.cnf --copy-back /home/loongtao/mysql_backup/2015-02-08_11-56-48/

2.3 备份文件说明

# ls 2015-02-08_11-56-48

backup-my.cnf:记录innobackup使用到mysql参数

xtrabackup_binary:备份中用到的可执行文件

xtrabackup_checkpoints:记录备份的类型、开始和结束的日志序列号

xtrabackup_logfile:备份中会开启一个log copy线程,用来监控innodb日志文件(ib_logfile),如果修改就会复制到这个文件

3、完整备份+增量备份与恢复

3.1 完整备份

# innobackupex --user=bak --password='bak2015' /mysql_backup

#备份后位置是:/mysql_backup/2015-02-08_11-56-48

3.2 增量备份1

# innobackupex --user=bak --password='bak2015' --incremental /data1/mysql_backup --incremental-basedir=/mysql_backup/2015-02-08_11-56-48  #指定上次完整备份目录

3.3 增量备份2

# innobackupex --user=bak --password='bak2015' --incremental /data1/mysql_backup --incremental-basedir=/mysql_backup/2015-02-08_12-16-06  #指定上次增量备份目录

3.4 查看xtrabackup_checkpoints文件,一目了然,可以看到根据日志序号来增量备份

   3.5 备份恢复

3.5.1 备份恢复思路

将增量备份1、增量备份2...合并到完整备份,加到一起出来一个新的完整备份,将新的完整备份以拷贝的形式到数据库空目录(rm /var/lib/mysql/* -rf)

3.5.2 预备完整备份

#xtrabackup把备份过程中可能有尚未提交的事务或已经提交但未同步数据文件的事务,写到xtrabackup_logfile文件,所以要先通过这个日志文件回滚,把未完成的事务同步到备份文件,保证数据文件处于一致性。

# innobackup --apply-log --redo-only 2015-02-08_11-56-48

3.5.3 合并第一个增量备份

# innobackupex --apply-log --redo-only /mysql_backup/2015-02-08_11-56-48/ --incremental-dir=mysql_backup/2015-02-08_12-16-06

3.5.4 合并第二个增量备份

# innobackupex --apply-log --redo-only /mysql_backup/2015-02-08_11-56-48/ --incremental-dir=mysql_backup/2015-02-08_16-06-53

3.5.5 恢复完整备份(这时2015-02-08_11-56-48完整备份已经包含所有增量备份,可以通过查看checkpoints来核实)

# innobackupex --defaults-file=/etc/mysql/my.cnf --copy-back /mysql_backup/2015-02-08_11-56-48/

3.5.6 修改恢复数据文件权限

# chown -R mysql.mysql /var/lib/mysql

3.5.7 启动MySQL,查看数据库恢复情况

# /etc/init.d/mysqld start

4、备份文件归档压缩

   4.1 归档并发送到备份服务器

# innobackupex --databases=test --user=bak --password='bak2015' --stream=tar /mysql_backup 2>/mysql_backup/bak.log |ssh root@192.168.18.251 "cat - > /mysql_backup/`date +%F`.tar"

解压:tar -ixvf `date +%F`.tar

4.2 归档备份

# innobackupex --databases=test --user=bak --password='bak2015' --stream=tar /mysql_backup > /mysql_backup/`date +%F`.tar

解压:tar -ixvf `date +%F`.tar

4.3 压缩归档备份

# innobackupex --databases=test --user=bak --password='bak2015' --stream=tar /mysql_backup |gzip >/mysql_backup/`date +%F`.tar.gz

解压:tar -izxvf `date +%F`.tar.gz

Percona Xtrabackup 备份MySQL 实例(转)的更多相关文章

  1. Percona Xtrabackup备份mysql大数据库(完整备份与增量备份)

    Percona Xtrabackup备份mysql大数据库(完整备份与增量备份)     文章目录 [隐藏] Xtrabackup简介 Xtrabackup安装 Xtrabackup工具介绍 inno ...

  2. Percona Xtrabackup备份mysql(转)

    add by zhj:另外,参考了Xtrabackup之innobackupex备份恢复详解,我用的是Xtrabackup2.2.6版本, 可以成功备份和恢复指定的数据库. 原文:http://www ...

  3. Percona Xtrabackup备份mysql全库及指定数据库(完整备份与增量备份)

    原文地址:http://www.tuicool.com/articles/RZRnq2 Xtrabackup简介 Percona XtraBackup是开源免费的MySQL数据库热备份软件,它能对In ...

  4. 利用xtrabackup备份mysql数据库

    利用xtrabackup备份mysql数据库 一.安装1.直接下载二进制文件wget http://www.percona.com/downloads/XtraBackup/XtraBackup-2. ...

  5. MariaDB之基于Percona Xtrabackup备份大数据库[完整备份与增量备份]

    MariaDB之基于Percona Xtrabackup备份大数据库[完整备份与增量备份] 1.Xtrabackup的安装 percona-xtrabackup-2.2.3-4982.el6.x86_ ...

  6. 使用Percona Xtrabackup创建MySQL slave库

    一.使用Percona Xtrabackup创建MySQL slave库 MySQL Server 版本: Server version: 5.7.10-log MySQL Community Ser ...

  7. xtrabackup备份MySQL报错:InnoDB: Error number 24 means 'Too many open files'

    xtrabackup备份MySQL报错:InnoDB: Error number 24 means 'Too many open files' 1.使用xtrabackup备份MySQL时出现如下报错 ...

  8. Percona XtraBackup 关于 MySQL备份还原的详细测试

    一. Percona XtraBackup 的优点. (1)无需停止数据库进行InnoDB热备: (2)增量备份MySQL: (3)流压缩传输到其它服务器: (4)在线移动表: (5)能够比较容易地创 ...

  9. MySQL · 物理备份 · Percona XtraBackup 备份原理

    http://mysql.taobao.org/monthly/2016/03/07/ 前言 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MySQL 数据 ...

随机推荐

  1. [IOS]从零开始搭建基于Xcode7的IOS开发环境和免开发者帐号真机调试运行第一个IOS程序HelloWorld

    首先这篇文章比较长,若想了解Xcode7的免开发者帐号真机调试运行IOS程序的话,直接转到第五部分. 转载请注明原文地址:http://www.cnblogs.com/litou/p/4843772. ...

  2. Django 之Form组件

    Django之From组件 扩展:Django 之 ModelForm组件 Form组件功能 Django的Form主要具有一下几大功能 生成HTML标签 验证用户数据(显示错误信息) HTML Fo ...

  3. PAT 1060. 爱丁顿数(25)

    英国天文学家爱丁顿很喜欢骑车.据说他为了炫耀自己的骑车功力,还定义了一个“爱丁顿数”E,即满足有E天骑车超过E英里的最大整数E.据说爱丁顿自己的E等于87. 现给定某人N天的骑车距离,请你算出对应的爱 ...

  4. setTimeout解决循环值的几种方法

    for(var i=0;i<5;i++){ setTimeout(function(){ console.log(`错误 ${i}`); },0) } for(var i=0;i<5;i+ ...

  5. C语言程序设计50例(经典收藏)之1

    题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. #includ ...

  6. STM32L0 HAL库 IO读写功能

    开发环境使用 MDK5.16a + CUBEMX生成代码 开发板使用:NUCLEO-L053R8 核心芯片:STM32L053R8 今天主要学习了下最基础的IO的读写,IO使用 PA5   LED输出 ...

  7. vim中使用sed去除网上copy的源代码行号和空格

    有些时候,在网上搜索到的代码都包含有行号,高亮显示控件不支持直接提取,如: test.sh 01 #!/bin/bash 02 echo “aaa” 简单的去掉行号和前面的空格: 方案一: 1.vim ...

  8. ubuntu14.04下svn版本管理系统的安装及常用命令的使用整理

    ubuntu14.04下安装svn$sudo apt-get install subversion 执行这一步就安装完成了,在ubuntu先安装很方便 安装完成后,创建版本库目录,由于是本地环境,就在 ...

  9. java程序实现Unicode码和中文互相转换

      根据前一篇的补充问题http://blog.csdn.net/fancylovejava/article/details/10142391 有了前一篇文章的了解,大概了解了unicode编码格式了 ...

  10. linux下tomcat的配置及项目的部署流程

    Java的安装配置 1. 在/etc/profile文件中配置相应的信息(如下) export JAVA_HOME=/usr/java/jdk1.6.0_20 export JRE_HOME=/usr ...