Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2224689
  • 博文数量: 533
  • 博客积分: 8689
  • 博客等级: 中将
  • 技术积分: 7046
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-26 10:00
文章分类

全部博文(533)

文章存档

2024年(2)

2023年(4)

2022年(16)

2014年(90)

2013年(76)

2012年(125)

2011年(184)

2010年(37)

分类: LINUX

2011-05-06 17:50:50

xtrabackup_55   --defaults-file=/etc/my.cnf    --backup --target-dir=/root/backup



innobackupex-1.5.1 --user root --pass 123456 /tmp/backup --defaults-file=/etc/my.cnf


innobackupex  --user=root  --password --defaults-file=/etc/my.cnf --apply-log   /tmp/backup/2011-05-06_17-38-31/

innobackupex  --user=root  --password --defaults-file=/etc/my.cnf --copy-back   /tmp/backup/2011-05-06_17-38-31/




简介:
  Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。
    Xtrabackup有两个主要的工具:xtrabackup、innobackupex
  (1)xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表
  (2)innobackupex-1.5.1则封装了xtrabackup,是一个脚本封装,所以能同时备份处理innodb和myisam,但在处理myisam时需要加一个读锁
  (3)使用帮助:

环境:CentOS 5.4,xtrabackup-1.6.tar.gz

1、首先从下载
       wget     

2、检查服务器是否安装了Mysql版本,如果没有就要安装好mysql
   my.cnf中必须有datadir=/var/lib/mysql

3、开始安装xtrabackup
     1)解压     
         cd /qeedoodb/setup
         tar zxvf xtrabackup-1.6.tar.gz 
     2)拷贝innobackupex、xtrabackup、xtrabackup_51 工具到/usr/bin
        cp /qeedoodb/setup/xtrabackup-1.6/bin/innobackupex /usr/bin/innobackupex
        cp /qeedoodb/setup/xtrabackup-1.6/bin/xtrabackup  /usr/bin/xtrabackup
        cp /qeedoodb/setup/xtrabackup-1.6/bin/xtrabackup_51  /usr/bin/xtrabackup_51
     
  
    
4、备份并打包压缩
      innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf --database=zztx --stream=tar /data/back_data/ 2>/data/back_data/zztx.log | gzip     1>/data/back_data/zztx.tar.gz
      
      说明:
      --database=zztx 单独对zztx数据库做备份 ,若是不添加此参数那就那就是对全库做备份
      2>/data/back_data/zztx.log  输出信息写入日志中
      1>/data/back_data/zztx.tar.gz 打包压缩存储到该文件中
      
      此处可以写个脚本做备份(backup.sh)
      #!/bin/sh
      echo "开始备份..."`date`
      log=zztx01_`date +%y%m%d%H%M`.log
      str=zztx01_`date +%y%m%d%H%M`.tar.gz
      innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf --database=zztx --stream=tar /data/back_data/ 2>/data/back_data/$log | gzip 1>/data/back_data/$str
      echo "备份完毕..."`date`
      
