文档章节

Percona XtraBackup备份mysql数据库 技术手册

LionelShen
 LionelShen
发布于 2016/06/14 18:13
字数 1356
阅读 386
收藏 5

作者: 沈小然

版本:

文档编号:

日期:2016 6 14

1         介绍Percona XtraBackup软件

Xtrabackup是由percona开发的一个开源软件,代替商业付费软件MySQL Enterprise Backup (InnoDB Hot Backup),这个工具价格是 $5000 per Server,可以在线对InnoDB/XtraDB引擎的表进行物理备份。

Mysql自带的备份工具mysqldump支持在线备份,但是逻辑备份,效率比较差。

Xtrabackup有两个主要的工具:xtrabackupinnobackupex,其中xtrabackup只能备份InnoDBXtraDB两种数据表,innobackupex则封装了xtrabackup,同时可以备份MyISAM数据表。

xtrabackup命令:用于热备份innodb(支持事务), xtradb表的工具,不能备份其他表。

innobackupex命令:对xtrabackup封装的perl脚本,提供了myisam表备份的能力(能进行整库和数据表备份)。

Xtrabackup做备份的时候不能备份表结构、触发器等等,智能纷纷.idb数据文件。另外innobackupex还不能完全支持增量备份,需要和xtrabackup结合起来实现全备的功能。

 

2         安装Percona XtraBackup

官网下载页面:https://www.percona.com/downloads/XtraBackup/LATEST/

官网在线文档:https://www.percona.com/doc/percona-xtrabackup/2.2/index.html

下载rpm包:

https://www.percona.com/downloads/XtraBackup/XtraBackup-2.0.8/RPM/rhel6/x86_64/percona-xtrabackup-20-2.0.8-587.rhel6.x86_64.rpm

2.1           系统环境

OS: Red Hat Enterprise Linux Server release 6.5 (Santiago)

MysqlServer version: 5.1.71 Source distribution

注意:rhel6.5版本自带的mysql5.1.71需要使用Percona XtraBackup 2.0系列的版本

2.2           安装libev.so.4()(64bit)依赖

http://rpmfind.net/linux/rpm2html/search.php上下载libev-4.15-1.el6.rf.x86_64.rpm安装包

# rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm

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

  1:libev                  ########################################### [100%]

2.3           安装xtrabackup

# rpm -ivh percona-xtrabackup-20-2.0.8-587.rhel6.x86_64.rpm

warning: percona-xtrabackup-20-2.0.8-587.rhel6.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: NOKEY

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

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

查看安装后的文件位置

# rpm -ql percona-xtrabackup-20-2.0.8-587.rhel6.x86_64

/usr/bin/innobackupex

/usr/bin/innobackupex-1.5.1 -> innobackupex

/usr/bin/xbstream

/usr/bin/xtrabackup

/usr/bin/xtrabackup_51

/usr/bin/xtrabackup_55

/usr/bin/xtrabackup_56

/usr/share/doc/percona-xtrabackup-20-2.0.8

/usr/share/doc/percona-xtrabackup-20-2.0.8/COPYING

3         修改/etc/my.cnf文件,因为XtraBackup根据my.cnf来获取需要备份的mysql数据库文件

# vi /etc/my.cnf

[client]

default-character-set = utf8

 

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

character-set-server = utf8

collation-server = utf8_general_ci

 

[mysql]

no-auto-rehash

default-character-set = utf8

 

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

4         使用innobackupex命令全备份

innobackupex使用方法

Usage: [innobackupex [--defaults-file=#] --backup | innobackupex [--defaults-file=#] --prepare] [OPTIONS]

# innobackupex --defaults-file=/etc/my.cnf --user=root --password="" /mysql_backup

参数说明:

--defaults-file=/etc/my.cnf:指定my.cnf配置文件位置

--user=root:访问mysql的用户

--password="123qwe":访问mysql的用户口令,当mysqlroot口令为空时省略—password参数。

--slave-infoslave-info可以记录备份恢 复后,作为slave需要的一些信息,根据这些信息,可以很方便的利用备份来重做slave

/mysql_backup:备份位置

2>/mysql_backup/ innobackupex.log:记录备份时的输出

--databases=数据库名:使用这个参数,针对某个数据库进行备份

1)  创建备份位置

# mkdir /mysql_backup

2)  Innobackupex全备份

# innobackupex --user=root --slave-info --defaults-file=/etc/my.cnf /mysql_backup

……

160614 16:53:54  innobackupex: completed OK!

最后看见这句话innobackupex: completed OK!就表示备份成功了。

3)查看备份后的数据文件

# ls /mysql_backup/2016-06-14_16-53-35/

backup-my.cnf  mysql  test               xtrabackup_binlog_info  xtrabackup_logfile

ibdata1        ra     xtrabackup_binary  xtrabackup_checkpoints

说明:

xtrabackup_checkpoints:记录的备份类型,例如backup_type = full-backuped

5         使用innobackupex全备份来恢复

1)模拟mysql数据丢失

# /etc/init.d/mysqld stop

# rm -rf /var/lib/mysql/*

2)首先执行—apply-log

# innobackupex --apply-log /mysql_backup/2016-06-14_17-07-36/

3)恢复全部mysql数据,执行—copy-back

# innobackupex --copy-back /mysql_backup/2016-06-14_17-07-36/

验证一下恢复的数据文件

# ls

ibdata1  ib_logfile0  ib_logfile1  mysql  ra  test  xtrabackup_slave_info

恢复数据后的权限是root,需要手动改成mysql.mysql

# chown -R mysql.mysql /var/lib/mysql

最后,启动mysqld服务

# /etc/init.d/mysqld start

恢复全部完成

