mysql备份、恢复之xtrabackup

xtrabackup: 由percona提供,取代ibbackup备份工具.用来备份其xtradb引擎数据,xtradb本身就是InnoDB增强版完全兼容InnoDB,只支持MyISAM温备,更多高级特性支持InnoDB.

xtrabackup高级功能依赖于MySQL InnoDB引擎是否启用每表单个表空间,否则不能使用单表导入导出

特点:

(1)备份过程快速、可靠

(2)备份过程不会打断正在执行的事务

(3)能够基于压缩等功能节约磁盘空间和流量

(4)自动实现备份检验

(5)还原速度快

安装percona xtrabackup工具:

[[email protected] mydata]# yum -y install perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL               主要安装 perl-DBD-MySQL perl-Time-HiRes包

rpm -ivh libev4-Version.x86_64.rpm 依赖于libev4 64位版本RPM包
rpm -ivh percona-xtrabackup-2.3.2-1.el6.x86_64.rpm

常用选项:

--host     指定主机

--user     指定用户名

--password    指定密码

--port      指定端口

--databases     指定数据库

--incremental    创建增量备份

--incremental-basedir   指定包含完全备份的目录

--incremental-dir      指定包含增量备份的目录

--apply-log        对备份进行预处理操作

一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处理不一致状态。“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态。

--redo-only      不回滚未提交事务

--copy-back     恢复备份目录

使用innobakupex备份时,其会调用xtrabackup备份所有的InnoDB表,复制所有关于表结构定义的相关文件(.frm)、以及MyISAM、MERGE、CSV和ARCHIVE表的相关文件,同时还会备份触发器和数据库配置信息相关的文件,这些文件会被保存至一个以时间命令的目录中。

备份的同时,innobackupex还会在备份目录中创建如下文件:

(1)xtrabackup_checkpoints —— 备份类型(如完全或增量)、备份状态(如是否已经为prepared状态)和LSN(日志序列号)范围信息;每个InnoDB页(通常为16k大小)都会包含一个日志序列号,即LSN。LSN是整个数据库系统的系统版本号,每个页面相关的LSN能够表明此页面最近是如何发生改变的。

(2)xtrabackup_binlog_info —— mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置。

(3)xtrabackup_binlog_pos_innodb —— 二进制日志文件及用于InnoDB或XtraDB表的二进制日志文件的当前position。

(4)xtrabackup_binary —— 备份中用到的xtrabackup的可执行文件;

(5)backup-my.cnf —— 备份命令用到的配置选项信息;

在使用innobackupex进行备份时,还可以使用--no-timestamp选项来阻止命令自动创建一个以时间命名的目录;如此一来,innobackupex命令将会创建一个BACKUP-DIR目录来存储备份数据。

如果要使用一个最小权限的用户进行备份,则可基于如下命令创建此类用户:

mysql> CREATE USER ‘backuser‘@‘localhost‘ IDENTIFIED BY ‘backuser‘   创建用户

mysql> REVOKE ALL PRIVILEGES,GRANT OPTION FROM ‘backuser‘@‘localhost‘; 回收此用户所有权限

mysql> GRANT RELOAD,LOCK TABLES,REPLICATION CLIENT ON *.* TO ‘baskuser‘@‘localhost‘;

授权刷新、锁定表、用户查看服务器状态

mysql> FLUSH PRIVILEGES;   刷新授权表

备份过程 :

   注意:备份时需启动MySQL,恢复时需关闭MySQL,清空mysql数据目录且不能重新初始化,恢复数据后应该立即进行一次完全备份

   完全备份:

innobackupex --user=backuser --password=backuser /backup/xtrabackup/

备份会自动生成以当前日期时间结尾的文件

增量备份1:

innobackupex --user=backuser --password=backuser --incremental /backup/xtrabackup/ --incremental-basedir=/backup/xtrabackup/2016-06-14_16-37-07/   basedir指定完全备份

增量备份2:

innobackupex --user=backuser --password=backuser --incremental /backup/xtrabackup/ --incremental-basedir=/backup/xtrabackup/2016-06-14_16-44-03/   basedir指定增量备份1

导出崩溃前二进制日志:

mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000028 |      4200|              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

mysqlbinlog mysql-bin.000028 --start-position=3204 --stop-position=4200 > /backup/xtrabackup/increment.sql      查看增量备份所处文件及位置,导出崩溃前数据

恢复过程:

“准备”(prepare)增量备份与整理完全备份有着一些不同,尤其要注意的是:

(1)需要在每个备份(包括完全和各个增量备份)上,将已经提交的事务进行“重放”.“重放”之后,所有的备份数据将合并到完全备份上。

(2)基于所有的备份将未提交的事务进行“回滚”   需要使用选项--apply-log --redo-only

预处理完全备份:

innobackupex --apply-log --redo-only /backup/xtrabackup/2016-06-14_16-37-07/

预处理增量备份1:

innobackupex --apply-log --redo-only /backup/xtrabackup/2016-06-14_16-37-07/ --incremental-dir=/backup/xtrabackup/2016-06-14_16-44-03/

预处理增量备份2:

innobackupex --apply-log --redo-only /backup/xtrabackup/2016-06-14_16-37-07/ --incremental-dir=/backup/xtrabackup/2016-06-14_16-45-26/

恢复完全备份:    因为前面增量备份已经预处理至完全备份

innobackupex --copy-back 2016-06-14_16-37-07/

恢复崩溃前二进制日志:

mysql> SET sql_log_bin=0;        关闭二进制日志功能

