Percona Xtrabackup备份mysql (完整备份与增量备份)

Xtrabackup简介

Percona XtraBackup是开源免费的MySQL数据库热备份软件,它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM

的备份同样需要加表锁)。XtraBackup支持所有的Percona Server、MySQL、MariaDB和Drizzle。

XtraBackup优势 :

1、无需停止数据库进行InnoDB热备

2、增量备份MySQL

3、流压缩到传输到其它服务器

4、能比较容易地创建主从同步

5、备份MySQL时不会增大服务器负载

Xtrabackup的特性是针对大数据进行备份恢复使用,数据库大小一般在G以上或10G以上,对于数据量小的Mysql库完全可以使用

mysqldump来解决,备份和恢复速度快而且操作简便快捷,这里对mysqldump命令就不做介绍了。

Xtrabackup安装

这里只介绍Ubuntu-12.04下的安装方法,其它系统的安装方法请参考 http://www.percona.com/doc/percona-

xtrabackup/2.1/installation.html

apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A

在/etc/apt/sources.list加入:

deb http://repo.percona.com/apt precise main

deb-src http://repo.percona.com/apt precise main

执行update及安装操作

apt-get update

apt-get install percona-xtrabackup

注:precise是Ubuntu-12.04的版本代号,如果是其它系统版本,需要更换。

Xtrabackup工具介绍

安装XtraBackup后,其实会有几个工具:

innobackupex:这个是其实是下面三个工具的一个perl脚本封装,可以备份MyISAM, InnoDB, XtraDB表。但在处理Myisam时需要

加一个读锁。

xtrabackup:一个由C编译而来的二进制文件,只能备份InnoDB和XtraDB数据。

xbcrypt:用来加密或解密备份的数据。

xbstream:用来解压或压缩xbstream格式的压缩文件。

建议使用perl封装的innobackupex来作数据库备份,因为比较容易使用。所以下面只介绍innobackupex的使用。其它的使用参考:

http://www.percona.com/doc/percona-xtrabackup/2.1/manual.html

innobackupex使用方法

完整的选项使用请执行innobackupex –help,这里只介绍使用常用的选项进行完整备份及增量备份和还原。

innobackupex Options 这里只对常用参数进行描述

–defaults-file 数据库的配置文件路径,感觉本地备份不写也可以,远程没测试过。

–apply-log 准备在一个备份上启动mysql服务。

–copy-back 从备份目录拷贝数据,索引,日志到my.cnf文件里规定的初始位置。

–no-timestamp 创建备份时不自动生成时间目录,可以自定义备份目录名例如: /backups/mysql/base

–databases 用于指定要备份的数据库, 多个库文件使用方法: “database1 database2″

–incremental 在全备份的基础上进行增量备份,后跟增量备份存贮目录路径

–incremental-basedir=DIRECTORY 增量备份所需要的全备份路径目录或上次做增量备份的目录路径

–incremental-dir=DIRECTORY 增量备份存贮的目录路径

–redo-only 用于准备增量备份内容把数据合并到全备份目录,配合–incremental-dir 增量备份目录使用。

–force-non-empty-directories 如果是特定库备份还原,不需要删掉整个mysql目录,只是特定库的及相关文件就可以,还原时

加上此参数就不会报错。

其他具体参数可以参考:http://www.percona.com/doc/percona-

xtrabackup/2.1/innobackupex/innobackupex_option_reference.html

完整备份及还原

一、全部数据库

备份:

innobackupex --user=root --password=root --defaults-file=/etc/mysql/my.cnf /data/mysql_backup/full_backup

还原:

service mysql stop

rm -rf /var/lib/mysql

mkdir /var/lib/mysql

innobackupex --apply-log /data/mysql_backup/full_backup --use-memory=1G --user=root --password=root

innobackupex --copy-back /data/mysql_backup/full_backup

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

service mysql start

查看恢复的数据库

二、指定数据库

备份:

假如我们要备份centos和aabb数据库。

innobackupex --user=root --password=root --defaults-file=/etc/mysql/my.cnf --databases="centos aabb"

/data/mysql_backup/

这样就会在/data/mysql_backup生成一个带时间的目录,如果不需要带时间,可以使用选项–no-timestamp。

如果想备份成压缩文件,可以使用如下语句:

innobackupex --user=root --password=root --defaults-file=/etc/mysql/my.cnf --databases="centos aabb" --no-

timestamp --stream=tar ./ | gzip - > centos-aabb.bz.tar.gz

还原:

假如完整备份的路径为/data/mysql_backup/full_backup,如果完整备份是压缩文件,需要先解压再还原。

service mysql stop

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

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

rm -rf /var/lib/mysql/centos

rm -rf /var/lib/mysql/aabb

innobackupex --apply-log /data/mysql_backup/centos_aabb_full_backup

innobackupex --copy-back --defaults-file=/etc/mysql/my.cnf /data/mysql_backup/centos_aabb_full_backup

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

service mysql start

增量备份及还原

在这里全库的增量备份方法就不多讲了,只是针对特定数据库进行讲解,其实是同理的就是把下面参数中的–databases 选项去

掉就可以,感兴趣的可以自己试下。

增量备份是建立在完整备份的基础上的,所以首先确保已经完整备份了一次。

完整备份:

innobackupex --user=root --password=root --databases="centos" --no-timestamp

/data/mysql_backup/centos_full_backup

现在完整备份的目录为/data/mysql_backup/centos_full_backup。

增量备份:

第一次增量备份:

innobackupex --incremental /data/mysql_backup/inc1 --no-timestamp --incremental-

basedir=/data/mysql_backup/centos_full_backup --user=root --password=root --defaults-file=/etc/mysql/my.cnf

第二次增量备份:需要把–incremental-basedir指定到上次做增量备份的目录,这里应该知道/data/mysql_backup/inc1

innobackupex --incremental /data/mysql_backup/inc2 --no-timestamp --incremental-basedir=/data/mysql_backup/inc1

--user=root --password=root --defaults-file=/etc/mysql/my.cnf

选项–incremental是指定作增量备份 –incremental-basedir选项是指定上一次增量备份的目录(如果是第一次作增量备份,则

为完整备份的目录)。

还原:

增量备份的还原操作跟完整的还原有点不一样,首先必须使用–apply-log –redo-only对完整备份的目录及所有增量备份目录进

行操作,然后就可以像还原完整备份时的操作了。

对每个备份目录作apply-log redo-only操作(包括完整备份)

innobackupex --apply-log --redo-only /data/mysql_backup/centos_full_backup --user=root --password=root

innobackupex --apply-log --redo-only /data/mysql_backup/centos_full_backup --incremental-

dir=/data/mysql_backup/inc1 --user=root --password=root

innobackupex --apply-log --redo-only /data/mysql_backup/centos_full_backup --incremental-

dir=/data/mysql_backup/inc2 --user=root --password=root

看到有文章在恢复增量备份的时候提到在做最后一个读取增量记录的时候不使用–redo-only 参数, 经过测试,使用了此参数后

恢复的数据库也都运行正确,我使用的是2.17版本xtrabackup, 至于以前版本就没测试过。有知道的可以在这里分享下。

下面就跟还原完整备份时一样了:

service mysql stop

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

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

rm -rf /var/lib/mysql/centos

innobackupex --apply-log /data/mysql_backup/centos_full_backup --use-memory=1G --user=root --password=root

##--use-memory 能够定义读取备份时的内存大小,以便快速的完成还原准备工作。

innobackupex --copy-back --defaults-file=/etc/mysql/my.cnf /data/mysql_backup/centos_full_backup

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

service mysql start

现在全部增量恢复就完成了,可以登录数据库查看下恢复的数据了

时间: 2024-10-13 12:06:49

Percona Xtrabackup备份mysql (完整备份与增量备份)的相关文章

Percona Xtrabackup实现mysql全量备份和增量备份

###########################################################################        安装mysql或者mariaDB本地也要装mysql或者mariaDB相关的包          ##########################################################################略 ######################################### 

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

