Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7403299
  • 博文数量: 1756
  • 博客积分: 18684
  • 博客等级: 上将
  • 技术积分: 16232
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-02 10:28
个人简介

啥也没写

文章分类

全部博文(1756)

文章存档

2024年(2)

2023年(44)

2022年(39)

2021年(46)

2020年(43)

2019年(27)

2018年(44)

2017年(50)

2016年(47)

2015年(15)

2014年(21)

2013年(43)

2012年(143)

2011年(228)

2010年(263)

2009年(384)

2008年(246)

2007年(30)

2006年(38)

2005年(2)

2004年(1)

分类: LINUX

2009-11-23 11:14:33

 

Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。Xtrabackup中包含两个工具:

    * xtrabackup - 用于热备份innodb, xtradb表的工具,不能备份其他表。
    * innobackupex - 对xtrabackup封装的perl脚本,提供了myisam表备份的能力。

Xtrabackup可以做什么

    * 在线(热)备份整个库的InnoDB, XtraDB表
    * 在xtrabackup的上一次整库备份基础上做增量备份(innodb only)
    * 以流的形式产生备份,可以直接保存到远程机器上(本机硬盘空间不足时很有用)

Xtrabackup如何工作的

    * xtrabackup - 具体原理有待研究。。。
    * innobackupex整库备份
         1. 调用xtrabackup对innodb表空间文件(这一瞬间的映像Time1)备份,而在这个innodb表备份期间数据库是不加锁的,外部可以继续往库里增减数据(这才能叫热备份)。而在Time1和Time2这两个时间点之间的改动由一个线程不断地扫innodb log获得(ChangeSet1)。
         2. 锁所有库。
         3. 以直接拷贝的方式备份frm,MYD,MYI,MRG,TRG,TRN,opt格式的文件。
         4. 步骤3中的数据备份完毕时(Time2),停止扫innodb log的线程,把ChangeSet1的数据拷贝到备份中。
         5. 解锁所有库。
         6. 终止挂起,备份完毕。

注意要点

    * 根据innobackupex的原理可知它不是真正的热备份,MyISAM表越少越小就越有利。要利用Xtrabackup的好处就尽量用innodb表。
    * 还原备份前关闭mysql服务;还原备份后检查数据文件权限是否正确。
    * 性能:备份一个数据目录总大小5.6G,其中ibdata 2G,总时间4分钟,锁表时间2.5分钟。如果用mysqldump做这个库的备份锁表时间是5-8倍。

安装
tar zxf xtrabackup-0.7.tar.gz
cd xtrabackup-0.7
./configure
make

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

cd innobase/xtrabackup/
make
make install

然后,就会在你的/usr/bin目录里安装上两个工具:xtrabackup,innobackupex-1.5.1

# 制定备份多个数据库
innobackupex-1.5.1 --user=root --databases="innodb innodb2" /bak/

# 压缩备份(不加--databases,默认全部数据库)
innobackupex-1.5.1 --user=root --stream=tar /bak/ | gzip > /bak/bak.tar.gz
(解压缩必须加i。innobackupex: You must use -i (--ignore-zeros) option for extraction of the tar stream.)

# 远程备份到192.168.1.200的/bak目录下。
innobackupex-1.5.1 --user=root --stream=tar /bak | ssh root@192.168.1.200 cat ">" /bak/backup.tar

恢复
# innobackup-1.5.1 --apply-log  /bak/2009_0929/
# innobackup-1.5.1 --copy-back  /bak/2009_0929/
# chown -R mysql:mysql /usr/local/mysql/data/*
# mysqladmin -uroot -p123456 shutdown
# mysqld_safe --user=mysql &

 

Address: http://blog.linuxhomes.cn/archives/176/

阅读(964) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~