xtrabackup的简单用法及其原理

xtrabackup
全备:
  innobackupex --defaults-file=$mysql_config --user=$user --password=$password --all-databases --no-lock --no-timestamp --stream=tar $backup_dir 2>$backup_dir/$log|gzip 1>$backup_dir/$str
恢复全备:
  innobackupex --apply-log --user-memory /backup/full
恢复备份到MySQL的数据文件目录,要先关闭MySQL数据库,恢复、赋权、启动

增量:(指定在谁的基础上进行增量)
  全备:innobackupex --defaults-file=/etc/my.cnf --user=root --password=root --no-timestamp /xtrabackpex/full
  第一次增量:进行第一次增量备份,需要在有一次完整备份的基础上进行
    --incremental /root/one 指定增量备份存放的目标目录
    --incremental-basedir=/tmp 指定完整备份的目录
      innobackupex --defaults-file=/etc/my.cnf --user=root --password=root --no-timestamp --incremental /xtrabackpex/full/incr_1 --incremental-basedir=/xtrabackpex/full
    第二次增量:进行第二次增量备份,需要指定上一次增量备份的目录
    --incremental /root/two 指定这次增量备份目录
    --incremental-basedir=/root/one 知道上次增量备份目录
      innobackupex --defaults-file=/etc/my.cnf --user=root --password=root --no-timestamp --incremental /xtrabackpex/full/incr_2 --incremental-basedir=/xtrabackpex/full/incr_1
增量备份恢复:
  还原一个增量备份,创建好的完整备份不能直接用来还原数据库,需要对数据做一些准备工作,其中包括一些已经提交的事务的重放,未提交事务的回滚。
    --apply-log 准备还原备份的选项
    --use-memory=4G 设置准备还原数据时使用的内存,可以提高准备所花费的时间

