一、  简单介绍

Percona XtraBackup是开源免费的MySQL数据库热备份软件,它能对InnoDB和XtraDB存储引擎的数据库非堵塞地备份(对于MyISAM的备份相同须要加表锁)。XtraBackup支持全部的Percona Server、MySQL、MariaDB和Drizzle。

XtraBackup优势 :
1、无需停止数据库进行InnoDB热备
2、增量备份MySQL
3、流压缩到传输到其他server
4、能比較easy地创建主从同步
5、备份MySQL时不会增大server负载

安装XtraBackup后,事实上会有几个工具:
innobackupex:
这个是事实上是以下三个工具的一个perl脚本封装,能够备份MyISAM, InnoDB, XtraDB表。
xtrabackup:
一个由C编译而来的二进制文件,仅仅能备份InnoDB和XtraDB数据。
xbcrypt:
用来加密或解密备份的数据。
xbstream:
用来解压或压缩xbstream格式的压缩文件。

建议使用perl封装的innobackupex来作数据库备份。由于比較easy使用。

所以以下仅仅介绍innobackupex的使用。其他的使用參考:http://www.percona.com/doc/percona-xtrabackup/2.1/manual.html

本文主要介绍innobackupex工具

注意:在每次恢复完毕之后都要再做一次全然备份

下载地址

https://www.percona.com/downloads/XtraBackup/

首先要保证安装依赖包

[root@localhost Packages]# yum -y install perl perl-devel libaiolibaio-devel perl-Time-HiRes perl-DBD-MySQL

然后安装percona-xtrabackup

[root@localhost ~]# rpm -ivhpercona-xtrabackup-2.2.11-1.el6.x86_64.rpm

warning:percona-xtrabackup-2.2.11-1.el6.x86_64.rpm: Header V4 DSA/SHA1 Signature, keyID cd2efd2a: NOKEY

Preparing...                ###########################################[100%]

1:percona-xtrabackup    ########################################### [100%]

 

二、  命令格式

innobackupex參数 文件夹.

三、  经常使用參数

 --defaults-file 指定要备份的mysql实例的my.cnf文件,the only limitation is that it has to be the first option passed;而且在这个my.cnf中必需要有datadir等參数指明数据文件的路径!

--host      指定主机名/IP

 --port         指定所需连接的端口,默认3306则可忽略不写

--socket          连接套字节的位置,默觉得/var/lib/mysql/mysql.sock

 --use-memory=4G 此參数用来控制备份所使用到的内存大小,默觉得100M! 一般与--apply-log一起使用,备份时指定了但好像没用到!!

--apply-log         在数据库备份好后。这些备份的数据并不能马上用于恢复。由于这些刚备份的数据里包括了未提交的数据,须要回滚,oracle里称undo数据!也包括的已完毕的事务在重做日志文件里并没有写入数据文件里,这些数据须要重做!

oracle里称redo!