mysql> SOURCE /backup/xtrabackup/increment.sql;     恢复二进制日志备份

mysql> SET sql_log_bin=1;        恢复完成开启二进制日志

mysql> FLUSH PRIVILEGES;           恢复完成重读授权表

在启动mysqld服务之前还需要事先修改数据文件的属主和属组

chown -R  mysql:mysql  /mydata/data/

cat /backup/xtrabackup/2016-06-14_16-45-26/xtrabackup_binlog_info

查看增量备份2的日志文件及位置

cat /backup/xtrabackup/2016-06-14_16-37-07/ xtrabackup_binlog_info

查看完全备份的日志文件及位置与增量备份2是否一致

如果最后一次增量备份有未提交事务,则只能MySQL启动后自动修复,类似MySQL崩溃后修复动作

至此使用xtrabackup备份、恢复mysql完成,如有错误请大家指教!

时间: 2024-10-18 02:17:12

mysql备份、恢复之xtrabackup的相关文章

MySQL备份恢复之XtraBackup

一. 简介 我们知道,针对InnoDB存储引擎,MySQL本身没有提供合适的热备工具,ibbackup虽是一款高效的首选热备方式,但它是是收费的.好在Percona公司给大家提供了一个开源.免费的Xtrabackup热备工具,它可实现ibbackup的所有功能,并且还扩展支持真正的增量备份功能,是商业备份工具InnoDB Hotbackup的一个很好的替代品. Xtrabackup包括两个主要工具:Xtrabackup和innobackupex: Xtrabackup只能备份InnoDB和Xtr

mysql备份之xtrabackup

mysql备份之xtrabackup(建议用来备份innodb) 下载地址:https://www.percona.com/downloads/XtraBackup/ 安装xtrabackup [[email protected] ~]# yum install percona-xtrabackup 完全备份 节点一 修改配置文件,设置为每张表单独一个表空间,此项必须在安装数据库的时候就设置 [[email protected] ~]# vim /etc/my.cnf [mysqld] inno

MySQL备份工具XtraBackup的使用

xtrabackup简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具.特点: (1)备份过程快速.可靠: (2)备份过程不会打断正在执行的事务: (3)能够基于压缩等功能节约磁盘空间和流量: (4)自动实现备份检验: (5)还原速度快: 官方下载地址:地址,你可以通过此链接下载最新版. #wget https://www.percona.com/downloads/XtraBac

mysql 备份软件 Xtrabackup 的 xtrabackup_binlog_pos_innodb和xtrabackup_binlog_info 文件区别

今天在操作 innobackupex 的时候,执行 change master to 的时候发现  xtrabackup_binlog_pos_innodb   xtrabackup_binlog_info 两个文件对应的master 的 binary log 位置不一致:  less xtrabackup_binlog_info  mysql-bin.002961 70176740 less xtrabackup_binlog_pos_innodb  mysql-bin.002961 3871

MySQL备份恢复工具xtrabackup

1.简介 XtraBackup是Percona提供的一个开源的.免费的MySQL数据库备份工具,它能够对InnoDB和XtraDB数据库进行热备份,据官方介绍,XtraBackup具有以下特点: 1. 备份过程快速.可靠: 2. 备份过程不会打断正在执行的事务: 3. 能够基于压缩等功能节约磁盘空间和流量: 4. 自动实现备份检验: 5. 恢复速度快. 2.安装XtraBackup 最新版本可以从https://www.percona.com/software/percona-xtrabacku

mysql备份实战-Xtrabackup工具备份

导读 大数据量备份与还原,始终是个难点.当MYSQL超10G,用mysqldump来导出就比较慢了.这里介绍一个强大的开源工具Xtrabackup. Xtrabackup简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具,是商业备份工具InnoDB Hotbackup的一个很好的替代品.特点: (1)备份过程快速.可靠: (2)备份过程不会打断正在执行的事务: (3)能够基于压缩等

MySQL数据库的备份与恢复之xtrabackup工具的使用

一. 为什么需要备份 在实际生产环境中误删操作,硬件损坏都会导致数据不可用,这个时候我们就需要备份来实现灾难恢复.还需要硬件级的冗余,例如raid,也不能取代备份操作,因为数据误删之后数据也是没有的,所以备份必不可少. 二. 备份的分类 1.物理备份和逻辑备份 物理备份 : 它是直接拷贝mysql的存储在磁盘上的数据文件.这种备份使用的空间大,特别是innodb存储数据使用的表空间,因为表空间分配大小是按一定的比例增长,所以存在没有使用的空间.但是恢复时使用的时间少.逻辑备份 : 将数据以sql

mysql的备份: Xtrabackup的使用方法

Xtrabackup: Xtrabackup的优点:1.快速 ,支持并行备份.--parallel=8 2.在线备份备份,不阻塞读写(INNODB),对MYISAM添加全局锁3.支持在线搭建主从复制 Xtrabackup的基本实用方法: -- 全备innobackupex --defaults-file=/etc/my.cnf --user=root  --socket=/var/lib/mysql/mysql.sock --parallel=8 /home/backup/ /home/back

MySQL 採用Xtrabackup对数据库进行全库备份

1,xtrabackup简单介绍 关于数据库备份以及备份工具.參考:http://blog.itpub.net/26230597/viewspace-1460065/,这里来介绍xtrabackup已经怎样使用xtrabackup进行对数据库的全备份已经恢复. 2,xtrabackup下载 下载地址为:http://www.percona.com/downloads/XtraBackup/ Chorm浏览器以下.在"DOWNLOADPERCONA XTRABACKUP"以下,选择版本号