xtrabackup备份(MySQL备份)与恢复

1. innobackupex参数选项

--no-timestamp: 不创建一个时间戳
--defaults-file=[MY.CNF] //指定配置文件:只能从给定的文件中读取默认选项。 且必须作为命令行上的第一个选项;必须是一个真实的文件,它不能是一个符号链接。
--databases=# //指定备份的数据库和表,格式为:--database="db1[.tb1] db2[.tb2]" 多个库之间以空格隔开,如果此选项不被指定,将会备份所有的数据库。
--include=REGEXP //用正则表达式的方式指定要备份的数据库和表,格式为 --include=‘^mydb[.]mytb’ ,对每个库中的每个表逐一匹配,因此会创建所有的库,不过是空的目录。--include 传递给 xtrabackup --tables。 --tables-file=FILE //此选项的参数需要是一个文件名,此文件中每行包含一个要备份的表的完整名称,格式为databasename.tablename。该选项传递给 xtrabackup --tables-file,与--tables选项不同,只有要备份的表的库才会被创建。 注意:部分备份(--include、--tables-file、--database)需要开启 innodb_file_per_table 。 --compact //创建紧凑型备份,忽略所有辅助索引页,只备份data page;通过--apply-log中重建索引--rebuild-indexs。 --compress //此选项指示xtrabackup压缩备份的InnoDB数据文件,会生成 *.qp 文件。 --apply-log //应用 BACKUP-DIR 中的 xtrabackup_logfile 事务日志文件。一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处于不一致状态。“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件使得数据文件处于一致性状态。 --use-memory=# //此选项接受一个字符参数(1M/1MB,1G/1GB,默认100M),仅与--apply-log一起使用,该选项指定prepare时用于崩溃恢复(crash-recovery)的内存。 --copy-back //拷贝先前备份所有文件到它们的原始路径。但原路径下不能有任何文件或目录,除非指定 --force-non-empty-directories 选项。 --incremental-basedir=DIRECTORY //该选项接受一个字符串参数,该参数指定作为增量备份的基本数据集的完整备份目录。它与 --incremental 一起使用。 --incremental-dir=DIRECTORY //该选项接受一个字符串参数,该参数指定了增量备份将与完整备份相结合的目录,以便进行新的完整备份。它与 --incremental 选项一起使用。 --redo-only //在“准备基本完整备份” 和 “合并所有的增量备份(除了最后一个增备)”时使用此选项。它直接传递给xtrabackup的 xtrabackup --apply-log-only 选项,使xtrabackup跳过"undo"阶段,只做"redo"操作。如果后面还有增量备份应用到这个全备,这是必要的。有关详细信息,请参阅xtrabackup文档。 --parallel=NUMBER-OF-THREADS //此选项接受一个整数参数,指定xtrabackup子进程应用于同时备份文件的线程数。请注意,此选项仅适用于文件级别,也就是说,如果您有多个.ibd文件,则它们将被并行复制; 如果您的表一起存储在一个表空间文件中,它将不起作用。

2.全量备份恢复

创建备份恢复的用户并赋权

create user pxb@'localhost' identified by '123456';

grant reload,process,lock tables,replication client on . to pxb@localhost;

创建存放备份文件的目录

mkdir -pv /var/data

进行数据库全量备份:

innobackupex --defaults-file=/etc/my.cnf --user=pxb --password=123456 /var/data/

[root@aliy ~]# ll /var/data/2018-08-28_09-06-39/

total 18460

-rw-r----- 1 root root 417 Aug 28 09:06 backup-my.cnf

-rw-r----- 1 root root 18874368 Aug 28 09:06 ibdata1

drwxr-x--- 2 root root 4096 Aug 28 09:06 mysql

drwxr-x--- 2 root root 4096 Aug 28 09:06 performance_schema

drwxr-x--- 2 root root 4096 Aug 28 09:06 test

-rw-r----- 1 root root 113 Aug 28 09:06 xtrabackup_checkpoints

-rw-r----- 1 root root 454 Aug 28 09:06 xtrabackup_info

-rw-r----- 1 root root 2560 Aug 28 09:06 xtrabackup_logfile

全量备份恢复

