xtrabackup是由percona提供的mysql备份工具,它是一款物理备份工具,通过连接数据库把数据库的数据备份出来。对于innodb存储引擎其支持全量备份和增量备份。对于myisam存储引擎只支持增量备份。因为xtrabackup对innodb的增量备份是基于表空间的LSN进行的,所谓LSN即:表空间分成多个数据块,每个数据块都有相应的序列号,当数据块数据发生变化则更新序列号。全量备份即备份所有数据块,则增量备份则基于全量备份最后一个数据块的序列号到最新的数据块序列号进行备份。因为myisam不支持表空间,所以不能进行增量备份。

xtrabackup备份出来的数据包括:

  • 表空间
  • 数据文件
  • 二进制日志
  • 事务日志

    ...

xtrabackup在进行数据恢复之前需要注意如下要点:

  1. 如果有增量备份则需要在恢复之前先进行增量备份和全备份的合并再恢复;
  2. 如果是支持事务的表的备份,则恢复之前需要先进行事务日志的回滚和提交操作;
  3. 如果是多个连续的备份操作,则只需要提交事务日志,不需要回滚,只有在全部备份操作合成之后再进行事务的回滚;

此文通过详细的实验步骤来演示xtrabackup的使用方法。

实验步骤

  1. 一台centos7虚拟机,安装mariadb-5.5.52版本的数据库,首先通过sql脚本导入hellodb测试库,其包括一个students数据表,此实验在students表中进行操作,命令如下:

    mysql -uroot < hellodb.sql
  2. 安装xtrabackup,可以从官方网站下载安装包,然后通过yum进行安装,下载站点为:https://www.percona.com/downloads/XtraBackup/LATEST/,此处不再演示安装过程
  3. xtrabackup的主要命令为innobackupex,通过innobackupex --help或者man手册可以获取到帮助信息;
  4. 数据库已经导入,此时可以进行数据库的备份操作,先进行数据库的全量备份和恢复:
    1. 首先确保数据库已经开启二进制日志,通过show global variables like 'log_bin';命令可以看到是否已经开启,通过show binary logs;可以看到目前正在使用的二进制日志是哪一个;
    2. 通过xtrabackup进行备份,数据备份到/data/backup目录下,备份完成会在指定目录下生成一个以当前时间命名的文件夹:

      innobackupex -u root /data/backup
    3. 文件夹内容如下:

      • xtrabackup_binlog_info:记录二进制日志的内容;
      • xtrabackup_checkpoints:记录备份类型,开始和结束的lsn编号等备份信息;
      • xtrabackup_info:记录更详细的备份信息,如是否为所有库备份,是否压缩,备份执行的命令等信息;
      • xtrabackup_logfile:记录的是事务日志,为二进制文件,不可查看;
    4. 此时就备份成功了,然后演示数据库的恢复操作。注意:恢复之前需要首先停止数据库服务:

      innobackupex --apply-log 2017-07-13_21-02-07/ #首先进行事务日志的提交和回滚 innobackupex --copy-back 2017-07-13_21-02-07/ #进行数据恢复,会自动把数据恢复到mysql的数据目录下
    5. 恢复成功之后所有已经恢复数据的属主和属组都是root用户,需要修改成mysql用户才能登陆数据库;
    6. 此时登陆数据库即可看到所有数据都已经恢复了。
  5. 这次演示增量备份和恢复操作:
    1. 往数据库中插入几条新的信息,然后进行数据库的增量备份;
    2. 通过如下命令进行数据库的增量备份,备份成功之后还是会在/data/backup目录下生成一个新的以时间命名的文件夹:

      innobackupex -u root -p 1234567a --incremental --incremental-basedir=/data/backup/2017-07-13_21-07-23/ /data/backup/
    3. 然后停掉数据库服务,删除数据库目录下的所有数据,进行数据恢复操作,步骤如下:

      innobackupex --apply-log --redo-only 2017-07-13_22-16-19/ #进行全量备份的事务提交,但是不回滚未提交事务,因为未提交事务可能在下次的增量备份中提交 innobackupex --apply-log --redo-only 2017-07-13_22-16-19/ --incremental-dir=2017-07-13_22-18-34/ #进行增量备份和全备份的合成已经事务提交工作 innobackupex --apply-log 2017-07-13_22-16-19/ #对于全备份也没有完成的事务进行回滚操作 innobackupex --copy-back 2017-07-13_22-16-19/ #此时采用全备份即可恢复数据,不再需要增量备份,因为已经进行了备份的合成操作
    4. 同样需要修改恢复完成数据的属主和属组,然后登陆数据库即可看到完整是数据,此时实验演示完成。

      注意:

      • 生产环境建议二进制日志和数据文件分开放在不同磁盘,因为二进制文件可以用来进行时间点恢复,可以尽可能保证丢失更少的数据,如果二进制文件也丢失,则可能会丢失大量数据;
      • 在数据恢复操作完成之后一定要再进行一次数据的全备份,保证数据安全;

