zoukankan      html  css  js  c++  java
  • xtrabackup(innobackupex)使用详解

    innobackupex实际上是percona-xtrabackup的perl整合脚本,功能当然更强大一些.

    xtrabackup备份实际上是在线的物理热备,为什么和么说呢,因为实际上他是以拷贝mysql物理文件来备份的方式,只是加入了一些锁和钩子来避免数据缺失,优势当然就是快了,物理拷贝始终是速度最快的备份方式,缺点就是占用空间大.

    备份原理很多文章有写,重点在于备份初期会创建一个redo的钩子,让在备份期间产生的数据都能记录下来,而备份数据文件时也会锁一下表,这样数据就会更完整.

    安装方法在另一篇文章已经说了,就不多说了,下面直接介绍使用方法和一些参数说明.

    xtrabackup支持全备和增备,但是我个人不建议用增备,因为增备效果不怎么样,而且直接拷贝binlog其实也挺好用,所以全备+binlog就可以了.

    全备命令:

    /usr/bin/innobackupex --defaults-file=$cnfdir --user=root --password=$pwdr --host=$hosts --parallel=4 --throttle=400 --stream=tar  $backupdir 2>$backupdir/backtip.log |gzip >$backupdir/$backname.tar.gz

    其中

    --defaults-file                备份数据库的配置文件my.cnf的路径

    --user=root                  备份操作用户名,一般都是root用户,但可以改 
    --password=$pwdr                密码
    --host=$hosts                主机ip,本地可以不加,ssh传输,要开放端口
    --parallel=4                  并行个数,根据主机配置选择合适的,默认是1个,多个可以加快备份速度。

    --throttle=400                io限制数,一般来说并行能增加速度,但是IO也高,限制能减少影响

    --stream=tar                  压缩类型,这里选择tar格式,好像也只能是tar
    $backupdir                  备份存放的目录
    2>$backupdir/backtip.log            备份日志,将备份过程中的输出信息重定向到log
    |gzip >$backupdir/$backname.tar.gz       备份文件后用管道再压缩,最后成为一个压缩文件,减少占用空间

    如果是从库,还可以加从库参数

    --slave-info                                    备份目录下会多生成一个xtrabackup_slave_info 文件, 这里会保存主日志文件以及偏移, 文件内容类似于:CHANGE MASTER TO MASTER_LOG_FILE=‘‘, MASTER_LOG_POS=0

    完成备份后出现

    innobackupex: completed OK!

    就是完成了.

    而用他来恢复数据,需要走三部

    恢复第一步:应用日志。
    innobackupex --user=root --password=**** --defaults-file=****/my.cnf --apply-log --use-memory=4G /backup/****
    恢复第二步:拷贝文件。
    innobackupex --user=root --password=**** --defaults-file=****/my.cnf --copy-back /backup/****

    其中

    --defaults-file=/etc/my.cnf     恢复会使用my.cnf文件把需要恢复的文件,恢复到my.cnf指定的位置。
    --apply-log             这是备份时产生的日志,
    --copy-back             这是备份源,解压后的备份文件。

    --use-memory=4G                    为了加快恢复速度,设置可用内存参数

    看到

    Finished copying back files.

    数据还原就完毕了

    恢复第三步:修改文件权限。

    因为恢复回去未必是原本mysql:mysql的权限,所以要改一下

    cd 到data目录
    chown -R mysql.mysql data/

    最后/etc/init.d/mysqld start

    虽然我并不推荐增量备份,但是还是记一下

    增量备份的方法:

    增量备份需要基于全备,先假设我们已经有了一个全备(/backup/mysql-data/2016-05-10_09),在该全表的基础上做增量备份。

    innobackupex --defaults-file=/****/my.cnf --user=root --password=*** --incremental-basedir=/backup/mysql-data/2016-05-10_09 --incremental /backup/mysql-data

    其中

    --incremental-basedir            指向全备目录,

    --incremental                         指向增量备份的目录。

    上面语句执行成功之后,会在--incremental执行的目录下创建一个时间戳子目录,在该目录下存放着增量备份的所有文件。在备份目录下,有一个文件xtrabackup_checkpoints记录着备份信息,全备的信息如下:

    [plain]

    backup_type = full-backuped

    from_lsn = 0

    to_lsn = 563759005914

    last_lsn = 563759005914

    基于该全备的增量备份的信息如下:

    [plain]

    backup_type = incremental

    from_lsn = 563759005914

    to_lsn = 574765133284

    last_lsn = 574765133284

    从上面可以看出,增量备份的from_lsn正好等于全备的to_lsn。

    而且还可以在增量备份的基础上再做增量备份

    innobackupex --defaults-file=/*****/my.cnf --user=root --password=*** --incremental-basedir=/backup/mysql-data/2016-05-10_09 --incremental /backup/mysql-data

    它的xtrabackup_checkpoints记录着备份信息如下:

    [plain]

    backup_type = incremental

    from_lsn = 574765133284

    to_lsn = 574770200380

    last_lsn = 574770200950

    可以看到,该增量备份的from_lsn是从上一次增量备份的to_lsn开始的。

    增量备份的恢复比全备要复杂很多,第一步是在所有备份目录下重做已提交的日志

    增量备份的恢复比全备要复杂很多,第一步是在所有备份目录下重做已提交的日志,如:

    [plain]

    innobackupex --apply-log --redo-only BASE-DIR

    innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1

    innobackupex --apply-log BASE-DIR --incremental-dir=INCREMENTAL-DIR-2

    其中BASE-DIR是指全备目录,INCREMENTAL-DIR-1是指第一次的增量备份,INCREMENTAL-DIR-2是指第二次的增量备份,以此类推。

    这里要注意的是:最后一步的增量备份并没有--redo-only选项!还有,可以使用--use_memory提高性能。

    以上语句执行成功之后,最终数据在BASE-DIR(即全备目录)下。

    第一步完成之后,我们开始第二步:回滚未完成的日志:

    [plain]

    innobackupex --apply-log BASE-DIR

    上面执行完之后,BASE-DIR里的备份文件已完全准备就绪,最后一步是拷贝:

    [plain]

    innobackupex --copy-back BASE-DIR

    同样地,拷贝结束之后,记得检查下数据目录的权限是否正确。




    innobackupex使用详解

    标签:innobackupex xtrabackup

    原文地址:http://arthur376.blog.51cto.com/2918801/1773026

  • 相关阅读:
    Spring MVC “404 Not Found”错误的解决
    oracle高级编程2
    oracl 处理中文问题
    oracle中调用存储过程
    【Java多线程】使用多线程计算阶乘累加 1!+2!+3!+...+19!+20!。其中一个线程计算阶乘,另一线程实现累加并输出结果
    年轻人不讲武德,竟然还搞不懂JVM?求你们来看阿里Java开发岗的招聘要求吧!
    想拿到10k40k的offer,这些技能必不可少!作为程序员的你了解吗?
    一位面试官询问我:Java中的JVM内存溢出和内存泄露是什么?我这么回答成功拿到了offer。
    (四) Spring整合ActiveMQ超详细教程
    基于Java的Socket类Tcp网络编程实现实时聊天互动程序(一):QQ聊天界面的搭建
  • 原文地址:https://www.cnblogs.com/caodneg7/p/14393178.html
Copyright © 2011-2022 走看看