systemctl stop mariadb

rm /var/lib/mysql -rf

mkdir /var/lib/mysql

准备一个完全备份: --apply-log,执行之后 xtrabackup_checkpoints 文件中的 backup_type = full-prepared

innobackupex --apply-log /var/data/2018-08-28_09-06-39/

执行恢复操作:

innobackupex --defaults-file=/etc/my.cnf --copy-back /var/data/2018-08-28_09-06-39/

更改data目录权限并启动mysql:

chown -R mysql:mysql /var/lib/mysql

systemctl start mariadb

3. 增量备份恢复

所谓增量备份恢复就是在全量的基础上进行增量备份。

增量备份1:以全量为基准

innobackupex --defaults-file=/etc/my.cnf --user=pxb --password=123456 --incremental /var/data/inc --incremental-basedir=/var/data/2018-08-28_10-01-53/ --parallel=2

中途进行了数据添加操作。

增量备份2:以增量备份1为基准

innobackupex --defaults-file=/etc/my.cnf --user=pxb --password=123456 --incremental /var/data/inc/ --incremental-basedir=/var/data/inc/2018-08-28_10-04-22/ --parallel=2

增量备份的恢复:

步骤:

  1. 恢复完全备份
  2. 恢复增量备份到完全备份(开始恢复的增量备份要添加--redo-only参数,到最后一次增量备份要去掉--redo-only)
  3. 对整体的完全备份进行恢复,回滚提交的数据

准备一个全备:

innobackupex --apply-log --redo-only /var/data/2018-08-28_10-01-53/

将增量1应用到完全备份

innobackupex --apply-log --redo-only /var/data/2018-08-28_10-01-53 --incremental-dir=/var/data/inc/2018-08-28_10-04-22/

将增量2应用到完全备份,不用加--redo-only参数

innobackupex --apply-log /var/data/2018-08-28_10-01-53 --incremental-dir=/var/data/inc/2018-08-28_10-07-40/

把所有的完全备份合并到一起进行一次apply操作,回滚提交的数据

innobackupex --apply-log /var/data/2018-08-28_10-01-53/

模拟:将数据库里的内容删除

systemctl stop mariadb

mv /var/lib/mysql /var/lib/mysql.bak

mkdir /var/lib/mysql

恢复:

innobackupex --defaults-file=/etc/my.cnf --copy-back /var/data/2018-08-28_10-01-53/

chown -R mysql:mysql /var/lib/mysql

systemctl start maraidb

流备份以及压缩备份

Xtrabackup对备份的数据文件支持“流”功能,即可以将备份的数据通过STDOUT传输给tar程序进行归档,而不是默认的直接保存至某备份目录中。要使用此功能,仅需要使用--stream选项即可。如:

innobackupex --stream=tar /data/backup/|gzip >/data/backup/`date +%F`.tar.gz

也可以使用如下命令将数据备份至其他服务器

innobackupex --default-file=/etc/my.cnf --stream=tar /backup | ssh user@www.magedu.com " cat -> /backups/date +%F_%H-%M-%S.tar"

同时也可将备份的数据文件存储到远程的主机,使用--remote-host来实现

innobackupex --remote-host=root@www.magedu.com /path/IN/REMOTE/HOST/to/backup