xtrabackup备份mysql数据库的使用方法的更多相关文章

  1. 利用xtrabackup备份mysql数据库

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

  2. 使用Xtrabackup 备份mysql数据库

    ##创建逻辑卷 [root@node1 ~]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully create ...

  3. 使用xtrabackup备份mysql数据库

    数据在一个企业里非常重要,因此经常需要备份数据库,确保出线故障时,可以立刻恢复数据到最新状态,目前常见的备份工具有mysqldump和xtrabackup,数据量较少时可以使用mysqldump,但随 ...

  4. xtrabackup备份mysql数据库方法

    1.安装 xtrabackup 工具包 下载percona yum源 https://www.percona.com/redir/downloads/percona-release/redhat/pe ...

  5. 配置xtrabackup备份mysql数据库

    下载地址:https://www.percona.com/downloads/XtraBackup/LATEST/ 为了方便起见本次安装使用yum源安装方式 1    安装yum源:yum insta ...

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

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

  7. Linux 每天自动备份mysql数据库的方法

    Linux 每天自动备份mysql数据库的方法 作者: 字体:[增加 减小] 类型:转载   linux下为了安全有时候需要自动备份mysql数据库,下面是具体的实现步骤.   /usr/bin为my ...

  8. linux下使用crontab定时备份MYSQL数据库的方法:

    摘要 linux下使用crontab定时备份MYSQL数据库的方法: 只需按照下面3步做,一切都在你的掌控之下: 第一步:在服务器上配置备份目录代码: ------------------------ ...

  9. Linux服务器自动备份压缩MySQL数据库的实用方法

    <?php$server = 'localhost'; $link = mysql_connect($server, 'root', 'haven'); $result = mysql_quer ...

随机推荐

  1. mysql5.6 主从复制

    Master 192.168.59.128 Slave 192.168.59.129   默认认为已安装mysql5.6  mysql5.6 rpm安装配置 修改Master my.cnf文件   # ...

  2. python学习第三个坑

    ##########################python 第三章 ################################这一章呢,主要是文件的操作,还有涉及到函数的一部分. PS:整 ...

  3. Javaweb---服务器Tomcat与Eclipse的关联

    1.与eclipse的关联 打开eclipse-->window-->preferences 在搜索框输入->server->进行搜索,选择-–>server and R ...

  4. Web前端的路该怎么走?很迷茫

    “路漫漫其修远兮,吾将上下而求索”,这句出自<离骚>. 虽然端午已过,但是还是不影响一个程序员想表(zhuang)达(boy)自己此刻心情的冲动. 偶然路过同事旁边,不(tou)小(kan ...

  5. 华为A199:近期不会再买华为的手机了

    为了支持国货,也省点钱,买了个华为A199: 缺点: 没有google play market很复杂的刷机后才能装Gmail   不过也有亮点: 自带录音功能,老htc通过软件也只能录单方向的哦关机闹 ...

  6. Windows窗口的尺寸和位置

    介绍 窗口的大小和位置表示为一个矩形边界,该矩形的坐标是相对于屏幕或父窗口而言的.顶级窗口的坐标是相对于屏幕的左上角而言的,子窗口的坐标则是相对于父窗口的左上角而言.应用程序创建窗口时(CreateW ...

  7. 第4章 ext文件系统机制

    本文目录: 4.1 文件系统的组成部分 4.2 文件系统的完整结构 4.3 Data Block 4.4 inode基础知识 4.5 inode深入 4.6 单文件系统中文件操作的原理 4.7 多文件 ...

  8. PO/VO/POJO/BO/VO图解

  9. 关于jQuery表单下拉selected设置无效的解决方案

    表单下拉选项使用selected设置,发现第一次默认选中成功,在页面不刷新的情况下,再次下拉,selected属性设置了,默认选中不生效 研究发现是浏览器兼容的问题 一,解决浏览器缓存问题,在HTML ...

  10. [HNOI2007]紧急疏散EVACUATE (湖南2007年省选)

    [HNOI2007]紧急疏散EVACUATE 题目描述 发生了火警,所有人员需要紧急疏散!假设每个房间是一个N M的矩形区域.每个格子如果是'.',那么表示这是一块空地:如果是'X',那么表示这是一面 ...