这个參数正是用于做这些事情,以保证数据文件的一致性!在数据库恢复之前,须先对备份的数据文件应用此參数!(innobackup会重现重做日志文件(redo log file)中的事务条目。重做已经提交的事务和回滚未提交的事务!

--copy-back     把备份数据拷贝回server的datadir,它决定于my.cnf中的datadir參数,另外在恢复时datadir文件夹必须是空的,而且mysql数据库必须是shudown的!

--no-timestamp        innobackupex--defaults-file=/etc/my.cnf --user=root --no-timestamp /tmp/backup/full(使用--no-timestamp时,后面的这个full文件夹必须跟上且不能提前自己建立,它由innobackupex自己主动建立,否则会报innobackupex: Error: Failed to create backup directory/tmp/backup/full/: File exists at /usr/bin/innobackupex line 3899.)

--redo-only          在做增量恢复时。全备和增量备份的数据文件在恢复前必须先将在重做日志文件里的已提交的事务重做!此參数将会合并全备和增量备份的数据文件,但不包含最后一次增量备份的数据文件!

(--redo-only should be used when merging all incrementals except thelast one )

--compress        压缩选项,此选项不兼容--stream=tar,仅仅兼容--stream=xbstream,此外加密项encrypted也不能兼容--stream=tar!

--decompress         在备份时假设使用了加密或者压缩选项,在用xbstream -x 解压包出来后,还须使用innodbackupex       --decompress/data/backup   压缩后的文件为ibdata1.qp。qp结尾的文件!

另外使用decompress还需yum install qpress.x86_64 装上qpress这个包!

--slave-info                        This option is useful whenbacking up a replication slave server. It also writes this information tothe "xtrabackup_slave_info" file as a "CHANGE MASTER"command. A new slave for this master can be set up by starting a slaveserver on this backup and issuing a"CHANGE"xtrabackup_slave_info" file.  在备份从server时,使用此參数能记录master的日志和偏移量!用于做一个新的从server!

普通情况下的全备份,master二进制日志文件以及偏移点会记录在xtrabackup_binlog_info这个文件里!

四、  经常使用样例

1.   全然备份

[root@localhostback]# innobackupex --defaults-file=/etc/my.cnf --host 10.22.19.44 --port=3306--user=root --password=123456 --socket=/tmp/mysql.sock /back

 

2.   增量备份

基于2015-08-27_09-54-02进行增量备份

[root@localhostaaa]# innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf--socket=/tmp/mysql.sock --no-timestamp --incremental --incremental-basedir=/back/2015-08-27_09-54-02//back/001/

基于/back/001/进行增量备份

[root@localhostaaa]# innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf--socket=/tmp/mysql.sock --no-timestamp --incremental--incremental-basedir=/back/001/ /back/002/

能够通过下面文件查看备份信息:

[root@localhostback]# cat 2015-08-27_09-54-02/xtrabackup_checkpoints

backup_type = full-backuped

from_lsn = 0

to_lsn = 919852583

last_lsn = 919852583

compact = 0

[root@localhostback]# cat 001/xtrabackup_checkpoints

backup_type = incremental

from_lsn = 919852583

to_lsn = 919854256

last_lsn = 919854256

compact = 0

[root@localhostback]# cat 002/xtrabackup_checkpoints

backup_type = incremental

from_lsn = 919854256

to_lsn = 919858085

last_lsn = 919858085

能够通过lsn看到这3个备份集关系

也能够通过此命令来进行指定lsn的方式进行备份

[root@localhostaaa]# innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf--socket=/tmp/mysql.sock --no-timestamp --incremental --incremental-lsn=919854256/back/002/

3.   备份并打包

tar方式:

 

[root@localhost back]# innobackupex --defaults-file=/etc/my.cnf--host 10.22.19.44 --port=3306 --user=root --password=123456--socket=/tmp/mysql.sock --stream=tar /back>/back/fullbackup.tar

 

xbstream方式

 

[root@localhost back]# innobackupex--defaults-file=/etc/my.cnf --host 10.22.19.44 --port=3306 --user=root--password=123456 --socket=/tmp/mysql.sock --stream=xbstream/back>/back/fullbackup.xbstream

 

4.   备份并打包而且压缩

tar方式的打包

 

gzip方式压缩:

 

[root@localhostback]# innobackupex --defaults-file=/etc/my.cnf --host 10.22.19.44 --port=3306--user=root --password=123456 --socket=/tmp/mysql.sock --stream=tar /back/|gzip -> /back/fullbackup2.tar.gz

 

bzip2方式压缩:

 

[root@localhostback]# innobackupex --defaults-file=/etc/my.cnf --host 10.22.19.44 --port=3306--user=root --password=123456 --socket=/tmp/mysql.sock --stream=tar /back/|bzip -> /back/fullbackup2.tar.bz2

 

xbstream方式打包并压缩

 

[root@localhostback]# innobackupex --defaults-file=/etc/my.cnf --host 10.22.19.44 --port=3306--user=root --password=123456 --socket=/tmp/mysql.sock --stream=xbstream--compress /back>/back/fullbackup2.xbstream

 

备份打包并传递到其它server压缩存放

[root@localhost back]# innobackupex--defaults-file=/etc/my.cnf --host 10.22.19.44 --port=3306 --user=root--password=123456 --socket=/tmp/mysql.sock --stream=tar /back/2>/back/log2.log|ssh 10.22.19.90 "bzip2 ->/root/mysql.tar.bz2"

root@10.22.19.90's password:

 

5.   全备还原数据库:

应用日志

[root@localhostback]# innobackupex --apply-log  /back/2015-08-27_09-51-14/

还原全备库

[root@localhostback]# innobackupex --user=root --password=123456 --copy-back  --use-memory=512M  /back/2015-08-27_09-51-14/

查看data文件夹权限

[root@localhostback]# ll /usr/local/mysql|grep data

drwxr-xr-x  14 root root   4096 8月  27 12:50 data

drwx------  11 mysql mysql  4096 7月  15 13:13 data2

改动文件夹权限

[root@localhostback]# chown -R mysql:mysql /usr/local/mysql/data

[root@localhostback]# ll /usr/local/mysql|grep data

drwxr-xr-x 14 mysql mysql  4096 8月  27 12:50 data

drwx------ 11 mysql mysql  4096 7月  15 13:13 data2

启动数据库

[root@localhost~]# service mysqld start

Starting MySQL..[确定]

 

还原二进制日志

[root@localhostmysql]# mysqlbinlog /root/mysql.000018 >/tmp/abc.sql

[root@localhostmysql]#mysql -uroot -p123456

mysql>set sql_log_bin=0;

Query OK, 0 rows affected (0.00 sec)

mysql>source /tmp/abc.sql;

还原成功

6.   增量备份还原数据库

将近期一次全备数据库文件运行redo重做

[root@localhostdata]# innobackupex --apply-log --redo-only /back/2015-08-27_09-54-02/

 

将除了最后一次增量备份库之外其它库都运行redo重做而且合并到全备库中

 

[root@localhostdata]# innobackupex --apply-log --redo-only /back/2015-08-27_09-54-02/--incremental-dir=/back/001/

 

将最后一次增量备份应用日志(不用--redo-only)而且合并到全备库中

 

[root@localhostdata]# innobackupex --apply-log /back/2015-08-27_09-54-02/--incremental-dir=/back/002/

这是由于除了最后的一个增量备份外,前面的事物都不应该进行回滚由于有可能前一个没有提交的事物在下一个备份中提交了,假设进行了回滚则有可能导致数据不一致从而无法进行还原

 

进行全库恢复

[root@localhostdata]# innobackupex --copy-back /back/2015-08-27_09-54-02/

 

还原二进制日志

[root@localhostmysql]# mysqlbinlog /root/mysql.000018 >/tmp/abc.sql

[root@localhostmysql]#mysql -uroot -p123456

mysql>set sql_log_bin=0;

Query OK, 0 rows affected (0.00 sec)

mysql>source /tmp/abc.sql;

还原成功

 

因为时间原因没有加入部分还原内容,周末之前加入

 

每天进步一点点——mysql——Percona XtraBackup(innobackupex)相关推荐

  1. mysql 5.7 xbackup_CentOS 7 下 MySQL 5.7 配置 Percona Xtrabackup

    前言 CentOS 7 下 MySQL 5.7 配置 Percona Xtrabackup ,记录一下大致的安装和配置过程. Percona XtraBackup 的备份工具支持热备份(即不必停止 M ...

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

    Percona XtraBackup 关于 MySQL备份还原的详细测试 一. Percona XtraBackup 的优点. (1)无需停止数据库进行InnoDB热备: (2)增量备份MySQL: ...

  3. Percona Xtrabackup备份mysql大数据库(完整备份与增量备份)

    Percona Xtrabackup备份mysql大数据库(完整备份与增量备份) 文章目录 [隐藏] Xtrabackup简介 Xtrabackup安装 Xtrabackup工具介绍 innoback ...

  4. mysql的安装备份恢复_安装使用Percona XtraBackup来备份恢复MySQL的教程

    1.安装XtraBackup yum的安装方法: 自动 $ rpm -Uhv http://www.percona.com/downloads/percona-release/percona-rele ...

  5. 如何在Ubuntu 14.04上使用Percona XtraBackup创建MySQL数据库的热备份

    如何在Ubuntu 14.04上使用Percona XtraBackup创建MySQL数据库的热备份 介绍 使用活动数据库系统时遇到的一个非常常见的挑战是执行热备份,即在不停止数据库服务或将其设置为只 ...

  6. MySQL · 物理备份 · Percona XtraBackup 备份原理

    前言 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle).Percona Server 和 ...

  7. MySQL备份Percona Xtrabackup安装和卸载

    MySQL备份Percona Xtrabackup安装和卸载 Percona XtraBackup 安装介绍篇 XtraBackup介绍 XtraBackup是Percona公司的开源项目,用以实现类 ...

  8. 《Linux运维实战:使用Percona XtraBackup物理备份与恢复Mysql数据》

    一.Percona XtraBackup工具介绍 Percona XtraBackup是世界上唯一开源.免费的MySQL热备份软件,可为InnoDB和XtraDB数据库执行非阻塞备份.Percona ...

  9. MySQL利用xtrabackup进行增量备份详细过程汇总

    1,创建mysql备份用户 mysql -uroot --password="" -e"CREATE USER 'backup'@'192.168.%' IDENTIFI ...

  10. Percona XtraBackup User Manual 阅读笔记

    http://www.cnblogs.com/Amaranthus/archive/2014/08/19/3922570.html XtraBackup XtraBackup 2 安装XtraBack ...

最新文章

  1. 慎重选型:PG还是MySQL?Uber的案例不能作为参考!
  2. [Linux命令]Sed命令参数
  3. iOS开发UI篇—实现一个私人通讯录小应用(二)
  4. 列举python中常用的数据类型_Python基础知识 变量和简单数据类型
  5. springmvc视图解析器_SpringMVC视图及REST风格
  6. LPTHW 笨办法学python 37章 python关键字/关键词介绍
  7. ◇Windows 7 XP SP3 2in1 集成安装版 2010贺岁版◇
  8. 用IDEA构建Vue项目(主要指令)
  9. python 人物关系图_python简单实战项目:《冰与火之歌1-5》角色关系图谱构建——人物关系可视化...
  10. 毕业论文 Word 排版技巧
  11. 银耳椰椰——Alpha冲刺Day08
  12. PostgreSQL13 安装
  13. imshow显示图像为纯白
  14. RPG Maker MV 图块冲突解决、素材管理
  15. Docker概述与基本使用
  16. JAVA面试-系统设计题
  17. 前端学习——JSON格式详解
  18. 数据挖掘幕课第四章习题
  19. php懈垢windows通用上传缺陷
  20. visio中公式太小_冲压模具冲床吨位计算公式丨实例分析,设计师值得一看!

热门文章

  1. flume handler
  2. java 判断5张牌的组成
  3. ubuntu firefox上看视频,安装flash啊
  4. ASP.NET MVC带来的变化
  5. SpringMvc @PathVariable 工作原理
  6. uva 1328(kmp)
  7. 十六进制颜色对应示意图
  8. ThinkPHP3.2.3完全开发手册离线手册
  9. 产品经理第一件事-系统背景研究
  10. 多线程开发必须知道的概念