Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1366950
  • 博文数量: 243
  • 博客积分: 888
  • 博客等级: 准尉
  • 技术积分: 2955
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-05 14:33
个人简介

漫漫长路,其修远兮!

文章分类

全部博文(243)

文章存档

2017年(2)

2016年(22)

2015年(32)

2014年(57)

2013年(107)

2012年(23)

分类: Mysql/postgreSQL

2012-12-06 11:36:04

一.安装
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.备份整个数据库实例

点击(此处)折叠或打开

  1. innobackupex --user=root --password=123 --host=10.1.10.4 --defaults-file=/etc/my.cnf /data/backdata 2>/data/backdata/back.log


点击(此处)折叠或打开

  1. ./xtrabackup_55 --defaults-file=/etc/mysql/my.cnf --backup --target-dir=/data/dbbak/

innobackupex语法

点击(此处)折叠或打开

  1. innobackup [--sleep=MS] [--compress[=LEVEL]] [--include=REGEXP] [--user=NAME] [--password=WORD]
  2. [--port=PORT] [--socket=SOCKET] [--no-timestamp] [--ibbackup=IBBACKUP-BINARY] [--slave-info] [--stream=tar]
  3. [--defaults-file=MY.CNF] [--databases=LIST] [--remote-host=HOSTNAME] BACKUP-ROOT-DIR
  4.  
  5. innobackup --apply-log [--use-memory=MB] [--uncompress] [--defaults-file=MY.CNF] [--ibbackup=IBBACKUP-BINARY] BACKUP-DIR
  6.  
  7. innobackup --copy-back [--defaults-file=MY.CNF] BACKUP-DIR
  8.  
  9. 各参数说明:
  10.  
  11. --defaults-file
  12. 同xtrabackup的--defaults-file参数
  13.  
  14. --apply-log
  15. 对xtrabackup的--prepare参数的封装
  16.  
  17. --copy-back
  18. 做数据恢复时将备份数据文件拷贝到MySQL服务器的datadir ;
  19.  
  20. --remote-host=HOSTNAME
  21. 通过ssh将备份数据存储到进程服务器上;
  22.  
  23. --stream=[tar]
  24.  
  25. 备份文件输出格式, tar时使用tar4ibd , 该文件可在XtarBackup binary文件中获得.如果备份时有指定--stream=tar, 则tar4ibd文件所处目录一定要在$PATH中(因为使用的是tar4ibd去压缩, 在XtraBackup的binary包中可获得该文件)
  26.  
  27. 在使用参数stream=tar备份的时候,你的xtrabackup_logfile可能会临时放在/tmp目录下,如果你备份的时候并发写入较大的话xtrabackup_logfile可能会很大(5G+),很可能会撑满你的/tmp目录,可以通过参数--tmpdir指定目录来解决这个问题。
  28.  
  29. --tmpdir=DIRECTORY
  30.  
  31. 当有指定--remote-host or --stream时, 事务日志临时存储的目录, 默认采用MySQL配置文件中所指定的临时目录tmpdir
  32.  
  33. --redo-only --apply-log组,
  34.  
  35. 强制备份日志时只redo ,跳过rollback。这在做增量备份时非常必要。
  36.  
  37. --use-memory=#
  38.  
  39. 该参数在prepare的时候使用,控制prepare时innodb实例使用的内存量
  40.  
  41. --throttle=IOS
  42.  
  43. 同xtrabackup的--throttle参数
  44.  
  45. --sleep=是给ibbackup使用的,指定每备份1M数据,过程停止拷贝多少毫秒,也是为了在备份时尽量减小对正常业务的影响,具体可以查看ibbackup的手册 ;
  46.  
  47. --compress[=LEVEL]
  48. 对备份数据迚行压缩,仅支持ibbackup,xtrabackup还没有实现;
  49.  
  50. --include=REGEXP
  51. 对xtrabackup参数--tables的封装,也支持ibbackup。备份包含的库表,例如:--include="test.*",意思是要备份test库中所有的表。如果需要全备份,则省略这个参数;如果需要备份test库下的2个表:test1和test2,则写成:--include="test.test1|test.test2"。也可以使用通配符,如:--include="test.test*"
  52.  
  53. --databases=LIST
  54. 列出需要备份的databases,如果没有指定该参数,所有包含MyISAM和InnoDB表的database都会被备份;
  55.  
  56. --uncompress
  57. 解压备份的数据文件,支持ibbackup,xtrabackup还没有实现该功能;
  58.  
  59. --slave-info,
  60. 备份从库, 加上--slave-info备份目录下会多生成一个xtrabackup_slave_info 文件, 这里会保存主日志文件以及偏移, 文件内容类似于:CHANGE MASTER TO MASTER_LOG_FILE='', MASTER_LOG_POS=0
  61.  
  62. --socket=SOCKET
  63. 指定mysql.sock所在位置,以便备份进程登录mysql.

1.普通备份

点击(此处)折叠或打开

  1. innobackupex --database="testinnodb test" --user=root --no-lock --defaults-file=/data0/mysql/my.cnf /data0/backup/mysql 2>/tmp/mysqlbackup.log
2.打包备份

点击(此处)折叠或打开

  1. 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.压缩备份

点击(此处)折叠或打开

  1. 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.备份到远程服务器

点击(此处)折叠或打开

  1. 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)

点击(此处)折叠或打开

  1. 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) |
给主人留下些什么吧!~~