每天进步一点点——mysql——Percona XtraBackup(innobackupex)
一、 简单介绍
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)的更多相关文章
- Percona Xtrabackup备份mysql(转)
add by zhj:另外,参考了Xtrabackup之innobackupex备份恢复详解,我用的是Xtrabackup2.2.6版本, 可以成功备份和恢复指定的数据库. 原文:http://www ...
- MySQL · 物理备份 · Percona XtraBackup 备份原理
http://mysql.taobao.org/monthly/2016/03/07/ 前言 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MySQL 数据 ...
- Percona Xtrabackup备份mysql全库及指定数据库(完整备份与增量备份)
原文地址:http://www.tuicool.com/articles/RZRnq2 Xtrabackup简介 Percona XtraBackup是开源免费的MySQL数据库热备份软件,它能对In ...
- Percona XtraBackup 关于 MySQL备份还原的详细测试
一. Percona XtraBackup 的优点. (1)无需停止数据库进行InnoDB热备: (2)增量备份MySQL: (3)流压缩传输到其它服务器: (4)在线移动表: (5)能够比较容易地创 ...
- MySQL 大数据备份方案之Percona XtraBackup
Xtrabackup介绍 1.Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbacku ...
- 如何用Percona XtraBackup进行MySQL从库的单表备份和恢复【转】
前提 应该确定采用的是单表一个表空间,否则不支持单表的备份与恢复. 在配置文件里边的mysqld段加上 innodb_file_per_table = 1 环境说明: 主库:192.168.0.1 从 ...
- 小型网站MYSQL问题二:Percona Xtrabackup实现数据库备份和恢复
1.安装软件仓库(不要问我为什么不用源码安装,好吧,其实我懒.) 1 2 3 4 5 6 7 8 wget https://www.percona.com/downloads/percona-rele ...
- (转)CentOS 7 下 MySQL 5.7 配置 Percona Xtrabackup
CentOS 7 下 MySQL 5.7 配置 Percona Xtrabackup 原文:http://qizhanming.com/blog/2017/05/10/install-percona- ...
- 使用Percona Xtrabackup创建MySQL slave库
一.使用Percona Xtrabackup创建MySQL slave库 MySQL Server 版本: Server version: 5.7.10-log MySQL Community Ser ...
随机推荐
- 基于2.9.6vue-cli初始化webpack工程
前天做了组内的分享 讲了些webpack的东西 整个流程以及build文件夹内webpack相关的一些js所有的代码 每行代码什么意思 有什么作用 都做了很详细的标明. webpack是3.6的 今天 ...
- WTForms 表单动态验证
class UserDetails(Form): group_id = SelectField(u'Group', coerce=int) def edit_user(request, id): us ...
- 【bzoj4292】[PA2015]Równanie 暴力
题目描述 对于一个正整数n,定义f(n)为它十进制下每一位数字的平方的和.现在给定三个正整数k,a,b,请求出满足a<=n<=b且k*f(n)=n的n的个数. 输入 第一行包含三个正整数k ...
- FZOJ Problem 2103 Bin & Jing in wonderland
...
- JAVA特性面试题:
1.简要介绍java程序的健壮性. 答:JAVA程序会在编译和运行的时候自动的检测可能出现的错误,而且它是一种强类型语言,对于类型的检查很严格,而且它的垃圾回收机制也有效的避免了内存的泄漏. 2.为什 ...
- PHP读取APK的包信息,包括包名,应用名,权限,LOGO等
[转]PHP读取APK的包信息,包括包名,应用名,权限,LOGO等 声明本文转自: 原文链接:https://www.jb51.net/article/53780.htm: 感谢分享! <?ph ...
- LeetCode OJ-- Spiral Matrix II
https://oj.leetcode.com/problems/spiral-matrix-ii/ 螺旋矩阵,和题目一一样的思路,这个是产生n*n 矩阵. #include <iostream ...
- 微信公众号手机端PC端多客服系统
最近很多客户反应没有专门的客服坐在电脑面前,接收回复客户的问题:不能及时回复客户 咨询的问题,现在我们已经为此帮您解决烦恼!! 支持PC与手机端接收微信客户咨询与回复客户,让您随时随地及时回复客户咨询 ...
- R语言实战读书笔记(六)基本图形
#安装vcd包,数据集在vcd包中 library(vcd) counts <- table(Arthritis$Improved)counts # 垂直barplot(counts, main ...
- BZOJ3751 NOIP2014 解方程(Hash)
题目链接 BZOJ3751 这道题的关键就是选取取模的质数. 我选了4个大概几万的质数,这样刚好不会T 然后统计答案的时候如果对于当前质数,产生了一个解. 那么对于那些对这个质数取模结果为这个数的数 ...