tar -xzvf percona-xtrabackup-2.1.9-744-Linux-x86_64.tar.gz

cd percona-xtrabackup-2.1.9-Linux-x86_64/bin

cp * /usr/bin/

--apply-log选项的命令是将备份文件中的日志应用到备份文件中的数据文件上

--no-timestamp,指定了这个选项备份会直接备份在BACKUP-DIR,不再创建时间戳文件夹。

--default-file,指定配置文件,用来配置innobackupex的选线

--backup  实施备份到target-dir

--target-dir 备份文件的存放目录路径

--copy-back 做数据恢复时将备份数据文件拷贝到MySQL服务器的datadir

--remote-host 通过ssh将备份数据存储到进程服务器上;

--no-lock

--incremental-dir指定要恢复的增量备份的位置

备份完数据库之后,下一步是预备数据库,因为数据文件在某个时间点上,并不是一致的,所以需要预备让数据文件在某个时间点一致,--prepare就是来完成,让数据文件保持一致性

全部备份

/usr/bin/innobackupex --user=root --password=qkgweb401 --defaults-file=/etc/my.cnf /home/mysql/ 2>/home/mysql/data.log

/usr/bin/innobackupex --user=root --password=qkgweb401 --database="db1 db2" --defaults-file=/etc/my.cnf /home/mysql/ 2>/home/mysql/data.log

xtrbackup还支持并行备份,默认情况下xtrabackup备份时只会开启一个进程进行数据文件的备份,若配置参数--parallel=N可以让xtrabackup开启N个子进程对多个数据文件进行并发备份,这样可以加快备份的速度

当然服务器的IO处理能力以及对服务器的影响也是要考虑的,所以另一个参数--throttle=IOS会与它同时使用,这个参数用来限制备份过程中每秒读写的IO次数,对服务器的IO是一个保护

innobackupex --parallel=4 --throttle=400 ${BACKUP_DIR}/part-base

恢复:

删除数据库数据:

