免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1383 | 回复: 0
打印 上一主题 下一主题

XtraBackup完全、增量备份及恢复 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-20 09:46 |只看该作者 |倒序浏览
Xtrabackup  是percona的一个开源项目,可以热备份innodb ,XtraDB,和MyISAM(会锁表),可以看做是InnoDB Hotbackup的免费替代品。
如此一来,就会在/usr/bin目录里安装上两个有用的工具:xtrabackup、innobackupex
1)xtrabackup 只能备份InnoDB和XtraDB两种数据表,支持在线热备份,可以在不加锁的情况下备份Innodb数据表,不过此工具不能操作Myisam引擎表
2)innobackupex  是一个脚本封装,封装了xtrabackup,能同时处理Innodb和Myisam,但在处理Myisam时需要加一个读锁。
 
获取软件包:
 
如果你想使用源代码方式安装的话,,这是因为它采用的在MySQL源代码上打补丁构建的方式。
yum localinstall xtrabackup-1.5-11.rhel5.i386.rpm  --nogpgcheck
编译安装:
tar zxf xtrabackup-1.4.tar.gz
cd xtrabackup-1.4
./configure
make
cd innobase/xtrabackup/
make
make install
 
如此一来,就会在你的/usr/bin目录里安装上两个有用的工具:xtrabackup,innobackupex-1.5.1:
xtrabackup可以在不加锁的情况下备份innodb数据表,不过此工具不能操作myisam。也可以备份xtraDB
innobackupex-1.5.1是一个脚本封装,能同时处理innodb和myisam,但在处理myisam时需要加一个读锁。
按如上的介绍,由于操作myisam时需要加读锁,这会堵塞线上服务的写操作,而innodb没有这样的限制,所以数据库中innodb表类型所占的比例越大,则越有利。实际应用中一般是直接使用innobackupex-1.5.1方法
 
它主要有三种操作方式:
   innobackup 热备份mysql数据库。
   innobackup --apply-log 准备在一个备份上启动mysql服务。
   innobackup --copy-back 从备份目录拷贝数据,索引,日志到my.cnf文件里规定的初始位置。
 
四、innobackupex备份与恢复

1.普通备份:备份course(myisam) 和class(innodb)
  mkdir /www/innodb
  innobackupex-1.5.1 --defaults-file=/etc/my.cnf --user=root --port=3306 --database="course class"      /www/innodb/ 2>/www/innodb/backup1.log 

 使用mysql的root用户备份
 备份的目标目录是/www/backup/db/innobackup/,innobackupex-1.5.1将在该目录下生成备份
 --no-lock备份时不锁定表,--databases="course class"用于指定要备份的数据库
 2>/www/innodb/backup1.log,是将备份过程中的输出信息重定向到/www/innodb/backup1.log
 
 
恢复过程:
  mysql
  drop database course
  drop database class
  service mysqld stop
  rm -rf ibdata*
  rm -rf ib_logfile*
  echo "1" >/proc/sys/vm/drop_caches
  service mysqld start
  innobackupex-1.5.1 --apply-log --defaults-file=/etc/my.cnf --user=root --port=3306 /www/innodb/2011-03-14_06-51-05/
    
  innobackupex-1.5.1 --copy-back --defaults-file=/etc/my.cnf --user=root --port=3306 /www/innodb/2011-03-14_06-51-05/
  service mysqld stop
  chown -R mysql:mysql /mydata
  chown -R :root /mydata/mysql
  service mysqld start
  连接mysql 查看数据是否恢复
 
2.压缩(tar gzip)备份 ,支持远程主机的备份
  innobackupex-1.5.1 --defaults-file=/etc/my.cnf --user=root --port=3306 --database="course class"
   --stream=tar /www/innodb/ 2>/www/innodb/backup2.log | gzip > /www/innodb/2.tar.gz  
  
恢复:
  恢复过程,只需要使用tar izxvf 解压对应的文件后,操作完全同普通备份。
  service mysqld start
  tar ixvf /www/innodb/2.tar.gz
  innobackupex-1.5.1 --apply-log --defaults-file=/etc/my.cnf --user=root --port=3306 /www/innodb/2
    innobackupex-1.5.1 --copy-back --defaults-file=/etc/my.cnf --user=root --port=3306 /www/innodb/2
  chown -R mysql:mysql /mydata
  service mysqld restart

 
五、xtrabackup备份与恢复
xtrabackup只备份InnoDB数据文件,表结构是不备份的,所以恢复的时候,你必须有对应表结构文件(.frm)
 mysql
 use class
 alter table stu engine=innodb
1.普通备份
  mkdir -p /www/xtrabackup/2011-3-10
  xtrabackup --defaults-file=/etc/my.cnf --backup  --target-dir=/www/xtrabackup/2011-3-10
  cp -r /mydata/class  /www/xtrabackup
 
模拟恢复过程
  mysql
  drop database class;
  service mysqld stop
  cd /mydata
  rm rf ibdata1
  rm rf ib_logfile*
  echo "1" >/proc/sys/vm/drop_caches
  
  xtrabackup --default-file=/etc/my.cnf --prepare --target-dir=/www/xtrabackup/2011-3-10
  cp -r /www/xtrabackup/ibdata1 /mydata/
  cp -r /www/xtrabackup/class /mydata/
  chown -R mysql:mysql /mydata
  chown -R :root /mydata/mysql
  service mysqld start
  mysql
  use class
  select * from stu;
 
2增量备份mkdir /www/xtrabackup/2011-3-15
  xtrabackup --default-file=/etc/my.cnf --backup --target-dir=/www/xtrabackup/2011
    --incremental-basedir=/www/xtrabackup/2011-3-15
 
恢复:
  mysql
  drop database class;
  service mysqld stop
  cd /mydata
  rm rf ibdata1
  rm rf ib_logfile*
  echo "1" >/proc/sys/vm/drop_caches
  xtrabackup --default-file=/etc/my.cnf --prepare --target-dir=/www/xtrabackup/2011-3-10
  xtrabackup --default-file=/etc/my.cnf --prepare --target-dir=/www/xtrabackup/2011-3-10
   --incremental-basedir=/www/xtrabackup/2011-3-15
  cp -r /www/xtrabackup/2011-3-10/ib* /mydata/
  cp -r /www/xtrabackup/2011-3-15/class /mydata
  chown -R mysql:mysql /mydata
    chown -R :root /mydata/mysql
  service mysqld start
  mysql
  use class
  select * from stu;
  
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP