利用Xtrabackup工具备份及恢复(MySQL DBA的必备工具)

Xtrabackup------MySQL DBA的必备工具

注意:

1)文档参照http://www.percona.com/docs/wiki/percona-xtrabackup:start

2)mysql要使用5.1.50版本或以上。

一、Xtrabackup简介及安装

1、Xtrabackup  是percona的一个开源项目,可以热备份innodb ,XtraDB,和MyISAM(会锁表),可以看做是InnoDB Hotbackup的免费替代品。

Percona Support for MySQL


















































































Benefit Silver
(Per Server)
Gold
(Unlimited)
Platinum
(Unlimited)
Annual Price $1,500/server From $15,000 From $30,000
Number of Servers Covered Per-Server Unlimited Unlimited
Number of Support Incidents Unlimited Unlimited Unlimited
Response Time SLA 60 Minutes 30 Minutes 30 Minutes
Named Support Contact Persons 5 10 20
Email, Web, & Chat Support 650) this.width=650;" height=24> 650) this.width=650;" height=24> 650) this.width=650;" height=24>
Phone Support 650) this.width=650;" height=24> 650) this.width=650;" height=24> 650) this.width=650;" height=24>
Login Support 650) this.width=650;" height=24> 650) this.width=650;" height=24> 650) this.width=650;" height=24>
24×7 Support 650) this.width=650;" height=24> 650) this.width=650;" height=24> 650) this.width=650;" height=24>
Fixes For Verified Bugs   650) this.width=650;" height=24> 650) this.width=650;" height=24>
Hot Bug Fixes     650) this.width=650;" height=24>
Onsite System Audit   Option 650) this.width=650;" height=24>
Covers Old Server Versions     650) this.width=650;" height=24>
Covers Non-Standard Platforms     Option
Covers Custom Code     Option
 

参考:http://www.percona.com/mysql-support/

先看看如何安装Xtrabackup,最简单的安装方式是使用RPM包,不过想使用源代码方式安装的话,其安装方式有点古怪,因为它采用的在MySQL源代码上打补丁构建的方式安装的。

2、安装:

wget http://www.percona.com/downloads/XtraBackup/XtraBackup-1.4/Linux/binary/i686/

tar zxf xtrabackup-1.4.tar.gz

cd xtrabackup-1.4

./configure

make

进行到这里时,千万别make install,那样就会接着安装MySQL了,正确方法是:

cd innobase/xtrabackup/

make

make install

安装参照:http://www.percona.com/docs/wiki/percona-xtrabackup:installation:from-source

3、如此一来,就会在/usr/bin目录里安装上两个有用的工具:xtrabackup、innobackupex

1)xtrabackup 只能备份InnoDB和XtraDB两种数据表,支持在线热备份,可以在不加锁的情况下备份Innodb数据表,不过此工具不能操作Myisam引擎表

2)innobackupex  是一个脚本封装,封装了xtrabackup,能同时处理Innodb和Myisam,但在处理Myisam时需要加一个读锁。

按如上的介绍,由于操作Myisam时需要加读锁,这会堵塞线上服务的写操作,而Innodb没有这样的限制,所以数据库中Innodb表类型所占的比例越大,则越有利。实际应用中一般是直接使用innobackupex方法,它主要有三种操作方式,按手册中的介绍:

Usage:

innobackup [--sleep=MS] [--compress[=LEVEL]] [--include=REGEXP] [--user=NAME]

[--password=WORD] [--port=PORT] [--socket=SOCKET] [--no-timestamp]

[--ibbackup=IBBACKUP-BINARY] [--slave-info] [--stream=tar]

[--defaults-file=MY.CNF]

[--databases=LIST] [--remote-host=HOSTNAME] BACKUP-ROOT-DIR

innobackup --apply-log [--use-memory=MB] [--uncompress] [--defaults-file=MY.CNF]

[--ibbackup=IBBACKUP-BINARY] BACKUP-DIR

innobackup --copy-back [--defaults-file=MY.CNF] BACKUP-DIR