5、恢复数据
      1) 先停止数据库:service mysqld stop
      2) 解压 tar -izxvf zztx.tar.gz -C /data/back_data/db/   (没有db ,需要mkdir /data/back_data/db/) 
      3) 恢复 innobackupex --user=root --password --defaults-file=/etc/my.cnf  --apply-log /data/back_data/db/  (--apply-log选项的命令是准备在一个备份上启动mysql服务)
              innobackupex --user=root --password --defaults-file=/etc/my.cnf  --copy-back /data/back_data/db/  (--copy-back 选项的命令从备份目录拷贝数据,索引,日志到my.cnf文   件里规定的初始位置。)
      4) 赋权 chown -R mysql.mysql /var/lib/mysql/*
      5) 重启数据库 service mysqld restart
      6) 删除垃圾 cd /var/lib/mysql/  && rm xtrabackup*
      进入数据库查看,一切OK~
           



















 Xtrabackup增量备份探索
2010-05-04 11:23:31
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://xikder.blog.51cto.com/1423200/309339
Xtrabackup 简介:
    Xtrabackup 是percona公司(mysqlperformanceblog)的开源项目,目的是实现类似innodb官方的热备份工具InnoDB Hot Backup的功能,可以帮助我们对MySQL InnoDB类型的数据库表进行在线热备份。 


Xtrabackup中包含两个工具:
 
* xtrabackup - 用于热备份
innodb, xtradb表的工具,不能备份其他表。 
* innobackupex - 对xtrabackup封装的perl脚本,提供了myisam表备份的能力。(能进行整库和数据表备份)。

本文旨在介绍Xtrabackup工具对数据库进行增量备份实践。
 
优点:
             1、数据库太大没有足够的空间全量备份,作增量备份有效节省空间,且效率高。
           2、支持热备份。备份过程不锁表,不受时间限制,不影响用户使用。
           3、每日备份只产生少量数据,远程备份传输更方便。同时节省空间。
           4、备份恢复基于文件操作,降低直接对数据库操作风险。
           5、备份效率更高,恢复效率更高。
 

实践探索:
测试之前先备份好数据库哦,不然不成功别怪我!
1、下载:
选择一个合适的版本。以rpm包为例,xtrabackup-1.0-56.rhel5.x86_64.rpm。

2、安装(必须先安装mysql-client):
# rpm -ivh xtrabackup-1.0-56.rhel5.x86_64.rpm

3、修改数据库配置文件:
# vim /etc/my.cnf
添加或修改:datadir = /var/lib/mysql/(数据库目录)
特别注意:default_table_type = InnoDB (必须改,否则进行增量备份的时候不成功,我测试的时候因为这个折腾了很久)
另外建一个用于数据备份的目录
# mkdir  /var/backups

4、重启数据库:
# mysqladmin -u root -p shutdown
# service mysqld start

备份策略:
整库备份直接用innobackupex-1.5.1脚本。
只对InnoDB或xtradb表,进行备份直接用xtrabackup。

       由于xtrabackup不能备份表结构,所以备份时首先用innobackupex-1.5.1脚本对数据库进行整库备份。再用xtrabackup进行表备份。分别进行。恢复时也分别进行恢复。如果发生表结构丢失则先使用innobackupex-1.5.1进行恢复,然后再用xtrabackup恢复增量数据。用生成的文件ib*覆盖用innobackupex-1.5.1恢复后的ib*文件。

一、整库备份及恢复。
   备份
# innobackupex-1.5.1 --user=root --password=cdqd --defaults-file=/etc/my.cnf   /var/backups/
(root为数据库用户名,cdqd为数据库密码,/etc/my.cnf为mysql配置文件所在位置,/var/backups/为备份文件存储目录,执行后会在)
   恢复
 首先停掉数据库,然后删除数据库目录下的所有数据库文件。
首先写日志文件,然后恢复,如下。(注:2010-04-17_22-19-30是自动生成的以备份时间命名的文件夹,恢复时根据情况进行选择)
# innobackupex-1.5.1 --apply-log --defaults-file=/etc/my.cnf  /var/backups/2010-04-17_22-19-30
# innobackupex-1.5.1 --copy-back --defaults-file=/etc/my.cnf  /var/backups/2010-04-17_22-19-30

使用cd或者ls 命令看看你的数据库目录下是不是有文件了?

修改数据库文件权限,否则无法启动。(这步我是cd到原数据库目录下进行的)
#chown -R mysql:mysql *
重启数据库,开恢复是否成功。

二、全量备份及恢复(使用xtrabackup,仅限InnoDB和xtradb表,且注意mysql配置文件my.cnf中“default_table_type = InnoDB”否则不成功)。

#xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/var/backups/base/
  执行两次:
#xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/var/backups/base
#xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/var/backups/base
  将数据库停掉,删除数据库下的ib*(ib开头的所有)文件。将/var/backups/base目录下的ib*文件拷贝到数据库目录。
  设置权限:
#chown mysql:mysql ib*
重启数据库后测试,是否成功。

三、增量备份及恢复(再次强调,xtrabackup做增量仅限InnoDB和xtradb表,且注意mysql配置文件my.cnf中“default_table_type= InnoDB”否则不成功)。

做增量前当然要先进行全量备份,在全量的基础上来进行增量。

首先进行全量备份。
# xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/var/backups/base/
在全量备份的基础上进行增量。
# xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/var/backups/1/ --
incremental-basedir=/var/backups/base
......
(注:/var/backups/1/是每次都需修改的。比如第二次增量就改成/var/backups/2,当然可以写个脚本进行自动备份,备份脚本将陆续奉上......恢复的时候也是一样)

增量恢复。(步骤同全量恢复,只是在执行恢复命令的时候中间多一步)
# xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/var/backups/base
# xtrabackup --target-dir=/backups/base --prepare --incremental-dir=/var/backups/1
# xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/var/backups/base
  将数据库停掉,删除数据库下的ib*文件。将/var/backups/base目录下的ib*文件拷贝到数据库目录。
  设置权限:
#chown mysql:mysql ib*
重启后测试。是否成功。

注:备份前先登录数据库,打开一个表看看记录条数,然后进行备份,然后再对表最终的记录进行修改,然后在备份,再测试。
   
附图:
全量备份结果

 

增量结果
比较一下增量是不是有效的节省了空间呢?当然我这里测试用的只有 10多M 对于大型数据库则区别就更大了。

 






xtrabackup实现增量备份脚本
2010-06-07 11:40:54
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://xikder.blog.51cto.com/1423200/327780
使用xtrabackup实现增量备份脚本。incremental.sh
    基本思想,增量备份是在全量备份的基础上进行的,全量备份只需执行一次,因此首次备份时先检测全量备份是否成功。由于全量备份的目录是自动建立的,因此这里如果检测到存在全量目录,就默认为全量备份是成功的。如果不存在该目录就进行全量备份。否则进行增量。增量文件目录是以时间命名的。

#!/bin/bash
# 指定mysql配置文件路径 
sql_file=/etc/my.cnf
#指定备份根目录
backup_path=/data/backups/
#指定全量备份目录
data_full=/data/backups/base/
#指定增量备份文件夹名
file_name=`date "+%Y-%m-%d:%H:%M:%S"`
#判断全量是否存在,不存在就执行备份,否则进行增量。
if [ ! -d "$data_full" ]; then
    touch "$backup_path"&&xtrabackup --defaults-file=$sql_file --target-dir=$data_full --backup
  else 
    xtrabackup --defaults-file=$sql_file --target-dir=$backup_path$file_name --incremental-basedir=$data_full --backup
fi
exit 0

本文出自 “崛起的力量” 博客,请务必保留此出处http://xikder.blog.51cto.com/1423200/327780





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