老规矩,开场白,刚开始用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. 九度OJ 1002:Grading

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:18410 解决:4753 题目描述: Grading hundreds of thousands of Graduate Entrance ...

  2. 2017-2018-1 20179209《Linux内核原理与分析》第十周作业

    设备与模块 设备分类 块设备 块设备可以以块为单位寻址,块大小随设备不同而不同:设备通常支持重定位操作,也就是对数据的随机访问.块设备的例子有外存,光盘等. 字符设备 字符设备不可寻址,仅供数据的流式 ...

  3. Difference Between ZIP and GZIP

    From: http://www.differencebetween.net/technology/difference-between-zip-and-gzip/ Summary: 1. GZIP ...

  4. FTP开启被动连接模式

    在Linux环境下搭建ftp服务器,具体步骤见:http://www.cnblogs.com/zjiacun/p/6896803.html 配置被动连接的方法: 找到配置文件/etc/vsftpd/v ...

  5. java访问微信接口发送消息

    最近在开发activiti流程的时候有个需求:流程到达每个审批节点后,需要向该节点的审批人发送一个消息,提示有审批需要处理. 参考了一下微信的开发者文档和网络上的一些技术博客,现在记录一下.以便后续继 ...

  6. LeetCode:字母异位词分组【16】

    LeetCode:字母异位词分组[16] 题目描述 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", &quo ...

  7. Java进阶学习:log4j的学习和使用

    Java进阶学习——log4j的学习和使用 简介Loj4j Log4j的组成 Log4j主要由三大组组件构成: Logger: 负责生成日志,并能够对日志信息进行分类筛选,通俗的讲就是决定什么日志信息 ...

  8. iOS tabbar 上面更换任意图

    tabbar 对add 上面的图片 有一层默认虚化 对于这种系统高度继承后的 控件 处理办法就是自定义 解决方案 1.放在tabbar 上的图片 不能太小 不然裁剪后 会很模糊 2 .通过裁剪 压缩的 ...

  9. FOJ 2232 匈牙利算法找二分图最大匹配

    题目链接 简单理解匈牙利算法 简单理解二分图 尽量让每一个随从击败一个对手且随从全部存活,关键是为每一个随从找对手(递归过程),"腾". #include<iostream& ...

  10. POJ3660 暑假集训-最短路H题floyd

      http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82829#rank#include<iostream> #include& ...