PerconaXtraBackup --全备增备prepare restore
Xtrabackup
Xtrabackup包含两个主要的工具,即xtrabackup和innobackupex,二者区别如下:
• xtrabackup只能备份innodb和xtradb引擎表,而不能备份MyISAM表
• innobackupex是一个封装了xtrabackup的Perl脚本,支持同时备份innodb和MyISAM,但在对MyISAM备份时需要加一个全局的读锁
创建用户赋予权限
CREATE USER 'backup'@'localhost' IDENTIFIED BY 'backup';
GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT,PROCESS ON *.* TO 'backup'@'localhost';
innobackupex调用xtrabackup备份xtradb和innodb,调用perl脚本备份MyISAM表
创建完整备份示例
innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --user=backup --password='backup'/data/mysqldata/backup/
如果使用–defaults-file选项,则必须在第一位
备份完成后会在目录下创建一个以时间命名的目录
[mysql@master backup]$ pwd
/data/mysqldata/backup
[mysql@master backup]$ ls
2016-08-18_18-23-33
–no-timestamp 该选项告诉innobackupex不创建一个时间戳目录存储备份
innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --user=backup --password='backup'--no-timestamp /data/mysqldata/backup/base
上例中备份会存放在base目录下,如果目录不存在会自动创建
创建备份后并不能直接用于恢复.需要先prepare.
prepare的目的是跑一下redo,将未提交的rollback,回滚的回滚,跑出一个一致性的备份
innobackupex --apply-log /data/mysqldata/backup/base/
查看输出的最后一行 completed OK!表示prepare成功
prepare前
backup-my.cnf ibdata1 performance_schema test xtrabackup_checkpoints xtrabackup_logfile
fandb mysql sakila xtrabackup_binlog_info xtrabackup_info
prepare后
backup-my.cnf ib_logfile0 ibtmp1 sakila xtrabackup_binlog_pos_innodb xtrabackup_logfile
fandb ib_logfile1 mysql test xtrabackup_checkpoints
ibdata1 ib_logfile2 performance_schema xtrabackup_binlog_info xtrabackup_info
ib_logfile0,1,2由prepare生成
–use-memory 使用此参数可以提升prepare速度,默认100M
innobackupex --apply-log --use-memory=4G/data/mysqldata/backup/base/
restore全备
为了方便,innobackupex有一个–copy-back选项,可以将备份拷贝回datadir下
innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --copy-back /data/mysqldata/backup/base
datadir必须是空的,除非使用了–force-non-empty-directories 参数.MySQL在copy-back时应该是关闭的
如果创建备份时使用的是其他OS用户,那么在copy-back后你应该修改权限
chown -R mysql:mysql
增量备份(增量只针对xtradb和innodb引擎,其他引擎表仍是全备)
增量备份之前必须有一个全备份.
innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --user=backup --password='backup'--no-timestamp /data/mysqldata/backup/base
备份成功后,会生成一个文件xtrabackup_checkpoints
[mysql@master backup]$ more base/xtrabackup_checkpoints
backup_type = full-backuped
from_lsn =0
to_lsn =143682470
last_lsn =143682470
compact =0
recover_binlog_info =0
使用上面的全备做为基础,做增量备份
innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --user=backup --password='backup'--no-timestamp --incremental /data/mysqldata/backup/incr1 --incremental-basedir=/data/mysqldata/backup/base
备份成功后,查看增备的xtrabackup_checkpoints
[mysql@master backup]$ more incr1/xtrabackup_checkpoints
backup_type = incremental
from_lsn =143682470
to_lsn =143683016
last_lsn =143683016
compact =0
recover_binlog_info =0
再次创建一个增量备份,将以刚才的增备作为基础
innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --user=backup --password='backup'--no-timestamp --incremental /data/mysqldata/backup/incr2 --incremental-basedir=/data/mysqldata/backup/incr1
[mysql@master backup]$ more incr2/xtrabackup_checkpoints
backup_type = incremental
from_lsn =143683016
to_lsn =143683562
last_lsn =143683562
compact =0
recover_binlog_info =0
增倍时应该是要读取base的xtrabackup_checkpoints文件,从该文件的last_lsn开始备份.
于是我手动创建一个目录incr3,并创建一个文件xtrabackup_checkpoints,以此作为base也是可以备份的.
将该xtrabackup_checkpoints文件的last_lsn改为0也可以,但仍不是全备
手动指定lsn,也可以成功创建增量备份.这种方法适用于当base不可用时
innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --user=backup --password='backup'--incremental /data/mysqldata/backup/incr1 --incremental-lsn=143680036
–incremental-lsn=name
This option specifies the log sequence number (LSN) to
use for the incremental backup. The option accepts a
string argument. It is used with the –incremental
option. It is used instead of specifying
–incremental-basedir. For databases created by MySQL and
Percona Server 5.0-series versions, specify the LSN as
two 32-bit integers in high:low format. For databases
created in 5.1 and later, specify the LSN as a single
64-bit integer.
prepare增备
prepare增量备份与prepare全备稍有不同
• First, only the committed transactions must be replayed on each backup. This will merge the base full backup with the incremental ones.
• Then, the uncommitted transaction must be rolled back in order to have a ready-to-use backup.
1.首先,在所有备份重演提交的事务,这会合并增量备份和全备
2.所有未提交事务回滚
恢复基础备份(全备)这里一定要加–redo-only参数,该参数意思是只应用xtrabackup日志中已经提交的事务数据,不回滚还未提交的数据
innobackupex --apply-log --redo-only /data/mysqldata/backup/base/
将增量备份incr应用到基础备份base
innobackupex --apply-log --redo-only /data/mysqldata/backup/base/--incremental-dir=/data/mysqldata/backup/incr1
将增量备份incr2应用到基础备份base,注意恢复最后一个增量备份时需要去掉–redo-only参数,回滚xtrabackup日志中那些还未提交的数据
innobackupex --apply-log /data/mysqldata/backup/base/--incremental-dir=/data/mysqldata/backup/incr2
Note: –redo-only should be used when merging all incrementals except the last one. That’s why the previous
line doesn’t contain the –redo-only option. Even if the –redo-only was used on the last step, backup would still be consistent but in that case server would perform the rollback phase.
–redo-only只在最后一个增备时不使用.如果在最后一个增倍时使用了–redo-only,备份仍是一致的,但在这种情况下,服务器将执行回滚阶段
要注意的是,prepare应该按照备份的时间顺序,即 全备-增备1-增备2-增备3…
如果顺序错误,备份将不可用.如果你不知道正确的熟顺序,可以查看xtrabackup_checkpoints文件
把所有合在一起的基础备份整体进行一次apply操作,回滚未提交的数据
innobackupex --apply-log /data/mysqldata/backup/base/
这一步是可选的,如果你不做,MySQL会去回滚未提交的数据.同时,因为iblog文件不会被备份,这一步也会创建它们,如果不做这一步,MySQL启动时也会创建它们.
copy-back
innobackupex --defaults-file=/data/mysqldata/3306/my.cnf --copy-back --rsync /data/mysqldata/backup/base
–rsync Uses the rsync utility to optimize local file transfers.
When this option is specified, innobackupex uses rsync to
copy all non-InnoDB files instead of spawning a separate
cp for each file, which can be much faster for servers
with a large number of databases or tables. This option
cannot be used together with –stream.
PerconaXtraBackup --全备增备prepare restore的更多相关文章
- Mongodb全备+增备+oplog恢复误删数据
此时测试表中有7条数据,做个全备. 全备: mongodump --host=192.168.43.43 --port=37017 --oplog --out=/opt/mongo/fullbacku ...
- innobackupex 单脚本循环7天一全备6增备脚本更新
#!/bin/bash #日期转为天数 function date2days { echo "$*" | awk '{ z=-$)/); y=$+-z; m=$+*z-; j=*m ...
- Innobackupex MySQL 全备、增备及恢复
简介: 在这之前都是通过 mysqldump 来备份数据库的,由于是逻辑备份,所以采用这种备份方式数据是很安全的,跨平台.版本都很容易. 凡事有利必有弊,逻辑备份在你数据库比较大时,备份.恢复数据所耗 ...
- innobackupex 全备、增备脚本
全备脚本:innobackupex --defaults-file=/etc/my.cnf --user root --password mypasswd /mydata/fullbak/ 增备脚本: ...
- oracle 备份恢复篇(二)---rman 增备恢复--不完全恢复
一,环境准备 全备脚本: export TMP=/tmp export TMPDIR=$TMP export ORACLE_BASE=/u01 export ORACLE_SID=prod expor ...
- 为MySQL选择合适的备份方式
数据库的备份是极其重要的事情.如果没有备份,遇到下列情况就会抓狂: UPDATE or DELETE whitout where… table was DROPPed accidentally… IN ...
- mysql 备份与还原
http://dev.yesky.com/281/35291281.shtml 每一种逻辑错误发生的概率都极低,但是当多种可能性叠加的时候,小概率事件就 放大成很大的安全隐患,这时候备份的必要性就凸显 ...
- 为MySQL选择合适的备份方式[转]
原文链接:http://nettedfish.sinaapp.com/blog/2013/05/31/choose-suitable-backup-strategy-for-mysql/ 数据库的备份 ...
- 青铜到王者,快速提升你 MySQL 数据库的段位!
Reference: https://mp.weixin.qq.com/s?src=11×tamp=1513259125&ver=574&signature=Uxls ...
随机推荐
- smarty 内存缓存
<?php //缓存 //定义一个该页面的缓存文件路径 $filename="../cache/mainhc.html"; //设置一个缓存时间 $time=; //判断缓存 ...
- LoadRunner参数更新方法和数据分配
参数化的定义:使用指定的数据源中的值来替换脚本录制生成的语句中的参数. 对Vuser脚本进行参数化的好处: 1.减小脚本的大小 2.提供了使用不同的脚本的值执行脚本的能力 参数化涉及两个任务: 1.用 ...
- 配置Eclipse编写HTML/JS/CSS/JSP页面的自动提示。
我们平时用eclipse开发jsp页面时智能提示效果不太理想,今天用了两个小时发现了eclipse也可以像Visual Studio 2008那样完全智能提示HTML/JS/CSS代码,使用eclip ...
- 判断当前VC是不是正在展示的活跃页面
viewController.isViewLoaded && viewController.view.window
- SegmentControl的多选项实现(标题栏)
NSArray *titleArr = @[STR(@"全部"), STR(@"未使用"), STR(@"已赠送"), STR(@" ...
- phpstorm设置
phpstorm版本为10.0.3,设置自动换行如下: 快捷方式: 打开新的文件:ctrl+shift+N 格式化:ctrl+alt+L 全局搜索:ctrl+shift+F 更换默认快捷键如下,其实右 ...
- IIS 7 的 500 內部錯誤
印象中這個有名的錯誤提示從 ASP 時代就已經存在 不是很明白微軟怎麼想的 你們所面對的客戶族群有為數不少的開發人員 除錯環境對開發者來說算是基本配備 為何不把這些相關設定做成「出廠預設值」? 都幾年 ...
- ASP.NET中的Session怎么正确使用
Session对象用于存储从一个用户开始访问某个特定的aspx的页面起,到用户离开为止,特定的用户会话所需要的信息.用户在应用程序的页面切换时,Session对象的变量不会被清除. 对于一个Web应用 ...
- U盘启动盘 安装双系统 详细教程
U盘启动盘 安装win7+linux双系统 最近在看鸟哥的linux 私房菜 ,看到多重系统那部分,自然的安装多重系统的激情由此而燃.在网上看了很多资料,感觉都不全.经过艰辛的摸索,终于被我发现了一个 ...
- (待续)C#语言中的动态数组(ArrayList)模拟常用页面置换算法(FIFO、LRU、Optimal)
目录 00 简介 01 算法概述 02 公用方法与变量解释 03 先进先出置换算法(FIFO) 04 最近最久未使用(LRU)算法 05 最佳置换算法(OPT) 00 简介 页面置换算法主要是记录内存 ...