一. Percona XtraBackup 的优点. (1)无需停止数据库进行InnoDB热备: (2)增量备份MySQL: (3)流压缩传输到其它服务器: (4)在线移动表: (5)能够比较容易地创建主从同步: (6)备份MySQL时不会增大服务器负载. 二. Percona XtraBackup 工具集组成 在旧版本中,Percona XtraBackup 工具集里主要包含两个程序:innobackupex 和 xtrabackup. xtrabackup是C/C++编译的二进制程序,用来备

MySQL5.7.18 备份、Mysqldump,mysqlpump,xtrabackup,innobackupex 全量,增量备份,数据导入导出

粗略介绍冷备,热备,温暖,及Mysqldump,mysqlpump,xtrabackup,innobackupex 全量,增量备份 --备份的目的 灾难恢复:意外情况下(如服务器宕机.磁盘损坏等)对损坏的数据进行恢复和还原保证数据不丢失,最小程度地丢失需求改变:因需求改变而需要把数据还原到改变以前测试:测试新功能是否可用 --备份与恢复概述 根据备份的方法可以分为: 1.Hot Backup(热备) 2.Cold Backup(冷备) 3.Warm Backup(温备) Hot Backup是指

MySQL和MSSQL差异(增量)备份的原理

MySQL和MSSQL差异(增量)备份的原理 对于真正的增量备份来说,只需要记录当前每页最后的检查点的LSN,如果大于之前全备时的LSN,则备份该页面,否则不用备份 这大大加快了备份速度和恢复时间,同时这也是xtrabackup工具增量备份原理 MSSQL 完整备份 f 差异备份 f f

MySQL备份与恢复之percona-xtrabackup实现增量备份及恢复 实例

innobackupex 的使用方法1.完全备份 参数一是完全备份地址 完全备份到/data/mysql/back_up/all_testdb_20140612 目录下innobackupex --user=root --password=123456 --no-timestamp /data/mysql/back_up/all_testdb_20140612现在完整备份的目录为/data/mysql/back_up/all_testdb_201406122.增量备份第一次sh incremen

MySQL 全量及增量备份,基于xtrabackup 2.3.5

昨天一个pgp加密盘坏了,东西全丢了...,我的笔记啊!我咋怎么2呢.. 备份个脚本吧,方便以后手机查看,话说我都快忘记帐号密码了 备注:脚步恢复时只能恢复到备份前的状态,如果需要恢复到当前状态,还需配合binlog,睡觉就这样 #!/bin/sh #################################################### # AUTHOR : JusonSummer # # VERSION : V1.0.0 # # DATE : 2016-08-13 # # CO

如何用Percona XtraBackup进行MySQL从库的单表备份和恢复【转】

前提 应该确定采用的是单表一个表空间,否则不支持单表的备份与恢复. 在配置文件里边的mysqld段加上 innodb_file_per_table = 1 环境说明: 主库:192.168.0.1 从库1:192.168.0.2 从库2:192.168.0.3 备份工具 : Percona xtrabackup version 2.4.8 based on MySQL server 5.7.13 Linux (x86_64) (revision id: 97330f7) 在主库上创建chenfe

Mysql备份系列(4)--lvm-snapshot备份mysql数据(全量+增量)操作记录

Mysql最常用的三种备份工具分别是mysqldump.Xtrabackup(innobackupex工具).lvm-snapshot快照.前面分别介绍了:Mysql备份系列(1)--备份方案总结性梳理Mysql备份系列(2)--mysqldump备份(全量+增量)方案操作记录Mysql备份系列(3)--innobackupex备份mysql大数据(全量+增量)操作记录 废话不多说,下面即是使用lvm-snapshot快照方式备份mysql的操作记录,仅依据本人实验中使用而述. 操作记录:如下环

shell脚本:mysql全备与binlog增量备份

脚本功能:mysql库备份脚本,全备与binlog日志备份 脚本可以根据指定的参数进行全备,其余时间备份binlog日志 --------------- #!/bin/bash # description:Trian Server backup databases # revision on 2016-02-18 # by colin # #################################### # 功能说明:该脚本运用于mysql每天备份与上传 #  # 使用说明: # ./m