一.概述

  物理备份和恢复又分为冷备份和热备份。与逻辑备份相比,它最大优点是备份和恢复的速度更快。因为物理备份的原理都是基于文件的cp。

  1.1 冷备份
    冷备份就是停掉数据库服务。这种物理备份一般很少使用,因为很多应用是不允许长时间停机的。恢复操作大概是:首先停掉mysql服务, 在操作系统级别恢复mysql的数据文件,然后重启mysql服务, 使用mysqlbinlog工具恢复自备份以来的所有binlog。估计这种方法跟sql server的分离附加库类似。由于会停机,冷备份就不在深入。

  1.2 热备份
    对于热备份有很多方法,本质其实就是将要备份的表加读锁,然后再cp数据文件到备份目录。对于热备份有很多第三方工具。使用最为广泛的好像是 xtrabackup 工具,该工具是用来备份mysql数据库的开源工具。
    点击查看xtrabackup 用户指南

二. precona xtrabackup 介绍

  下面翻译来自官方文档 2.4版本,有些地方翻译后不是很懂,在后面继续学习xtrabackup中,一边实战一边理解,在回头把该介绍文档修正。

  2.1 xtrabackup介绍

    Percona XtraBackup是一个开源的MySQL服务器热备份工具,在备份期间不会锁定数据库。是一个编译好的C二进制文件,提供了用MyISAM、InnoDB和XtraDB表备份整个MySQL数据库实例的功能。现是最新版本是2.4,目前只支持在linux系统上。

    它可以在MySQL 5.1、5.5、5.6和5.7服务器上备份InnoDB、XtraDB和MyISAM表的数据,也可以用XtraDB备份Percona服务器的数据。

    无论是24x7高负载的服务器还是低事务量的环境,Percona XtraBackup的设计目的是使备份成为一个无缝的过程,而不会破坏生产环境中服务器的性能。

   2.2 支持的备份类型

    (1)增量备份

    (2)部分备份

    (3)紧凑的备份

  2.3 高级特征
     (1)使用xtrabackup脚本备份

     (2)统计分析表

     (3)处理二进制日志

     (4)恢复单个表

     (5)LRU转储备份

  2.4  XtraBackup备份功能   

    下面介绍下XtraBackup工具的主要特征,功能中讲到的Drizzle、MariaDB和Percona Server等是MySQL分
支。

Supported MySQL flavors

支持mysql分支类型

MySQL, PerconaServer, MariaDB, Percona
XtraDB Cluster, MariaDB Galera Cluster

Supported operating systems

支持的操作系统: linux

Non-blocking InnoDB backups

非阻塞InnoDB备份。在复制非InnoDB数据时,InnoDB表仍然是锁定的。

Blocking MyISAM backups

阻塞MyISAM备份

Incremental backups

增量备份

Full compressed backups

完全压缩备份

Incremental compressed backups

增量压缩备份

Fast incremental backups

快速增量备份。

Percona服务器支持快速增量备份,支持XtraDB更改页面跟踪

Incremental backups with archived logs
feature in Percona Server

Percona服务器里带有归档日志特性的增量备份

Incremental backups with REDO log only

仅使用重做日志的增量备份

Backup locks

备份锁是Percona Server 5.6+中具有读锁的表的轻量级替代方法。Percona XtraBackup自动使用它们复制非InnoDB数据,以避免阻塞修改InnoDB表的DML查询。

Encrypted backups

加密备份

Streaming backups

流备份

Parallel local backups

并行的本地备份

Parallel compression

并行压缩

Parallel encryption

并行加密

Parallel apply-log

并行apply-log

Parallel copy-back

并行copy-back

Partial backups

部分备份

Partial backups of individual partitions

各种分区的部分备份

Point-in-time recovery support

时间点恢复支持

Safe slave backups

安全的从库备份

Compact backups

紧凑备份。Percona XtraBackup在准备紧凑备份时跳过二级索引页并重新创建它们。MySQL企业备份跳过未使用的页面并重新插入到准备阶段。

Buffer pool state backups

缓冲池状态备份

Individual tables export