增量备份的恢复大体分为3个步骤:
  恢复基础备份(全备)
  恢复增量备份到基础备份(开始恢复的增量备份要添加--read-only参数,到最后一个增量备份去掉--read-only参数):
  对整体的基础备份进行恢复,回滚哪些未提交的数据
    恢复基础备份:(注意这里一定要加上--read-only参数,只应用xtrabackupx日志中已经提交的事务日志,不回滚还未提交的数据):

    innobackupx --apply-log --read-only --use-memory=4G /xtrabackpex/full

    将增量备份incr_1应用到基础备份
    innobackupx --apply-log --read-only --use-memory=4G /xtrabackpex/full --incremental-dir=/xtrabackpex/full/incr_1
    将增量备份incr_2应用到基础备份(恢复最后一个增量备份时需要去掉--read-only参数,回滚xtrabackup中那些还未提交的数据)
    innobackupex --apply-log --use-memory=4G /xtrabackpex/full/ --incremental-dir=/xtrabackpex/full/incr_2
    把所有合并一起的基础备份整体进行一次apply操作,回滚未提交的数据:
    innobackupex --apply-log --use-memory=4G /xtrabackpex/full
    把恢复玩的备份复制到数据文件目录中,赋权,然后启动MySQL数据库:
    service MySQL stop
    mkdir /mysql/3306/data_bak/
    mv /mysql/3306/data/* /mysql/3306/data_bak/
    mv /mysql/3306/logs/redo/* /mysql/3306/logs/redo_bak
    mv /mysql/3306/logs/undo/* /mysql/3306/logs/undo_bak
    innobackupex --defaults-file=/etc/my.cnf --copy-back /xtrabackpex/full
    chown -R mysql:mysql /mysql/3306
    service mysql start

还原数据,需要指定配置文件,默认会还原到/var/lib/mysql,并且保证,my.cnf中设置的数据目录下没有任何文件

时间: 2024-07-30 18:32:31

xtrabackup的简单用法及其原理的相关文章

mysqldump的简单用法及其原理

mysqldump 生产备份: 搭建主从: mysqldump -A -B -R --master-data=2 >backup.sql 备份单库(包含建库语句): mysqldump -B 数据库名 --single-transaction >db.sql 备份单库:(不包含建库语句):mysqldump db_name --single-transaction >db_date.sql 备份表的数据及结构:mysqldump -u username -ppassword databa

shell expect的简单用法【转】

用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写却不知其然.本文用一个最短的例子说明脚本的原理. 脚本代码如下:  ##############################################  #!/usr/bin/expect  set timeout 30  spawn ssh -l username 192.168.1.1  expect "password:"  send "ispa

IOS 中block结构的简单用法

自从block出现之后,很多API都开始采用这样的结构,由此可见,block确实有许多优势存在,这里将一些简单用法总结如下: 一.如何声明一个block变量 我们通过^符号来声明block类型,形式如下: void (^myBlock)(); 其中第一个void是返回值,可以是任意类型,中间括号中^后面的是这个block变量的名字,我把它命名为myBlock,最后一个括号中是参数,如果多参数,可以写成如下样式: int (^myBlock)(int,int); 同样,你也可以给参数起名字: in

iOS block-base 动画简单用法+关键帧动画设置线性变化速度的问题

本文转载至 http://www.tuicool.com/articles/aANBF3m 时间 2014-12-07 20:13:37  segmentfault-博客原文  http://segmentfault.com/blog/alan/1190000002411296 iOS的各种动画相漂亮,相信这是吸引很多人买iPhone的原因之一.不仅如此,这还是吸引我做iOS开发的一大原因,因为在iOS上给界面实现一些像样的动画实在是太轻松了! 这里就介绍一下iOS的block-based an

Android WIFI 简单用法

随着Wifi的普及,在开发App的时候对wifi的考虑越来越多了.例如程序的升级在wifi下可以省很多流量,在通信软件中的视频通话.可以实现高画质的传输等等,Android提供了WifiManager类来帮助开发者们管理Wifi.下面就简单来说一下WifiManager的简单用法把. 权限: 为了使用WfiManager 我们需要在Androidmanifest.xml 加入权限: //本例中使用了前两个.具体请按照需要添加权限. <uses-permission android:name=&quo

Android中资源文件中的字符串数组string-array简单用法

在Android中,用string-array是一种简单的提取XML资源文件数据的方法. 例子如下: 把相应的数据放到values文件夹的strings.xml文件里,或是其他自定义的xml中都可以,以下操作方法相同. <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="sports"> <item>足球<

expect简单用法

1 #!/usr/expect/bin/expect -f 2 3 4 set loginuser [lrange $argv 0 0] 5 set loginpass [lrange $argv 1 1] 6 set ipaddr [lrange $argv 2 2] 7 set port [lrange $argv 3 3] 8 set timeout [lrange $argv 4 4] 9 set from [lrange $argv 5 5] 10 set to [lrange $ar

Tcpdump 的简单用法

Tcpdump 的简单用法 tcpdump是Linux命令行下使用最广泛的网络分析工具,运行的时候会将网卡运行在混杂模式下,需要root权限才能执行 下面是几个比较常见的参数: -w  保持到指定的文件 -i  指定监听的网卡,缺省显示第一块网卡 -nn 以IP方式显示host -v  显示详细信息 -s  指定数据包大小,缺省是65535 -t  不显示时间 ,缺省是显示时间戳 -c  获取数据包数量,缺省不限制,需要用Ctrl+c来终止 下面是关于命令关键字的说明 1.主要包括host,ne

C++ double转string类型以及MFC控件简单用法

这两天项目需要,测试c++库里面内容.生成jar再给Android调用.我没有学过C++,现在开始记录C++简单用法.测试时候一般都是使用mfc程序来测试,要输入值,显示结果吗.我用的编译环境vs2008. 一.double 转string #include <string> CString strResultx; strResultx.Format(_T("x:%.4f\n"), 89.7887878); 转换结果还是放在strResultx 2.两个字符串相连 CStr