一.安装
xtrabackup是热备工具,是ibbackup的一个开源替代品。
使用xtrabackup-1.6.5.tar.gz,解压可以直接使用。要把bin目录下面的执行脚本拷贝到/usr/bin目录下面
或者是使用软连接
ln -s /usr/local/xtrabackup/tar4ibd /usr/bin/tar4ibd
ln -s /usr/local/xtrabackup/xtrabackup /usr/bin/xtrabackup
ln -s /usr/local/xtrabackup/xtrabackup_51 /usr/bin/xtrabackup_51
ln -s /usr/local/xtrabackup/xtrabackup_55 /usr/bin/xtrabackup_55
ln -s /usr/local/xtrabackup/bin/innobackupex /usr/bin/innobackupex
或者
cp xtrabackup-1.6.5/bin/* /usr/bin/
二.全备和恢复
1.备份整个数据库实例
-
innobackupex --user=root --password=123 --host=10.1.10.4 --defaults-file=/etc/my.cnf /data/backdata 2>/data/backdata/back.log
-
./xtrabackup_55 --defaults-file=/etc/mysql/my.cnf --backup --target-dir=/data/dbbak/
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]
-
[--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
-
-
各参数说明:
-
-
--defaults-file
-
同xtrabackup的--defaults-file参数
-
-
--apply-log
-
对xtrabackup的--prepare参数的封装
-
-
--copy-back
-
做数据恢复时将备份数据文件拷贝到MySQL服务器的datadir ;
-
-
--remote-host=HOSTNAME
-
通过ssh将备份数据存储到进程服务器上;
-
-
--stream=[tar]
-
-
备份文件输出格式, tar时使用tar4ibd , 该文件可在XtarBackup binary文件中获得.如果备份时有指定--stream=tar, 则tar4ibd文件所处目录一定要在$PATH中(因为使用的是tar4ibd去压缩, 在XtraBackup的binary包中可获得该文件)。
-
-
在使用参数stream=tar备份的时候,你的xtrabackup_logfile可能会临时放在/tmp目录下,如果你备份的时候并发写入较大的话xtrabackup_logfile可能会很大(5G+),很可能会撑满你的/tmp目录,可以通过参数--tmpdir指定目录来解决这个问题。
-
-
--tmpdir=DIRECTORY
-
-
当有指定--remote-host or --stream时, 事务日志临时存储的目录, 默认采用MySQL配置文件中所指定的临时目录tmpdir
-
-
--redo-only --apply-log组,
-
-
强制备份日志时只redo ,跳过rollback。这在做增量备份时非常必要。
-
-
--use-memory=#
-
-
该参数在prepare的时候使用,控制prepare时innodb实例使用的内存量
-
-
--throttle=IOS
-
-
同xtrabackup的--throttle参数
-
-
--sleep=是给ibbackup使用的,指定每备份1M数据,过程停止拷贝多少毫秒,也是为了在备份时尽量减小对正常业务的影响,具体可以查看ibbackup的手册 ;
-
-
--compress[=LEVEL]
-
对备份数据迚行压缩,仅支持ibbackup,xtrabackup还没有实现;
-
-
--include=REGEXP
-
对xtrabackup参数--tables的封装,也支持ibbackup。备份包含的库表,例如:--include="test.*",意思是要备份test库中所有的表。如果需要全备份,则省略这个参数;如果需要备份test库下的2个表:test1和test2,则写成:--include="test.test1|test.test2"。也可以使用通配符,如:--include="test.test*"。
-
-
--databases=LIST
-
列出需要备份的databases,如果没有指定该参数,所有包含MyISAM和InnoDB表的database都会被备份;
-
-
--uncompress
-
解压备份的数据文件,支持ibbackup,xtrabackup还没有实现该功能;
-
-
--slave-info,
-
备份从库, 加上--slave-info备份目录下会多生成一个xtrabackup_slave_info 文件, 这里会保存主日志文件以及偏移, 文件内容类似于:CHANGE MASTER TO MASTER_LOG_FILE='', MASTER_LOG_POS=0
-
-
--socket=SOCKET
-
指定mysql.sock所在位置,以便备份进程登录mysql.
1.普通备份
-
innobackupex --database="testinnodb test" --user=root --no-lock --defaults-file=/data0/mysql/my.cnf /data0/backup/mysql 2>/tmp/mysqlbackup.log
2.打包备份
-
innobackupex --database="testinnodb test" --user=root --defaults-file=/data0/mysql/my.cnf --no-lock --stream=tar /data0/backup/mysql/ 2>/tmp/innobackup.log 1>/data0/backup/mysql/mike.tar
3.压缩备份
-
innobackupex --database="testinnodb test" --user=root --defaults-file=/data0/mysql/my.cnf --no-lock --stream=tar /data0/backup/mysql/ 2>/tmp/innobackup.log|gzip>/data0/backup/mysql/mike.tar.gz
4.备份到远程服务器
-
innobackupex --database="testinnodb test" --user=root --defaults-file=/data0/mysql/my.cnf --no-lock --stream=tar /data0/backup/mysql/|ssh root@192.168.1.101 cat ">"/data0/backup.tar
备份后会再/data/backdata目录生成一个如2012-12-06_11-43-37的目录,目录中有如下几个文件
backup-my.cnf
ibdata1
xtrabackup_logfile
xtrabackup_binlog_info
xtrabackup_checkpoints
xtrabackup_binary
test
mysql
db1
....
2.恢复数据库
a.关闭mysql,删除原有的data目录
rm -rf /data/dbdata/*
b.生成logfile文件
innobackupex-1.5.1 --apply-log /data/backdata/2012-12-06_11-43-37
c.把2012-12-06_11-43-37目录下面的相关文件拷贝原来的dbdata目中
innobackupex-1.5.1 --copy-back /data/backdata/2012-12-06_11-43-37
d.修改数据目录的权限
chown -R mysql:mysql /data/dbdata
e.启动数据库
3.使用压缩备份(tar gizp)
-
innobackupex --user=root --password=123 --host=10.1.10.4 --defaults-file=/etc/my.cnf --stream=tar /data/backdata/ 2>/data/backdata/back.log | gzip 1>/data/backdata/aa.tar.gz
在使用的时候用tar -izxvf aa.tar.gz
问题:如果是备份库或者的表的备份,该怎么恢复?
实现的原理看这里
三.增量备份恢复
未完待续。。。。
阅读(1274) | 评论(0) | 转发(0) |