各种表导出

Individual partitions export

各种分区导出

Restoring tables to a different server

将表还原到另一台服务器。使用Percona XtraBackup导出的表可以导入Percona
Server 5.1、5.5或5.6+或MySQL 5.6+。使用MySQL企业备份创建的可传输表空间只能导入Percona Server 5.6+、MySQL 5.6+或MariaDB 10.0+。

Data & index file statistics

数据和索引文件统计

InnoDB secondary indexes defragmentation

InnoDB二级索引整理

support to minimize lock time

支持最小化锁的时间

Backup history table

备份历史表

External graphical user interfaces to
backup/recovery

用于备份/恢复的外部图形用户界面

  2.5 备份工作原理
    Percona XtraBackup基于InnoDB的崩溃恢复功能, 它会复制InnoDB数据文件,这会导致内部不一致的数据, 然后,它对文件执行崩溃恢复,使它们再次成为一致的、可用的数据库。

    它的工作是因为InnoDB维护一个重做日志,也称为事务日志。这包含对InnoDB数据的每次更改的记录。当InnoDB启动时,它检查数据文件和事务日志,并执行两个步骤。它将提交的事务日志条目应用于数据文件,并对任何修改了数据但没有提交的事务执行撤销操作。

    Percona XtraBackup的工作原理是在日志序列号(LSN)启动时记住它,然后复制数据文件。这样做需要一些时间,所以如果文件正在更改,那么它们就会在不同的时间点反映数据库的状态。同时,Percona XtraBackup运行一个后台进程来监视事务日志文件,并从中复制更改。Percona XtraBackup需要不断地这样做,因为事务日志是以循环方式编写的,并且可以在一段时间后重用。自从Percona XtraBackup开始执行以来,对数据文件的每次更改都需要事务日志记录。

    Percona XtraBackup将使用备份锁作为具有读锁的表的轻量级替代。这个特性在Percona Server 5.6+中可用。Percona XtraBackup自动使用此功能复制非InnoDB数据,以避免阻塞修改InnoDB表的DML查询。当服务器支持备份锁时,xtrabackup首先复制InnoDB数据,运行锁表进行备份,然后复制MyISAM表和.frm文件。一旦完成,文件的备份将开始。它将备份.frm, . mrg, . myd, . myi, . trg, . trn, . arm, . arz, . csm, . csv, .par和.opt文件。

    在此之后,xtrabackup将使用LOCK BINLOG进行备份,以阻止显示主/从状态所报告的所有可能更改二进制日志位置或Exec_Master_Log_Pos或Exec_Gtid_Set(即与复制从库上的当前SQL线程状态对应的主库二进制日志坐标)的操作。然后xtrabackup将完成重做日志文件的复制,并获取二进制日志坐标。完成此操作后,xtrabackup将解锁二进制日志和表。

    最后,将二进制日志位置打印到STDERR,如果一切正常,xtrabackup将退出返回0

    注意,xtrabackup的STDERR没有写在任何文件中。您必须将其重定向到一个文件,例如,xtrabackup 选项2> backupout.log。

    它还将在备份目录中创建以下文件:

     在准备阶段,Percona XtraBackup使用复制的事务日志文件对复制的数据文件执行崩溃恢复。完成之后,数据库就可以恢复和使用了。

     备份后的MyISAM表和InnoDB表最终会保持一致,因为在准备(恢复)过程之后,InnoDB的数据会向前滚到备份完成的地方,而不是回滚到备份开始的地方。这个时间点与具有读锁的flush tables表匹配,因此MyISAM数据和准备好的InnoDB数据是同步的。

     xtrabackup和innobackupex工具都提供了前面解释中没有提到的许多特性。每个工具的功能在手册中有更详细的说明。简单地说,这些工具允许您使用各种组合的数据文件复制、日志文件复制和对数据应用日志来执行流备份和增量备份等操作。

  2.6 恢复还原工作

    要使用xtrabackup恢复备份,您可以使用xtrabackup—copy-back或xtrabackup—move选项。

    Xtrabackup将从my.cnf中读取datadir、innodb_data_home_dir、innodb_data_file_path、innodb_log_group_home_dir变量,并检查目录是否存在。

    它将首先复制MyISAM表、索引等(.frm、. mrg、. myd、. myi、. trg、. trn、. arm、. arz、. csm、. csv、par和.opt文件),然后复制InnoDB表和索引,最后复制日志文件。它将保留文件的属性,当复制它们时,您可能不得不在启动数据库服务器之前,将文件的所有权更改为mysql用户,因为它们将属于创建备份的用户。

    可以使用xtrabackup—move-back选项恢复备份。这个选项类似于xtrabackup——copy-back,唯一的区别是它将文件移动到目标位置,而不是复制文件。由于此选项删除了备份文件,因此必须谨慎使用。当没有足够的空闲磁盘空间来容纳数据文件和它们的备份副本时,它非常有用。

    (1) innodb_data_home_dir:是InnoDB表的目录共用设置。如果没有在 my.cnf 进行设置,InnoDB 将使用MySQL的 datadir 目录为缺省目录。如下所示value是空字符串。如果value是一个空字串,可以在 innodb_data_file_path 中设定绝对路径

      
    (2) innodb_data_file_path:单独指定数据文件的路径与大小。数据文件的完整路径由 innodb_data_home_dir 与这里所设定值的组合。 文件大小以 MB 单位指定。因此在文件大小指定后必有“M”。 InnoDB 也支持缩写“G”。系统会默认在 MySQL 的 datadir 目录下创建一个 12MB 自扩充(auto-extending)的数据文件 ibdata1。

      

     例如:创建一个数据文件sales,初始大小为100MB,并希望在每次达到当前大小限制时,自动增加8MB,但是文件不超过1GB,可以使用如下配置:
        innodb_data_home_dir = 
        innodb_data_file_path = /data/sales:100M:autoextend:8M: max:1GB

    (3) innodb_log_group_home_dir:InnoDB 日志文件的路径。必须与 innodb_log_arch_dir 设置相同值。 如果没有明确指定将默认在 MySQL 的 datadir 目录下建立两个 5 MB 大小的 ib_logfile... 文件。

      

