本文共 6787 字,大约阅读时间需要 22 分钟。
利用Xtrabackup工具备份及恢复
Xtrabackup------MySQL DBA的必备工具 1)文档参照http://www.percona.com/docs/wiki/percona-xtrabackup:start 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 | | | |
Phone Support | | | |
Login Support | | | |
24×7 Support | | | |
Fixes For Verified Bugs | | | |
Hot Bug Fixes | | | |
Onsite System Audit | | Option | |
Covers Old Server Versions | | | |
Covers Non-Standard Platforms | | | Option |
Covers Custom Code | | | Option |
参考:
http://www.percona.com/mysql-support/ 先看看如何安装Xtrabackup,最简单的安装方式是使用RPM包,不过想使用源代码方式安装的话,其安装方式有点古怪, 因为它采用的在MySQL源代码上打补丁构建的方式安装的。 wget http://www.percona.com/downloads/XtraBackup/XtraBackup-1.4/Linux/binary/i686/ tar zxf xtrabackup-1.4.tar.gz 进行到这里时,千万别make install,那样就会接着安装MySQL了,正确方法是: 安装参照: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方法,它主要有三种操作方式,按 手册中的介绍: innobackup [--sleep=MS] [--compress[=LEVEL]] [--include=REGEXP] [--user=NAME] [--password=WORD] [--port=PORT] [--socket=SOCKET] [--no-timestamp] [--ibbackup=IBBACKUP-BINARY] [--slave-info] [--stream=tar] [--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 —————————————————————————————————— 带有--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的数据位置。 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 — 存放备份的起始位置和结束位置。 首先停掉数据库,然后删除数据库目录下的所有数据库文件. 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)。 chown -R mysql:mysql mysql_data/ 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 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! chown -R mysql:mysql mysql_data/ 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 解压对应的文件后,操作完全同普通备份。 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/ chown -R mysql:mysql mysql_data/ ——————————————————————————————————————— 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)。 xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/back_data/ xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/back_data_inc/ --incremental- 在增量备份的目录下,数据文件都是以.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- 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/ chown -R mysql:mysql mysql_data/ 2.innobackupex 与 xtrabackup 相结合 innobackupex --user=root /data/back_data/ 2>/data/back_data/1.log #会生成一个时间文件夹,这里假如是 2010-10-29_15-57-44 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 首先停掉数据库,备份二进制日志(如果有的话),然后删除数据库目录下的所有数据库文件. 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 chown -R mysql:mysql mysql_data/ 转自:
本文转自holy2009 51CTO博客,原文链接:http://blog.51cto.com/holy2010/542660
转载地址:http://mxqyo.baihongyu.com/