Xtrabackup之innobackupex备份恢复详解(转)
add by zhj:对于Xtrabackup2.2来说,已经解决了本文结尾提到的那个bug,当使用--copy-back时,同时加--force-non-empty-directories
即可。这样就不用手动去拷贝了。
原文:http://ourlinux.blog.51cto.com/274624/844854
安装配置Xtrabackup
先看看如何安装Xtrabackup,最简单的安装方式是使用RPM包,不过想使用源代码方式安装的话,其安装方式有点古怪,因为它采用的在MySQL
源代码上打补丁构建的方式安装的。这里使用二进制包的安装方式,相对比较灵活。
mkdir /usr/local/xtrabackup
tar -zxvf xtrabackup-1.6.tar.gz –C /usr/local/xtrabackup
cd /usr/local/xtrabackup/bin
ln –s innobackupex-1.5. innobackupex
置环境变量:
export PATH=$PATH:/usr/local/xtrabackup/bin
希望永久生效的话,可以加到
echo "export PATH=$PATH:/usr/local/xtrabackup/bin" >> /etc/profile
source /etc/profile
修改mysql配置文件:
添加或修改:datadir =/usr/local/mysql/var(数据库目录)
特别注意:default_table_type = InnoDB(必须改,否则进行增量备份的时候不成功)
经过几天的测试,文档终于可以与大家分享了。使用Xtrabackup能够非常快速地备份与恢复mysql数据库,是mysql dba的首选。Xtrabackup
是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。
Xtrabackup有两个主要的工具:xtrabackup、innobackupex xtrabackup只能备份InnoDB和XtraDB两种数据表,支持在线热备份,不会锁表
innobackupex则封装了xtrabackup,同时可以备份MyISAM数据表,如果你的数据库里有innodb和myisam存储引擎,只能使用innobackupex
备份,以下是线上用的简单脚本
#!/bin/bash
USER=root
PASSWORD=123456
date > /data/scripts/backup.log
echo "begin backup-------------------------------" >> /data/scripts/backup.log
find /data/mysql/backups -mtime +7 |xargs rm -rf
/usr/bin/innobackupex --defaults-file=/opt/mysql5/my.cnf --user=$USER --password=$PASSWORD --databases="test1 test2" /data/mysql/backups >> /data/scripts/backup.log 2>&1
echo "end backup-------------------------------" >> /data/scripts/backup.log
date >> /data/scripts/backup.log mail -s "backup Passport report" "localhost@localhost" < /data/scripts/backup.log
exit 0
以下是恢复脚本:
#!/bin/bash
USER=root
PASSWORD=
/etc/init.d/mysql stop
/usr/bin/innobackupex-1.5. --apply-log --defaults-file=/opt/mysql5/my.cnf --user=$USER --password=$PASSWORD /data/mysql/backups/passportdb/`date +%Y-%m-%d`
rm -rf /opt/mysql5/var/test1
rm -rf /opt/mysql5/var/test2
rm -f /opt/mysql5/var/ibdata1
rm -f /opt/mysql5/var/ib_logfile0
rm -f /opt/mysql5/var/ib_logfile1
cd /data/mysql/backups
tar zcvf `date +%Y-%m-%d`.tgz `date +%Y-%m-%d`
rm -rf `date -d -30day +%Y-%m-%d`.tgz
cp -r /data/mysql/backups/`date +%Y-%m-%d`/ib* /opt/mysql5/var/
cp -r /data/mysql/backups/`date +%Y-%m-%d`/test1 /opt/mysql5/var/
cp -r /data/mysql/backups/`date +%Y-%m-%d`/test2 /opt/mysql5/var/
rm -rf /data/mysql/backups/`date +%Y-%m-%d`/*
chown -R mysql.mysql /opt/mysql5/var/test1
chown -R mysql.mysql /opt/mysql5/var/test2
chown mysql.mysql /opt/mysql5/var/ib*
/etc/init.d/mysql start
恢复的时候执行完/usr/bin/innobackupex-1.5.1 --apply-log后,直接拷贝就可以了,不用使用/usr/bin/innobackupex-1.5.1 --copy-back
命令。如果使用/usr/bin/innobackupex-1.5.1 --copy-back命令后,会报Original data directory is not empty! at
/usr/local/xtrabackup/bin/innobackupex line 538.恢复的目录必须为空。经查官网,这是xtrabackup的一个BUG。
innobackupex did not check that MySQL datadir was empty before –copy-back was run. With this bug fix,innobackupex will
now error out of the –copy-back operation if the destination is not empty, avoiding potential data loss or a strang combination
of a restored backup and previous data. Bug Fixed: #737569(Valentine Gostev)
网上有好多文章恢复使用
/usr/bin/innobackupex-1.5.1 --apply-log 然后
/usr/bin/innobackupex-1.5.1 --copy-back,难道他们恢复的目录都是空目录,还是人云亦云。
Xtrabackup之innobackupex备份恢复详解(转)的更多相关文章
- mysql备份恢复详解
前言 为什么需要备份数据? 数据的备份类型 MySQL备份数据的方式 备份需要考虑的问题 设计合适的备份策略 实战演练 使用cp进行备份 使用mysqldump+复制BINARY LOG备份 使用lv ...
- mysql之 mysqldump 备份恢复详解
mysqldump是MySQL用于转存储数据库的客户端程序.转储包含创建表和/或装载表的SQL语句 ,用来实现轻量级的快速迁移或恢复数据库,是mysql数据库实现逻辑备份的一种方式. mysqldum ...
- (转)MySQL备份原理详解
MySQL备份原理详解 原文:http://www.cnblogs.com/cchust/p/5452557.html 备份是数据安全的最后一道防线,对于任何数据丢失的场景,备份虽然不一定能恢复百分之 ...
- mysql navcat备份使用详解
mysql navcat备份使用详解 点击备份 然后新建备份 然后选择要备份的表 就可以了 以后这个表删除了 内容变更了 都可以点击 还原备份就可以了
- MySQL备份原理详解
备份是数据安全的最后一道防线,对于任何数据丢失的场景,备份虽然不一定能恢复百分之百的数据(取决于备份周期),但至少能将损失降到最低.衡量备份恢复有两个重要的指标:恢复点目标(RPO)和恢复时间目标(R ...
- 记一次innobackupex备份恢复数据库过程
简介:以前备份都是通过mysqldump备份数据库的,由于是逻辑备份,所以采用这种备份方式数据是很安全的,跨平台.版本都很容易.凡事有利必有弊,逻辑备份在你数据库比较大时,备份.恢复数据所耗费的时间也 ...
- mysql 开发进阶篇系列 47 物理备份与恢复(xtrabackup 的完全备份恢复,恢复后重启失败总结)
一. 完全备份恢复说明 xtrabackup二进制文件有一个xtrabackup --copy-back选项,它将备份复制到服务器的datadir目录下.下面是通过 --target-dir 指定完全 ...
- MySQL二进制日志备份和恢复详解
原文链接:http://www.showerlee.com/archives/681 ****经实践,该教程ok,特在此分享**** 基本概念 定义: 二进制日志包含了所有更新了数据或者已经潜在更新了 ...
- xtrabackup之Innobackupex全备恢复
一.当前环境 [mysql@hadoop1 ~]$ mysql --defaults-/my.cnf -uroot -p123456 -P3306 mysql> show variables l ...
随机推荐
- hibernate工具类HibernateUtil详解
1.为什么要用hibernateUtil这个类,先看这段代码: //加载配置文件信息默认为hiberna.cfg.xml,如果不是的话那么就在config()方法里面去解析他 Con ...
- 51nod 最长递增子序列
nlogn版最长递增子序列.线段树.(其实常数蛮大的....) #include<iostream> #include<cstring> #include<algorit ...
- Java 动态写轮眼 SharinganJPanel (整理)
/** * Java 动态写轮眼 SharingganJPanel (整理) * * 2016-1-2 深圳 南山平山村 曾剑锋 * 设计声明: * 1.虽然岸本是日本人,而我个人作为其模仿者,依 ...
- *ecsho 的商品详细页面上获取该商品的一级分类ID及NAME
1.打开goods.php并找到 $smarty->assign('goods', $goods); 在它上面增加以下代码 $cat_arr = get_parent_cats($goods[' ...
- Python定时调度--多任务同一时间开始跑 scheduler.enterabs
Event Priorities If more than one event is scheduled for the same time their priority values are use ...
- 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:4.安装Oracle RAC FAQ-4.1.系统界面报错Gnome
1.错误信息:登录系统后,屏幕弹出几个错误对话框,无菜单.无按钮 GConf error: Failed to contact configuration server; some possible ...
- php 5.3开始使用mysqlnd作为的默认mysql访问驱动
mysqlnd成为php 5.3中的默认mysql驱动,它有如下优点: mysqlnd更容易编译: 因为它是php源码树的一个组成部分 mysqlnd和php内部机制结合更紧密,是优化过的mysql驱 ...
- 改进duilib的richedit控件的部分功能
转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/41208207 如果要使用透明异形窗体功能,首先要改进duilib库让他本 ...
- 将垃圾送入无底洞,顺便整理dev知识
相信用过Linux的童鞋们都用过crontab来做定时任务,不需要额外的安装程序和配置,一条简单的语句搞定定时任务,但是小伙伴们发现了没,如果你的定时任务执行频率很高而且会产生大量的输出的话,你的老爷 ...
- word添加页码
问:在Word里面,分两栏插入页码,怎么使两栏都有页码? 可以通过插入域来实现分两栏后两栏都有页码.左边一栏页码为 当前页页码×2-1 :右边一栏页码为 当前页页码×2.在页眉页脚视图中,分别在左右两 ...