mysql 开发进阶篇系列 44 物理备份与恢复( 热备份xtrabackup 工具介绍)的更多相关文章

  1. mysql 开发进阶篇系列 47 物理备份与恢复(xtrabackup 的完全备份恢复,恢复后重启失败总结)

    一. 完全备份恢复说明 xtrabackup二进制文件有一个xtrabackup --copy-back选项,它将备份复制到服务器的datadir目录下.下面是通过 --target-dir 指定完全 ...

  2. mysql 开发进阶篇系列 46 物理备份与恢复( xtrabackup的 选项说明,增加备份用户,完全备份案例)

    一. xtrabackup 选项说明 在操作xtrabackup备份与恢复之前,先看下该工具的选项,下面记录了xtrabackup二进制文件的部分命令行选项,后期把常用的选项在补上.点击查看xtrab ...

  3. mysql 开发进阶篇系列 48 物理备份与恢复(xtrabackup 的增量备份与恢复,以及备份总结)

    一.增量备份概述 xtrabackup  和innobackupex  二个工具都支持增量备份,这意味着能复制自上次备份以来更改的数据.可以在每个完整备份之间执行许多增量备份,因此,您可以设置一个备份 ...

  4. mysql 开发进阶篇系列 45 物理备份与恢复(xtrabackup 安装,用户权限,配置)

    一. 安装说明 安装XtraBackup 2.4 版本有三种方式: (1) 存储库安装Percona XtraBackup(推荐) (2 )下载的rpm或apt包安装Percona XtraBacku ...

  5. mysql 开发进阶篇系列 42 逻辑备份与恢复(mysqldump 的完全恢复)

    一.概述 在作何数据库里,备份与恢复都是非常重要的.好的备份方法和备份策略将会使得数据库中的数据更加高效和安全.对于DBA来说,进行备份或恢复操作时要考虑的因素大概有如下: (1) 确定要备份的表的存 ...

  6. mysql 开发进阶篇系列 43 逻辑备份与恢复(mysqldump 的基于时间和位置的不完全恢复)

    一. 概述 在上篇讲到了逻辑备份,使用mysqldump工具来备份一个库,并使用完全恢复还原了数据库.在结尾也讲到了误操作是不能用完全恢复的.解决办法是:我们需要恢复到误操作之前的状态,然后跳过误操作 ...

  7. mysql 开发进阶篇系列 55 权限与安全(安全事项 )

    一. 操作系统层面安全 对于数据库来说,安全很重要,本章将从操作系统和数据库两个层面对mysql的安全问题进行了解. 1. 严格控制操作系统账号和权限 在数据库服务器上要严格控制操作系统的账号和权限, ...

  8. mysql 开发进阶篇系列 20 MySQL Server(innodb_lock_wait_timeout,innodb_support_xa,innodb _log_*)

    1. innodb_lock_wait_timeout mysql 可以自动监测行锁导致的死锁并进行相应的处理,但是对于表锁导致的死锁不能自动监测,所以该参数主要用于,出现类似情况的时候等待指定的时间 ...

  9. mysql 开发进阶篇系列 10 锁问题 (相同索引键值或同一行或间隙锁的冲突)

    1.使用相同索引键值的冲突 由于mysql 的行锁是针对索引加的锁,不是针对记录加的锁,所以虽然是访问不同行的记录,但如果是使用相同的索引键,是会出现锁冲突的.设计时要注意 例如:city表city_ ...