——————————————————————————————————

第一个命令行是热备份mysql数据库。

带有--apply-log选项的命令是准备在一个备份上启动mysql服务。

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

Xtrabackup还可以用来moving InnoDB tables between servers,更多的内容可以参考官方文档及例子。

参考链接:

1.官方文档:http://www.percona.com/docs/wiki/percona-xtrabackup:xtrabackup_manual

2.Xtrabackup online backup for InnoDB/XTraDB(pdf):

http://www.percona.com/ppc2009/PPC2009_xtrabackup.pdf

二、innobackupex 和 xtrabackup备份详解

注:innobackupex会根据/et/my.cnf来确定MySQL的数据位置。

1.普通备份:

innobackupex [--defaults-file=/etc/my.cnf] --user=root [--host=192.168.1.52] [--password=xxx] [--port=3306]   /data/back_data/    2>/data/back_data/1.log

备份的目录是/data/back_data/,这里的2>/data/back_data/1.log,是将备份过程中的输出信息重定向到1.log

innobackupex-1.5.1 –slave-info …..

–slave-info会记录复制主日志的 复制点,便于重新做复制用。(用在备份从机器用)

备份后的文件:

xtrabackup_binlog_info — 存放binlog的信息。(binlog需要另外拷贝备份,如果需要binlog的话)

xtrabackup_checkpoints — 存放备份的起始位置和结束位置。

恢复:

首先停掉数据库,然后删除数据库目录下的所有数据库文件.

cd /data/mysql_data

rm -rf * # 删除数据目录里的所有文件

innobackupex-1.5.1 --user=root --apply-log /data/back_data/2010-10-26_16-09-37 # 应用日志

innobackupex-1.5.1 --user=root --copy-back /data/back_data/2010-10-26_16-09-37

默认innobackupex-1.5.1会将二进制日志信息存放在文件xtrabackup_binlog_info中发(方便做Slave)。

cd /data

chown -R mysql:mysql mysql_data/

重启mysql服务

2.打包(Tar)备份:

innobackupex-1.5.1 --user=root [--password=xxx] --stream=tar /data/back_data/2/ 2>/data/back_data/2.log   1>/data/back_data/2.tar

还原:

#cd /data/back_data/2/

#tar ixvf 2.tar

# ls

2.tar backup-my.cnf ibdata1 ibdata2 mablevi mysql xtrabackup_binlog_info xtrabackup_checkpoints  xtrabackup_logfile

准备还原

# innobackupex-1.5.1 --user=xxx [--password=xxx]--apply-log /data/back_data/

……

innobackupex: completed OK!

删除数据目录里的所有文件