xtrabackup备份(MySQL备份)与恢复的更多相关文章

  1. 使用第三方工具Xtrabackup进行MySQL备份

    使用Xtrabackup进行MySQL备份: 一.安装 1.简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtr ...

  2. Percona XtraBackup 关于 MySQL备份还原的详细测试

    一. Percona XtraBackup 的优点. (1)无需停止数据库进行InnoDB热备: (2)增量备份MySQL: (3)流压缩传输到其它服务器: (4)在线移动表: (5)能够比较容易地创 ...

  3. Xtrabackup实现MySQL备份

    一.xtrabackup介绍 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写)它由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上 ...

  4. 基于xtrabackup实现mysql备份还原

    简介 Xtrabackup2.2版之前包括4个可执行文件: innobackupex: Perl 脚本 xtrabackup: C/C++ 编译的二进制 xbstream: 支持并发写的流文件格式 x ...

  5. 使用Xtrabackup进行MySQL备份 zz

    zz from  http://www.magedu.com/ 一.安装 1.简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对i ...

  6. linux备份mysql文件并恢复的脚本,以及其中出现的错误:ERROR: ASCII '\0' appeared in the statement

    首先是在网上找了一下教程,代码很简单 #!/bin/bash folder=~/test time=`date +%Y%m%d` mysqldump -u user -p pwd -hlocalhos ...

  7. Mysql备份系列(1)--备份方案总结性梳理

    mysql数据库备份有多么重要已不需过多赘述了,废话不多说!以下总结了mysql数据库的几种备份方案: 一.binlog二进制日志通常作为备份的重要资源,所以再说备份方案之前先总结一下binlog日志 ...

  8. Mysql备份方案总结性梳理

    Mysql备份方案总结性梳理   服务器 mysql 日志 数据库 配置 Mariadb binlog   mysql数据库备份有多么重要已不需过多赘述了,废话不多说!以下总结了mysql数据库的几种 ...

  9. MySQL 备份数据那点事

    mysqldump 什么是 mysqldump ? mysqldump 是 MySQL 用于执行逻辑备份的一款工具,可以根据原始数据库对象以及表的定义和数据来生成一系列可以被执行的 SQL 语句. 通 ...

  10. mysql之使用xtrabackup进行物理备份、恢复、在线克隆从库、在线重做主从

    注:图片来自<深入浅出MySQL 数据库开发 优化与管理维护 第2版> 物理备份和恢复 1.冷备份:停掉mysql再备份,一般很少用,因为很多应用不允许长时间停机,停机备份的可以直接CP数 ...

随机推荐

  1. 如何在.Net Core调用NodeJs

    概述 Microsoft.AspNetCore.NodeServices库 实例 新建aspnet core站点 添加nuget包 建立node环境,此处示例用于扫描wifi环境 建立nodejs的程 ...

  2. Json的学习

    json的简介 Json是项目中常用的一种,数据格式简单,易于读写,格式都是压缩的,占用带宽小,轻量级,支持多种语言,可以直接为服务器代码使用. json常用支持的转化,(map集合,字符串,还有对象 ...

  3. DICOM图像转出为bmp格式图像方法(matlab程序实现)

    在matlab中用dicomread读取dicom文件后,生成一个MxN矩阵(对应图像像素个数),每个像素灰度数据是int16格式 但是bmp图像灰度是int8格式的(灰度范围0~255),所以若想把 ...

  4. js初学练手:Csdn Ads Cleaner

    最新版本在这里哒:https://greasyfork.org/zh-CN/scripts/376621-csdn-ads-cleaner 隔壁csdn的广告太猖獗啦!写个js管管它 需配合Tempe ...

  5. hadoop hdfs ha 模式

    这是我自己在公司一个搭建公司大数据框架是自己的选项,在配置yarn ha 出现了nodemanager起不来的问题于是我把yarn搭建为普通yarn 如果有人解决 高yarn的nodemanager问 ...

  6. Linux进阶命令用法

    1.tr命令 可以对来自标准输入的字符进行替换.压缩和删除.它可以将一组字符变成另一组字符 选项 -c或——complerment:取代所有不属于第一字符集的字符: -d或——delete:删除所有属 ...

  7. toLatin1 qt

    Latin1是ISO-8859-1的别名,有些环境下写作Latin-1.ISO-8859-1ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F ...

  8. centos7搭建本地 Remix

    由于最近要弄加入某联盟链,是基于ETH 所以要弄一个开发环境 一.准备 安装 nodejs,npm,git 二.安装 git clone https://github.com/ethereum/rem ...

  9. BUAA_OO Summary——多项式求导问题

    从C.DS.计组一路折磨过来, 几乎都在采用过程化.函数式的编程思想.初接触面向对象的项目开发,经过了三周的对多项式求导问题的迭代开发,经历了设计.coding.测评环节,算是对面向对象有了一定的认识 ...

  10. java从pdf中提取文本

    一(单文件转换):下载pdfbox包,百度搜pdfbox.(fontbox-1.8.16.jar和pdfbox-app-1.8.16.jar) package pdf; import java.io. ...