6         Innobackupexxtrabackup结合实现全备份+增量

1)  首先使用innobackupex做全备份

# innobackupex --user=root --slave-info --defaults-file=/etc/my.cnf /mysql_backup

2)  使用xtrabackup做增量备份

# xtrabackup --backup --incremental-basedir=/mysql_backup/2016-06-14_17-25-59/ --target-dir=/mysql_backup/2016-06-14_17-25-59-2

 

 

说明:

--incremental-basedir:表示使用哪个目录做为全量检查点。

--target-dir:增量数据保存的目录,目录名可以追次变成xxx-2xxx-3等。

7         恢复Innobackupexxtrabackup全备份+增量

1)  模拟mysql数据丢失

停止mysqld服务

# /etc/init.d/mysqld stop

删除所有数据

# rm -rf *

2)  执行—apply-log

# innobackupex --apply-log /mysql_backup/2016-06-14_17-25-59

3)  使用xtrabackup将增量备份应用到全备份目录2016-06-14_17-25-59

# xtrabackup --prepare --incremental-dir=/mysql_backup/2016-06-14_17-25-59-2 --target-dir=/mysql_backup/2016-06-14_17-25-59

# xtrabackup --prepare --incremental-dir=/mysql_backup/2016-06-14_17-25-59-3 --target-dir=/mysql_backup/2016-06-14_17-25-59

说明:

--incremental-dir:表示增量目录,应用增量的时间顺序应该是由早-

--target-dir:应用到的全备份目录

4)  恢复全部mysql数据,执行—copy-back

# innobackupex --user=root --copy-back /mysql_backup/2016-06-14_17-25-59

# chown -R mysql.mysql /var/lib/mysql

# /etc/init.d/mysqld start

数据全部恢复完成

8         仅全备份某个数据库

# innobackupex --user=root --defaults-file=/etc/my.cnf --databases=ra /mysql_backup/

# ls 2016-06-14_18-06-20/

backup-my.cnf  ibdata1  xtrabackup_logfile  xtrabackup_suspended

9         FAQ

9.1           解决“Error: Built-in InnoDB in MySQL 5.1 is not supported in this release. You can either use Percona XtraBackup 2.0, or upgrade to InnoDB plugin.”的错误问题?

# innobackupex --defaults-file=/etc/my.cnf --backup --user=root --password="" /mysql_backup

Error: Built-in InnoDB in MySQL 5.1 is not supported in this release. You can either use Percona XtraBackup 2.0, or upgrade to InnoDB plugin.

这个错误需要重新下载安装Percona XtraBackup 2.0版本来解决。

 

© 著作权归作者所有

共有 人打赏支持
LionelShen
粉丝 74
博文 155
码字总数 92604
作品 0
海淀
程序员
私信 提问
实战 innobackupex 全量备份&恢复 MySQL

1、背景 我们有一台业务数据库一直都只做了主从,虽然一定程度上解决了读写性能问题,但是这个是有风险的,比如某同学删除主库数据,从库也会跟着删除,所以及时的备份还是很有必要的。计划是...

大数据之路
2013/04/22
0
1
CentOS 6.5下Percona Xtrabackup的安装错误解决方案

CentOS 6.5下Percona Xtrabackup的安装错误解决方案 CentOS 6.5下Percona Xtrabackup的安装错误解决方案 1.下载最新版的Xtracbackup 2.安装 yum install perl-DBI yum install perl-DBD-MySQ......

xiaocao13140
2018/05/28
0
0
mysql在线备份恢复--Xtrabackup

Xtrabackup Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。 Xtrabackup介绍 Xtrabackup有两个主要...

木雨山
2012/03/14
0
0
使用Percona XtraBackup备份 MySQL InnoDB 数据库

Percona XtraBackup是一款开放源码,免费的MySQL热备份软件,以非阻塞方式执行备份InnoDB和XtraDB为存储引擎的数据库,是商业备份工具InnoDB Hotbackup的一个很好的替代品。作者的前一家公司...

基督山伯爵
2013/03/07
0
0
xtrabackup 安装使用

xtrabackup 安装使用 一 简介: Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。它能对InnoDB和X...

xiaocao13140
2018/05/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

移植Modbus到STM32F103(2):移植FreeModbus到usart3并运行示例代码

FreeModbus是Modbus的一个被广泛移植的实现。其源码在github,最新版是1.6。 FreeModbus支持Modbus功能码里的0x01~0x06,0x0F~0x11和0x17,对一些功能比如异常诊断和读事件计数等功能码并没有...

Konstantine
今天
3
0
浅谈神经网络(神经网络篇)

背景 之前写过浅谈神经网络基础篇,简单介绍下机器学习这块内容,用于扫盲。本文正式将神经网络,这部分是深度学习的基础。了解完可以掌握强大的机器学习的方法,也可以更好的了解深度学习。...

Uknowzheng
今天
3
0
移动硬盘变为RAW格式后的修复

在Mac上使用自己的移动硬盘结果文件系统格式变为RAW; 在自己windows笔记本上使用chkdsk H: /F进行修复,修复日志如下: C:\Users\mengzhang6>chkdsk H: /F文件系统的类型是 NTFS。卷标是 do...

晨猫
今天
3
0
10 Git —— 标签管理

10 Git —— 标签管理 本节内容: 命令git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id;命令git tag -a <tagname> -m "blablabla..."可以指定标签信息;命令git......

lwenhao
今天
3
0
小程序设置垂直居中,水平居中

如果子容器中的view需要居中的话,那需要在父容器中设置居中 水平居中: display: flex; flex-direction: column; align-items: center; 垂直居中 display: flex;align-items: cen...

淘幻幻
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部