随机推荐

  1. scrum与第一次teamwork

    一.关于Scrum Scrum是什么?是迭代式增量软件开发过程,通常用于敏捷软件开发,Scrum是一种偏重于过程的敏捷开发的具体方式.Scrum的英文意思是橄榄球运动的一个专业术语,表示“争球”的动作 ...

  2. 使用 Chrome 浏览器插件 Web Scraper 10分钟轻松实现网页数据的爬取

    web scraper 下载:Web-Scraper_v0.2.0.10 使用 Chrome 浏览器插件 Web Scraper 可以轻松实现网页数据的爬取,不写代码,鼠标操作,点哪爬哪,还不用考虑爬 ...

  3. web安全系列2:http初探

    web安全系列的第二篇 首先,我们先来理解两个名词C/S架构和B/S架构. 所谓C/S架构,就是客户机/服务器架构,而B/S架构就是浏览器/服务器架构.C/S是通常的桌面程序的架构方式,而B/S就是网 ...

  4. 小白的CTF学习之路7——内存与硬盘

    前天去网吧跟朋友包宿,导致昨天一整天都报废,今天早上研究了一下nethunter导致手机成功变砖,感冒不停地咳嗽,这些理由应该足够我前两天拖更了吧,下面开始正题 磁盘学习路线 虚拟缓存 虚拟内存 节约 ...

  5. Linux---设备文件名和挂载点

    分区: 1.分区: MBR   GPT 2.格式化  : 为了写入文件系统 3.设备文件名 4.什么是挂载点? 挂载点:使用已经存在的空目录作为挂载点 挂载: 必须分区: / (根分区) swap分区 ...

  6. Error resolving template [xxx], template might not exist or might not be exist

    Springboot+thymeleaf+mybatis 抛Error resolving template [xxx], template might not exist的异常 原因是我们在pom. ...

  7. suse 11 pip pip3使用过程中遇到的各种问题

    在安装完成python3.6后,使用pip3安装某些插件,报如下错误 linux-9qk9:~ # pip3 install ipython pip is configured with locati ...

  8. SSM+MyBatis框架详解

  9. prim算法和克鲁斯卡尔算法

    Prim 设图G=(V,E)是一个具有n个顶点的连通网,其生成树的顶点集合为U.首先把v0放入U,再在所有的u∈U,v∈V-U的边(u,v)∈E中找一条最小权值的边,加入生成树,并把该边的v加入U集合 ...

  10. idea与maven整合

    1.官网下载 apache-maven-3.3.3 2.解压安装后配置conf-settings文件 a. <localRepository>E:\JAVA\maven_cangku< ...