rm -rf /data/mysql_data/*

拷贝:

# innobackupex-1.5.1 --user=xxx [--password=xxx] --copy-back  /data/back_data/

……

innobackupex: completed OK!

cd /data

chown -R mysql:mysql mysql_data/

重启mysql服务

3. 压缩(tar gzip)备份

innobackupex-1.5.1 --user=root [--password=xxx] --stream=tar

/data/back_data/2/  2>/data/back_data/2.log | gzip > /data/back_data/2.tar.gz

这里使用了管道|将innobackupex-1.5.1作为gzip的标准输入。恢复,只需要使用tar -izxvf 解压对应的文件后,操作完全同普通备份。

还原:

使用tar –izxvf 解压对应的文件后,操作完全同普通备份。

#cd /data/back_data/2/

#tar ixvf 2.tar

# ls

backup-my.cnf ibdata1 ibdata2 mablevi mysql xtrabackup_binlog_info xtrabackup_checkpoints  xtrabackup_logfile

准备还原:

# innobackupex-1.5.1 --user=xxx [--password=xxx] --apply-log /data/back_data/2/

……

innobackupex: completed OK!

删除数据目录里的所有文件

rm -rf /data/mysql_data/*

# innobackupex-1.5.1 --user=xxx [--password=xxx] --copy-back   /data/back_data/2/

cd /data

chown -R mysql:mysql mysql_data/

重启mysql服务

———————————————————————————————————————

xtrabackup 备份和恢复

备份:

xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/back_data/

恢复:

需要执行两次xtrabackup –prepare

xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/back_data/

xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/back_data/

注意,xtrabackup只备份数据文件,并不备份数据表结构(.frm),所以使用xtrabackup恢复的时候,你必须有对应表结构文件(.frm)。

增量备份:

1. 全量备份

xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/back_data/

2. 增量备份

xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/back_data_inc/ --incremental-

basedir=/data/back_data/

在增量备份的目录下,数据文件都是以.delta结尾的。增量备份只备份上一次全量备份后被修改过的page,所以增量备份只暂用较少的空间。增量备份可以在增量备份的基础上增量。

增量备份恢复:

我们需要分别对全量、增量备份各做一次prepare操作。

xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/back_data/2010-10-26_16-09-37

xtrabackup --prepare --target-dir=/data/back_data/2010-10-26_16-09-37--incremental-

dir=/data/back_data_inc

xtrabackup --prepare --target-dir=/data/back_data/ #这一步不是必须的

这样,/data/back_data/下的数据文件就可以直接放到你的MySQL数据目录下,恢复数据了。

再次提醒,xtrabackup只备份InnoDB数据文件,表结构是不备份的,所以恢复的时候,你必须有对应表结构文件(.frm)。

rm -rf /data/mysql_data/ib*

cp -i /data/back_data/2010-10-26_16-09-37/ib* /data/mysql_data/

cd /data

chown -R mysql:mysql mysql_data/

2.innobackupex 与 xtrabackup 相结合

首先,innobackupex全备份:

innobackupex  --user=root /data/back_data/ 2>/data/back_data/1.log #会生成一个时间文件夹,这里假如是2010-10-29_15-57-44

然后,xtrabackup 做增量备份:

xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/back_data_inc/4 --incremental-basedir=/data/back_data/2010-10-29_15-57-44

恢复:

首先停掉数据库,备份二进制日志(如果有的话),然后删除数据库目录下的所有数据库文件.

cd /data/mysql_data

rm -rf * # 删除数据目录里的所有文件

恢复全量备份:

innobackupex  --user=root --apply-log /data/back_data/2010-10-29_15-57-44 # 应用日志

innobackupex  --user=root --copy-back /data/back_data/2010-10-29_15-57-44 # 拷贝文件

恢复增量备份:

xtrabackup --prepare --target-dir=/data/back_data/2010-10-29_15-57-44 --incremental-dir=/data/back_data_inc/5

cd /data

chown -R mysql:mysql mysql_data/

重启mysql服务。

(0)

相关推荐

  • Mysql自带profiling性能分析工具使用分享

    1. show variables like '%profiling%';(查看profiling信息) 2. set profiling=1;(开启profiling) 3. 执行SQL查询 例:select goods_name from ecs_goods where goods_id <5000; show  profiles; 4. show profile for query 4; show profile 的格式如下: SHOW PROFILE [type [, type] ...

  • Mysql导入导出工具Mysqldump和Source命令用法详解

    在PHP网站开发中,时常遇到Mysql数据库备份或数据库迁移工作,这时Mysql怎么导入导出数据库中的数据就非常关键,Mysql本身提供了命令行导出工具Mysqldump和Mysql Source导入命令进行SQL数据导入导出工作,通过Mysql命令行导出工具Mysqldump命令能够将Mysql数据导出为文本格式(txt)的SQL文件,通过Mysql Source命令能够将SQL文件导入Mysql数据库中,下面通过Mysql导入导出SQL实例详解Mysqldump和Source命令的用法. M

  • 5个常用的MySQL数据库管理工具详细介绍

    1.phpMyAdmin phpMyAdmin是最常用的MySQL维护工具,是一个用PHP开发的基于Web方式架构在网站主机上的MySQL管理工具,支持中文,管理数据库非常方便.不足之处在于对大数据库的备份和恢复不方便.  2.MySQLDumper MySQLDumper使用PHP开发的MySQL数据库备份恢复程序,解决了使用PHP进行大数据库备份和恢复的问题,数百兆的数据库都可以方便的备份恢复,不用担心网速太慢导致中间中断的问题,非常方便易用.这个软件是德国人开发的,还没有中文语言包. 3.

  • mytop 使用介绍 mysql实时监控工具

    mytop类似于linux top工具,可以实时监控mysql服务器的性能信息. 安装方法 1.安装依赖 复制代码 代码如下: # cpan # cpan > install DBI # cpan > install Term::ReadKey # cpan > install DBD::mysql # cpan > exit 2.下载安装mytop 复制代码 代码如下: cd /tmp wget http://jeremy.zawodny.com/mysql/mytop/myto

  • MySQL中的常用工具实例汇总(推荐)

    前言 本文主要给大家介绍了关于MySQL常用工具的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 一.mysql (客户端连接工具) 使用最频繁的连接数据库的客户端工具,使用语法如下: mysql [options] [database] 这里的 options 表示 mysql 的可用选项,可以一次写一个或者多个,甚至可以不写:database 表示连接的数据库,一次只能写一个或者不写,如果不写,连接成功后需要用 "use database"命令来进入要操

  • Mysqlslap MySQL压力测试工具 简单教程

    MySQL从5.1.4版开始带有一个压力测试工具mysqlslap,通过模拟多个并发客户端访问mysql来执行测试,使用起来非常的简单.通过mysqlslap –help可以获得可用的选项,这里列一些主要的参数,更详细的说明参考官方手册. 复制代码 代码如下: –auto-generate-sql, -a 自动生成测试表和数据 –auto-generate-sql-load-type=type 测试语句的类型.取值包括:read,key,write,update和mixed(默认). –numb

  • MYSQL ZIP免安装版配置步骤及图形化管理工具mysql-workbench

    1. 解压ZIP包和配置 首先,将mysql-5.5.25-winx64.zip 解压缩到D:/mysql-5.5.25 目录下,然后根据网上相关资料,将my-large.ini(当然也可以视情况选择别的ini配置文件) 复制后改名为my.ini,在此基础上,主要是在[mysqld]段中添加了: 复制代码 代码如下: #系统基本目录basedir= D:/mysql-5.5.25#用户数据目录datadir= D:/mysql-5.5.25/data#字符集设置character-set-ser

  • MySQL性能分析工具profile使用教程

    分析SQL执行带来的开销是优化SQL的重要手段.在MySQL数据库中,可以通过配置profiling参数来启用SQL剖析.该参数可以在全局和session级别来设置.对于全局级别则作用于整个MySQL实例,而session级别紧影响当前session.该参数开启后,后续执行的SQL语句都将记录其资源开销,诸如IO,上下文切换,CPU,Memory等等.根据这些开销进一步分析当前SQL瓶颈从而进行优化与调整.本文描述了如何使用MySQL profile,不涉及具体的样例分析. 1.有关profil

  • 五款常用mysql slow log分析工具的比较分析

    启用 slow log 有两种启用方式:1, 在my.cnf 里 通过 log-slow-queries[=file_name] 2, 在mysqld进程启动时,指定--log-slow-queries[=file_name]选项 比较的五款常用工具mysqldumpslow, mysqlsla, myprofi, mysql-explain-slow-log, mysqllogfilter mysqldumpslow, mysql官方提供的慢查询日志分析工具. 输出图表如下: 主要功能是, 统

  • mysql中优化和修复数据库工具mysqlcheck详细介绍

    一.mysqlcheck简介 mysqlcheck客户端可以检查和修复MyISAM表.它还可以优化和分析表. mysqlcheck的功能类似myisamchk,但其工作不同.主要差别是当mysqld服务器在运行时必须使用mysqlcheck,而myisamchk应用于服务器没有运行时.使用mysqlcheck的好处是不需要停止服务器来检查或修复表.使用myisamchk修复失败是不可逆的. Mysqlcheck为用户提供了一种方便的使用SQL语句CHECK TABLE.REPAIR TABLE.

随机推荐