• xtrabackup 安装及应用



    xtrabackup 是 percona 的一个开源项目,可以热备份innodb ,XtraDB,和MyISAM(会锁表)

    官方网址http://www.percona.com/docs/wiki/percona-xtrabackup:start

    安装:
    rpm -ivh --nodeps xtrabackup-1.2-22.rhel5.x86_64.rpm
    --nodeps(不检查软件间的依赖关系),因为安装xtrabackup需要mysql_client,但是我的是通过源码安装的。

    前奏:
    环境变量要设置正确
    比如 export PATH=$PATH:/usr/local/mysql/bin   如果mysql没有设置到PATH里 会报错。

    1.innobackupex-1.5.1 和 xtrabackup备份详解
    ========================================================================================
    innobackupex-1.5.1会根据/et/my.cnf来确定MySQL的数据位置。

    1.普通备份:
    innobackupex-1.5.1 [--defaults-file=/etc/my.cnf]  --user=root [--host=192.168.1.52] [--password=xxx] [--port=3306]
     /data/back_data/  2>/data/back_data/1.log   

    备份的目录是/data/back_data/
    这里的2>/data/back_data/1.log,是将备份过程中的输出信息重定向到1.log

    innobackupex-1.5.1 --slave-info .....
    --slave-info会记录复制主日志的 复制点,便于重新做复制用。(用在备份从机器用)

    备份后的文件:
    xtrabackup_binlog_info    -- 存放binlog的信息。(binlog需要另外拷贝备份,如果需要binlog的话)
    xtrabackup_checkpoints    -- 存放备份的起始位置和结束位置。


    恢复:
    首先停掉数据库,然后删除数据库目录下的所有数据库文件.
    cd /data/mysql_data
    rm -rf *     # 删除数据目录里的所有文件

    innobackupex-1.5.1 --user=root --apply-log /data/back_data/2010-10-26_16-09-37   # 应用日志
    innobackupex-1.5.1 --user=root --copy-back /data/back_data/2010-10-26_16-09-37

    默认innobackupex-1.5.1会将二进制日志信息存放在文件xtrabackup_binlog_info中发(方便做Slave)。
    cd /data
    chown -R mysql:mysql mysql_data/
    重启mysql服务


    2.打包(Tar)备份:
    innobackupex-1.5.1 --user=root [--password=xxx] --stream=tar /data/back_data/2/  2>/data/back_data/2.log  1>/data/back_data/2.tar

    还原:
    cd /data/back_data/2/
    tar ixvf 2.tar
    root@mablevi-desktop:/data/back_data/2# ls
    2.tar  backup-my.cnf  ibdata1  ibdata2  mablevi  mysql  xtrabackup_binlog_info  xtrabackup_checkpoints  xtrabackup_logfile
    准备还原
    root@mablevi-desktop:~# innobackupex-1.5.1 --user=xxx [--password=xxx] --apply-log /data/back_data/
    ......
    innobackupex: completed OK!

    删除数据目录里的所有文件
    rm -rf /data/mysql_data/*
    拷贝:
    root@mablevi-desktop:~# innobackupex-1.5.1 --user=xxx [--password=xxx] --copy-back /data/back_data/
    ......
    innobackupex: completed OK!

    cd /data
    chown -R mysql:mysql mysql_data/
    重启mysql服务


    3. 压缩(tar gzip)备份
    innobackupex-1.5.1 --user=root [--password=xxx] --stream=tar 
    /data/back_data/2/  2>/data/back_data/2.log | gzip > /data/back_data/2.tar.gz 
    这里使用了管道|将innobackupex-1.5.1作为gzip的标准输入。恢复,只需要使用tar -izxvf 解压对应的文件后,操作完全同普通备份。

    还原:
    使用tar –izxvf 解压对应的文件后,操作完全同普通备份。
    cd /data/back_data/2/
    tar ixvf 2.tar

    root@mablevi-desktop://data/back_data/2# ls
    backup-my.cnf  ibdata1  ibdata2  mablevi  mysql  xtrabackup_binlog_info  xtrabackup_checkpoints  xtrabackup_logfile
    准备还原:
    root@mablevi-desktop:~# innobackupex-1.5.1 --user=xxx [--password=xxx] --apply-log /data/back_data/2/
    ......
    innobackupex: completed OK!

    删除数据目录里的所有文件
    rm -rf /data/mysql_data/*

    root@mablevi-desktop:/data/back_data/2# innobackupex-1.5.1 --user=xxx [--password=xxx] --copy-back /data/back_data/2/

    cd /data
    chown -R mysql:mysql mysql_data/
    重启mysql服务

    ---------------------------------------------------------------------------------------------------------------------
    xtrabackup 备份和恢复

    备份:
    xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/back_data/

    恢复:
    需要执行两次xtrabackup --prepare
    xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/back_data/
    xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/back_data/

    注意,xtrabackup只备份数据文件,并不备份数据表结构(.frm),所以使用xtrabackup恢复的时候,你必须有对应表结构文件(.frm)。


    增量备份:
    1. 全量备份
    xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/back_data/
    2. 增量备份
    xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/back_data_inc/ --incremental-basedir=/data/back_data/
    在增量备份的目录下,数据文件都是以.delta结尾的。增量备份只备份上一次全量备份后被修改过的page,所以增量备份只暂用较少的空间。

    增量备份可以在增量备份的基础上增量。

    增量备份恢复:
    我们需要分别对全量、增量备份各做一次prepare操作。
    xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/back_data/2010-10-26_16-09-37
    xtrabackup --prepare --target-dir=/data/back_data/2010-10-26_16-09-37 --incremental-dir=/data/back_data_inc
    xtrabackup --prepare --target-dir=/data/back_data/ #这一步不是必须的 
    这样,/data/back_data/下的数据文件就可以直接放到你的MySQL数据目录下,恢复数据了。
    再次提醒,xtrabackup只备份InnoDB数据文件,表结构是不备份的,所以恢复的时候,你必须有对应表结构文件(.frm)。

    rm -rf /data/mysql_data/ib*

    cp -i /data/back_data/2010-10-26_16-09-37/ib* /data/mysql_data/

    cd /data
    chown -R mysql:mysql mysql_data/


    2.innobackupex-1.5.1 与 xtrabackup 相结合
    =======================================================================================
    首先,innobackupex-1.5.1全备份:
    innobackupex-1.5.1 --user=root /data/back_data/ 2>/data/back_data/1.log         #会生成一个时间文件夹,这里假如是2010-10-29_15-57-44
    然后,xtrabackup 做增量备份:
    xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/back_data_inc/4 --incremental-basedir=/data/back_data/2010-10-29_15-57-44


    恢复:
    首先停掉数据库,备份二进制日志(如果有的话),然后删除数据库目录下的所有数据库文件.
    cd /data/mysql_data
    rm -rf *           # 删除数据目录里的所有文件

    恢复全量备份:
    innobackupex-1.5.1 --user=root --apply-log /data/back_data/2010-10-29_15-57-44   # 应用日志
    innobackupex-1.5.1 --user=root --copy-back /data/back_data/2010-10-29_15-57-44   # 拷贝文件
    恢复增量备份:
    xtrabackup --prepare --target-dir=/data/back_data/2010-10-29_15-57-44 --incremental-dir=/data/back_data_inc/5

    cd /data
    chown -R mysql:mysql mysql_data/

    重启mysql服务。

  • 相关阅读:
    getopt for windows
    开源代码学习之Tinyhttpd
    GCC 中的编译器堆栈保护技术
    读《程序员的思维修炼》有感
    main之前初始化流程
    平均速度
    显示图案
    圆的面积和周长
    C#(Winform) Http 发送数据
    Android BaseAdapter的使用
  • 原文地址:https://www.cnblogs.com/ylqmf/p/2361936.html
Copyright © 2020-2023  润新知