mysql 开发进阶篇系列 44 物理备份与恢复( 热备份xtrabackup 工具介绍)
一.概述
物理备份和恢复又分为冷备份和热备份。与逻辑备份相比,它最大优点是备份和恢复的速度更快。因为物理备份的原理都是基于文件的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 |
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 |
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 |
Data & index file statistics |
数据和索引文件统计 |
InnoDB secondary indexes defragmentation |
InnoDB二级索引整理 |
support to minimize lock time |
支持最小化锁的时间 |
Backup history table |
备份历史表 |
External graphical user interfaces to |
用于备份/恢复的外部图形用户界面 |
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 工具介绍)的更多相关文章
- mysql 开发进阶篇系列 47 物理备份与恢复(xtrabackup 的完全备份恢复,恢复后重启失败总结)
一. 完全备份恢复说明 xtrabackup二进制文件有一个xtrabackup --copy-back选项,它将备份复制到服务器的datadir目录下.下面是通过 --target-dir 指定完全 ...
- mysql 开发进阶篇系列 46 物理备份与恢复( xtrabackup的 选项说明,增加备份用户,完全备份案例)
一. xtrabackup 选项说明 在操作xtrabackup备份与恢复之前,先看下该工具的选项,下面记录了xtrabackup二进制文件的部分命令行选项,后期把常用的选项在补上.点击查看xtrab ...
- mysql 开发进阶篇系列 48 物理备份与恢复(xtrabackup 的增量备份与恢复,以及备份总结)
一.增量备份概述 xtrabackup 和innobackupex 二个工具都支持增量备份,这意味着能复制自上次备份以来更改的数据.可以在每个完整备份之间执行许多增量备份,因此,您可以设置一个备份 ...
- mysql 开发进阶篇系列 45 物理备份与恢复(xtrabackup 安装,用户权限,配置)
一. 安装说明 安装XtraBackup 2.4 版本有三种方式: (1) 存储库安装Percona XtraBackup(推荐) (2 )下载的rpm或apt包安装Percona XtraBacku ...
- mysql 开发进阶篇系列 42 逻辑备份与恢复(mysqldump 的完全恢复)
一.概述 在作何数据库里,备份与恢复都是非常重要的.好的备份方法和备份策略将会使得数据库中的数据更加高效和安全.对于DBA来说,进行备份或恢复操作时要考虑的因素大概有如下: (1) 确定要备份的表的存 ...
- mysql 开发进阶篇系列 43 逻辑备份与恢复(mysqldump 的基于时间和位置的不完全恢复)
一. 概述 在上篇讲到了逻辑备份,使用mysqldump工具来备份一个库,并使用完全恢复还原了数据库.在结尾也讲到了误操作是不能用完全恢复的.解决办法是:我们需要恢复到误操作之前的状态,然后跳过误操作 ...
- mysql 开发进阶篇系列 55 权限与安全(安全事项 )
一. 操作系统层面安全 对于数据库来说,安全很重要,本章将从操作系统和数据库两个层面对mysql的安全问题进行了解. 1. 严格控制操作系统账号和权限 在数据库服务器上要严格控制操作系统的账号和权限, ...
- mysql 开发进阶篇系列 20 MySQL Server(innodb_lock_wait_timeout,innodb_support_xa,innodb _log_*)
1. innodb_lock_wait_timeout mysql 可以自动监测行锁导致的死锁并进行相应的处理,但是对于表锁导致的死锁不能自动监测,所以该参数主要用于,出现类似情况的时候等待指定的时间 ...
- mysql 开发进阶篇系列 10 锁问题 (相同索引键值或同一行或间隙锁的冲突)
1.使用相同索引键值的冲突 由于mysql 的行锁是针对索引加的锁,不是针对记录加的锁,所以虽然是访问不同行的记录,但如果是使用相同的索引键,是会出现锁冲突的.设计时要注意 例如:city表city_ ...
随机推荐
- scrum与第一次teamwork
一.关于Scrum Scrum是什么?是迭代式增量软件开发过程,通常用于敏捷软件开发,Scrum是一种偏重于过程的敏捷开发的具体方式.Scrum的英文意思是橄榄球运动的一个专业术语,表示“争球”的动作 ...
- 使用 Chrome 浏览器插件 Web Scraper 10分钟轻松实现网页数据的爬取
web scraper 下载:Web-Scraper_v0.2.0.10 使用 Chrome 浏览器插件 Web Scraper 可以轻松实现网页数据的爬取,不写代码,鼠标操作,点哪爬哪,还不用考虑爬 ...
- web安全系列2:http初探
web安全系列的第二篇 首先,我们先来理解两个名词C/S架构和B/S架构. 所谓C/S架构,就是客户机/服务器架构,而B/S架构就是浏览器/服务器架构.C/S是通常的桌面程序的架构方式,而B/S就是网 ...
- 小白的CTF学习之路7——内存与硬盘
前天去网吧跟朋友包宿,导致昨天一整天都报废,今天早上研究了一下nethunter导致手机成功变砖,感冒不停地咳嗽,这些理由应该足够我前两天拖更了吧,下面开始正题 磁盘学习路线 虚拟缓存 虚拟内存 节约 ...
- Linux---设备文件名和挂载点
分区: 1.分区: MBR GPT 2.格式化 : 为了写入文件系统 3.设备文件名 4.什么是挂载点? 挂载点:使用已经存在的空目录作为挂载点 挂载: 必须分区: / (根分区) swap分区 ...
- 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. ...
- suse 11 pip pip3使用过程中遇到的各种问题
在安装完成python3.6后,使用pip3安装某些插件,报如下错误 linux-9qk9:~ # pip3 install ipython pip is configured with locati ...
- SSM+MyBatis框架详解
- prim算法和克鲁斯卡尔算法
Prim 设图G=(V,E)是一个具有n个顶点的连通网,其生成树的顶点集合为U.首先把v0放入U,再在所有的u∈U,v∈V-U的边(u,v)∈E中找一条最小权值的边,加入生成树,并把该边的v加入U集合 ...
- idea与maven整合
1.官网下载 apache-maven-3.3.3 2.解压安装后配置conf-settings文件 a. <localRepository>E:\JAVA\maven_cangku< ...