rm -rf /data/local/mysql/var/*

innobackupex --apply-log --user=root --defaults-file=/etc/my.cnf /home/mysql/2015-03-24_10-35-53/

innobackupex --user=root --password=wg1q2w3e --copy-back /home/mysql/2015-03-24_10-35-53/

cd /data/local/mysql/ && chown -R root . && chown -R mysql var && chgrp -R mysql .

service mysqld start

增量备份

全备:

/usr/bin/innobackupex --user=root --password=qkgweb401 --defaults-file=/etc/my.cnf /home/mysql/ 2>/home/mysql/data.log

第一次增量备份

/usr/bin/innobackupex --user=root --password=qkgweb401 --defaults-file=/etc/my.cnf --incremental /home/mysql/incr1 --incremental-basedir=/home/mysql/2015-03-25_10-58-43

第二次增量备份

innobackupex --defaults-file=/etc/my.cnf --user=root --password=qkgweb401 --incremental --incremental-basedir=/home/mysql/incr1/2015-03-25_11-34-36 /home/mysql/incr2

增量备份恢复

service mysqld stop

rm -rf /data/local/mysql/var/*

合并完全备份:务必使用--redo-only选项,强制xtrabackup跳过"rollback"

innobackupex --apply-log /home/mysql/2015-03-26_17-09-31

合并第一个增量备份到完全备份

innobackupex --apply-log /home/mysql/2015-03-26_17-09-31 --incremental-dir=/home/mysql/incr1/2015-03-26_17-22-31/

合并第二个增量备份(合并最后一个增量备份到完全备份:最后一个增量备份不需要加--redo-only)

innobackupex --apply-log /home/mysql/2015-03-26_17-09-31 --incremental-dir=/home/mysql/incr2/2015-03-26_17-31-09

选做:

一旦合并了完全备份和所有增量备份,就可以回滚没有提交的事务

该步骤是可选的,如果没有做,在数据库开启时会自动进行回滚没有提交的事务,同crash后恢复,但是做了准备,可以减少服务启动时间。innobackupex工具不会创建ib_log*文件,如要创建事务日志文件,需使用xtrabackup --prepare,否则在服务启动时进行创建。

innobackupex --apply-log /home/mysql/2015-03-26_17-09-31

完整数据还原

innobackupex --copy-back /home/mysql/2015-03-26_17-09-31

cd /data/local/mysql/ && chown -R root . && chown -R mysql var && chgrp -R mysql .

service mysqld start

===============================================================================

并行备份

xtrbackup还支持并行备份,默认情况下xtrabackup备份时只会开启一个进程进行数据文件的备份,若配置参数--parallel=N可以让xtrabackup开启N个子进程对多个数据文件进行并发备份,这样可以加快备份的速度。当然服务器的IO处理能力以及对服务器的影响也是要考虑的,所以另一个参数--throttle=IOS会与它同时使用,这个参数用来限制备份过程中每秒读写的IO次数,对服务器的IO是一个保护。

这两个参数xtrabackup和innobackupex都支持,举例如下:

$ innobackupex --parallel=4 --throttle=400 ${BACKUP_DIR}/part-base

注意:对同一个数据文件只会有一个进程在备份。

======================================

http://sofar.blog.51cto.com/353572/1313649

部分备份和恢复

xtrabackup可以只备份/恢复部分库表,可以正则模式匹配或者是你想备份库表的列表,但InnoDB表必须是独立表空间,同时不能使用流备份功能。

1)、使用正则模式匹配备份部分库表,需要使用参数--include,语句类似如下:

$ innobackupex --include=’^qb.*’ ${BACKUP_DIR}/part-base

2)、使用数据库列表备份部分库,需要使用参数--databases,语句类似如下:

$ innobackupex --databases=qb0 qb1 qb2 qb3 ${BACKUP_DIR}/part-base

3) 、使用表列表备份部分表,需要使用参数--tables-file,语句类似如下:

$ innobackupex --tables-list=${CONF_DIR}/tab.conf ${BACKUP_DIR}/part-base

注:在我们的现实应用中,很少会只备份集群中部分库表,所以只是了解此功能即可,若有现实需要可以参考percona官方资料以获取更多信息。

能备份部分库表,也就能根据完全备份集进行部分库表的恢复,在现实中很少会用到,但还是说一下吧。

首先在“准备prepare”的过程中,使用参数--export将表导出,这个导出会将每个InnoDB表创建一个以.exp结尾的文件,这些文件为之后的导入过程服务。

$ innobackupex --apply-log --export ${BACKUP_DIR}/base

然后将你需要恢复的表的ibd和exp文件复制到目标机器,在目标机器上执行导入:

mysql> create table t()engine=innodb; //此处需要DBA手动创建一个同结构的表或表已存在 mysql> ALTER TABLE t DISCARD TABLESPACE; $ cp t.ibd t.exp ${DATA_DIR}/${DB}/ mysql> ALTER TABLE t IMPORT TABLESPACE;

这样的导出导入就可以保住恢复的表可以与数据库其他表保持一致性了。

脚本:

#!/bin/bash

DATE=`date +%Y%m%d`

DATADIR=`date +%Y%m%d%H`

BACKUPDIR="/data/webgame/log/xtrabackup"

SQLIP='127.0.0.1'

[ -d /data/webgame/log/xtrabackup ] || mkdir -p /data/webgame/log/xtrabackup

[ -d ${BACKUPDIR}/${DATE} ] || mkdir -p ${BACKUPDIR}/${DATE}

if [ ! -d "${BACKUPDIR}/${DATE}/trunk" ]

then

/usr/bin/innobackupex --host=${SQLIP} --user=webgame --password=qkgweb401 --defaults-file=/etc/my.cnf --no-timestamp ${BACKUPDIR}/${DATE}/trunk 2>${BACKUPDIR}/${DATE}/trunk.log

elif [ ! -d "${BACKUPDIR}/${DATE}/incr4" ]

then

/usr/bin/innobackupex --host=${SQLIP} --user=webgame --password=qkgweb401 --defaults-file=/etc/my.cnf --no-timestamp --incremental ${BACKUPDIR}/${DATE}/incr4  --incremental-basedir=${BACKUPDIR}/${DATE}/trunk 2>${BACKUPDIR}/${DATE}/incr4.log

elif [ ! -d "${BACKUPDIR}/${DATE}/incr7" ]

then

/usr/bin/innobackupex --host=${SQLIP} --user=webgame --password=qkgweb401 --defaults-file=/etc/my.cnf --no-timestamp --incremental ${BACKUPDIR}/${DATE}/incr7  --incremental-basedir=${BACKUPDIR}/${DATE}/incr4 2>${BACKUPDIR}/${DATE}/incr7.log

elif [ ! -d "${BACKUPDIR}/${DATE}/incr10" ]

then

/usr/bin/innobackupex --host=${SQLIP} --user=webgame --password=qkgweb401 --defaults-file=/etc/my.cnf --no-timestamp --incremental ${BACKUPDIR}/${DATE}/incr10  --incremental-basedir=${BACKUPDIR}/${DATE}/incr7 2>${BACKUPDIR}/${DATE}/incr10.log

elif [ ! -d "${BACKUPDIR}/${DATE}/incr13" ]

then

/usr/bin/innobackupex --host=${SQLIP} --user=webgame --password=qkgweb401 --defaults-file=/etc/my.cnf --no-timestamp --incremental ${BACKUPDIR}/${DATE}/incr13  --incremental-basedir=${BACKUPDIR}/${DATE}/incr10 2>${BACKUPDIR}/${DATE}/incr13.log

elif [ ! -d "${BACKUPDIR}/${DATE}/incr16" ]

then

/usr/bin/innobackupex --host=${SQLIP} --user=webgame --password=qkgweb401 --defaults-file=/etc/my.cnf --no-timestamp --incremental ${BACKUPDIR}/${DATE}/incr16  --incremental-basedir=${BACKUPDIR}/${DATE}/incr13 2>${BACKUPDIR}/${DATE}/incr16.log

elif [ ! -d "${BACKUPDIR}/${DATE}/incr19" ]

then

/usr/bin/innobackupex --host=${SQLIP} --user=webgame --password=qkgweb401 --defaults-file=/etc/my.cnf --no-timestamp --incremental ${BACKUPDIR}/${DATE}/incr19  --incremental-basedir=${BACKUPDIR}/${DATE}/incr16 2>${BACKUPDIR}/${DATE}/incr19.log

elif [ ! -d "${BACKUPDIR}/${DATE}/incr22" ]

then

/usr/bin/innobackupex --host=${SQLIP} --user=webgame --password=qkgweb401 --defaults-file=/etc/my.cnf --no-timestamp --incremental ${BACKUPDIR}/${DATE}/incr22  --incremental-basedir=${BACKUPDIR}/${DATE}/incr19 2>${BACKUPDIR}/${DATE}/incr22.log

fi

xtrabackup备份恢复的更多相关文章

  1. 从xtrabackup备份恢复单表【转】

    目前对MySQL比较流行的备份方式有两种,一种上是使用自带的mysqldump,另一种是xtrabackup,对于数据时大的环境,普遍使用了xtrabackup+binlog进行全量或者增量备份,那么 ...

  2. 从xtrabackup备份恢复单表

    目前对MySQL比较流行的备份方式有两种,一种上是使用自带的mysqldump,另一种是xtrabackup,对于数据时大的环境,普遍使用了xtrabackup+binlog进行全量或者增量备份,那么 ...

  3. mysql xtrabackup 备份恢复实现,mysql命令备份数据库,打包压缩数据库

    简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具.特点: (1)备份过程快速.可靠 ...

  4. xtrabackup 备份恢复

    XtraBackup物理备份 Percona XtraBackup是世界上唯一的开源,免费的MySQL热备份软件,为InnoDB和XtraDB 数据库执行非阻塞备份.使用Percona XtraBac ...

  5. xtrabackup备份恢复过程

    备份 1.全备 innobackupex --user=root --password=123456 --no-timestamp /backup/full 增加数据 mysql> insert ...

  6. xtrabackup备份恢复测试

    http://blog.chinaunix.net/uid-20682026-id-3319204.html

  7. Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复

    Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具. Xtrabackup中主要包含两个工 ...

  8. xtrabackup备份(MySQL备份)与恢复

    xtrabackup备份(MySQL备份)与恢复 1. innobackupex参数选项 --no-timestamp: 不创建一个时间戳 --defaults-file=[MY.CNF] //指定配 ...

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

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

  10. xtrabackup 对pxc节点进行备份恢复

    xtrabackup 对pxc节点进行备份恢复 全量备份一个节点的数据,当节点挂掉时,使用备份恢复到最近状态,再启动节点加入集群. 备份 xtrabackup 命令小解释: --defaults-fi ...

随机推荐

  1. Spring Boot框架中使用Jackson的处理总结

    1.前言 通常我们在使用Spring Boot框架时,如果没有特别指定接口的序列化类型,则会使用Spring Boot框架默认集成的Jackson框架进行处理,通过Jackson框架将服务端响应的数据 ...

  2. 从零开始的 dbt 入门教程 (dbt cloud 自动化篇)

    一.引 在前面的几篇文章中,我们从 dbt core 聊到了 dbt 项目工程化,我相信前几篇文章足够各位数据开发师从零快速入门 dbt 开发,那么到现在我们更迫切需要解决的是如何让数据更新做到定时化 ...

  3. C# OpenCvSharp-HoughCircles(霍夫圆检测) 简单计数

    效果 项目 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.D ...

  4. 做easyexcel遇到的问题数据库采用的mybatis-plus

    导入坐标 <!-- easyexcel依赖--><dependency> <groupId>com.alibaba</groupId> <arti ...

  5. hadoop集群实现分发文件命令xsync脚本文件

    1 #!/bin/bash 2 3 #1. 判断参数个数 4 if [ $# -lt 1 ] 5 then 6 echo Not Enough Arguement! 7 exit; 8 fi 9 10 ...

  6. 【已解决】Hadoop_03 解决Hadoop输入jps没有NameNode的问题

    问题描述: 解决方案: 1.先运行 stop-all.sh 2.格式化 namdenode(在这之前要先删除原目录,即core-site.xml下配置的<name>hadoop.tmp.d ...

  7. #dp,模型转换,排列组合#AT1983 [AGC001E] BBQ Hard

    题目 有两个长度为\(n\)的序列\(a,b\),需要求 \[\sum_{i=1}^n\sum_{j=i+1}^nC(a_i+b_i+a_j+b_j,a_i+a_j) \] 其中\(n\leq 200 ...

  8. 【FAQ】HarmonyOS SDK 闭源开放能力 —Map Kit

    1.问题描述 在App中供用户在地图上选择地址,目前在使用Map Kit结合geolocationManager逆地理编码时获取的地址信息描述不准确,希望能提供相应的Demo参考. 解决方案 Demo ...

  9. Centos7、CentOS8、CentOS9 修改硬盘分区大小扩充root分区大小

    Centos7 修改硬盘分区大小,实现CentOS无损分区扩容 扩充root分区大小 安装了CentOS7 开发环境及软件后,发现root分区已经才剩下不到1G空间,难不成要干掉重装,OMG,NO! ...

  10. 使用WebApi+Vue3从0到1搭建《权限管理系统》:二、搭建JWT系统鉴权

    视频地址:[WebApi+Vue3从0到1搭建<权限管理系统>系列视频:搭建JWT系统鉴权-哔哩哔哩] https://b23.tv/R6cOcDO qq群:801913255 一.在ap ...