xtrabackup备份还原MySQL数据库
mysqldump 备份鉴于其自身的某些特性(锁表,本质上备份出来insert脚本或者文本,不支持差异备份),不太适合对实时性要求比较高的情况
Xtrabackup可以解决mysqldump存在的上述的一些问题,生产环境应用的也会更多一些。
本文简单测试一下Xtrabackup对MySQL数据库的备份还原操作。
本着先把功能先撸起来再深入细节的原则,粗略地实现了一个备份还原,并未深入细节。
网上有不少xtrabackup的文章,因为环境不一样,有些需要配置xtrabackup的配置文件,
但是我在xtrabackup 2.4.7版本下测试就需要需求任何配置文件。可能是每个版本都的细节上都不一样,因此参考资料的时候要注意版本和环境。
innobackupex 备份
xtrabackup和MySQL的版本如下

完整备份
innobackupex --defaults-file=/etc/my.cnf --user=root --password=root --socket=/var/lib/mysql/mysql.sock /data/backup
说明:
1.--defaults-file=/etc/my.cnf文件必须在最前面
2.--user=root --password=root,--use=***与 --password=*** 中间一定要有空格,
如截图,完整备份完成

如截图,完整备份会创建一个日期(年月日时分秒,yyyy-MM-dd_hh-mm-ss)命名的文件
完整备份出来的内存,实际上是对所备份的数据库的数据文件的copy加上备份时候产生的一些信息,
比如xtrabackup_checkpoints就是当前完整备份的一些个信息,这个信息对差异备份非常重要。

差异备份
差异备份之所以能够做到差异,就是依赖于完整备份的,在完整备份的基础上进行完整备份之后的差异的备份。
而如何确定完整的备份之后备份到哪里,就依赖于完整备份之后的xtrabackup_checkpoints这个文件的。
innobackupex --defaults-file=/etc/my.cnf --user=root --password=root --socket=/var/lib/mysql/mysql.sock --incremental /data/backup --incremental-basedir=/data/backup/2017-06-22_13-40-29
如截图,差异备份完成

如果在进行差异备份的时候,指定的完整备份的文件错误或者是未指定完整备份文件,会发现xtrabackup提示找不到xtrabackup_checkpoints这个文件。

innobackupex 还原
准备阶段
一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。
因此,此时数据文件仍处理不一致状态。“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态。
innobakupex命令的--apply-log选项可用于实现上述功能(引用自网络)。
1,恢复完整备份,也即完整备份应用(--apply-log)日志
innobackupex --defaults-file=/etc/my.cnf --apply-log --redo-only --socket=/var/lib/mysql/mysql.sock /data/backup/2017-06-22_13-40-29
2,分别将增量备份应用到完整备份
innobackupex --defaults-file=/etc/my.cnf --apply-log --redo-only --socket=/var/lib/mysql/mysql.sock --incremental /data/backup/2017-06-22_13-40-29 --incremental-basedir=/data/backup/2017-06-22_13-41-48

如果有多个差异备份,分别应用差异备份到完整备份。
恢复阶段
1,完成差异备份的全部应用到完整备份之后,将恢复后的差异备份copy到原数据目录
默认情况下,如果数据路径下存在文件,则copy失败,需要清空数据文件路径下的文件。
innobackupex --copy-back /data/backup/2017-06-22_13-40-29
如截图,完成copy-back

2,启动MySQL服务
启动mysql服务,发现启动失败

看一下错误日志(启动错误信息),mysql5.7yum安装默认的errorlog位于/var/log/mysqld.log中,且默认不会滚动,意味着所有的错误信息都记录在这个文件中。

数据文件还原之后,需要读数据文件路径授予可读写的权限
这里直接授权数据文件路径777,chmod -R 777 /var/lib/mysql
然后启动mysql服务,可以正常启动。

xtrabackupex才刚刚开始,留下一大堆问题,有时间再一个一个验证。
1,怎么实现单个库(表)的备份与还原,毕竟实际环境中,因为每个库备份的频率和方式(备份方案)是不一样的?
2,怎么用全备+差异备份然后结合二进制日志做基于时间点的方式还原?
3,如何验证备份文件的有效性?
xtrabackup备份还原MySQL数据库的更多相关文章
- 备份还原mysql数据库
Windows下cmd命令行中备份还原mysql数据库 先cmd 上cd 到mysql的安装bin目录下,然后再运行下面的命令. 例如:cd C:\Program Files\MySQL\MySQL ...
- C#备份还原MySql数据库
原文:C#备份还原MySql数据库 项目结束,粘点代码出来让Google或Baidu一下,原因是现在还搜不到这么现成的 调用MySql的工具mysqldump来实现. 类Cmd来实现调用cmd命令, ...
- xtrabackup备份还原mariadb数据库
一.xtrabackup 简介 xtrabackup 是由percona公司开源免费的数据库热备软件,它能对InnoDB数据库和XtraDB存储引擎的数据库非阻塞地备份,对于myisam的备份同样需要 ...
- PHP 备份还原 MySql 数据库
原生 PHP 备份还原 MySql 数据库 支持 MySql,PDO 两种方式备份还原 php5.5 以上的版本建议开启pdo扩展,使用 pdo 备份还原数据 备份文件夹 db_backup.impo ...
- Navicat工具备份还原mysql数据库详细图解
Navicat是个很不错的MYSQL数据库管理工具,我们常用的还web形式的phpmyadmin和font这三种了,都是非常不错的mysql管理工具.因为Navicat工具兼容性比较好,操作也比较简单 ...
- 高速备份还原MYSQL数据库
#安装依赖包yum -y update gccyum -y install gcc+ gcc-c++ #安装cd /usr/local/softwaretar -jxvf p7zip_16.02_sr ...
- php程序备份还原mysql数据库
<?php $link = mysql_connect("localhost", "root",""); mysql_query(&q ...
- 备份/还原MySQL数据库----MySQL Workbench
点击[Data Export],界面右侧将显示数据导出窗口. 2 点击[Refresh]按钮,刷新数据库列表(1),选择要导出的数据表(2),设置导出的目录(3),点击[Start Export]按钮 ...
- 备份/还原mysql数据库
有木有遇到过这种情况?电脑或者服务器需要重装系统?可是你电脑上存着n多个网站的数据库,怎么办?把数据库文件夹拷贝出来,重装系统之后再拷回去?如果你使用了InnoDB引擎,恐怕那样做会出麻烦的,一个一个 ...
随机推荐
- git教程: 创建版本库
转载:创建版本库 什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻 ...
- matplotlib画sin(x)和cos(x)/2
import matplotlib.pyplot as mp 1. 基本的绘图 mp.plot(水平坐标, 垂直坐标, linestyle=线型, linewidth=线宽, color=颜色, .. ...
- MySql之左连接,右连接
左连接,右连接查询的表 中 on后面的条件不会影响主表的数据,只会影响右表的数据. 例: 没加条件的时候 左表加条件: 右表加条件: 通过上面3处对比可以看出来,用LEFT JOIN 的时候不管对左表 ...
- php环境和使用方法
下载好所需要的软件 (含phpmywind phpstudy navicat for my sql ) 如果Navicat 的试用期过期,请使用通杀navicat 的通杀Navica11_2-XX ...
- python3配置 opencv
python3配置 opencv 本文适用于windows 64位系统 下的Python3.5.python3.5.pip为必备前提. 配置过程: 第一步:打开cmd命令行窗口 第二步:输入pip指令 ...
- day05 集合
今日进度(数据类型) 集合 内存相关 深浅拷贝 1.集合表示 1.无序 2.不重复 3.hash查找 #问题:v={}表示? set: v1=set()#空集合 v1={1,2,3,4,5} dict ...
- POJ2376 Cleaning Shifts
题意 POJ2376 Cleaning Shifts 0x50「动态规划」例题 http://bailian.openjudge.cn/practice/2376 总时间限制: 1000ms 内存限制 ...
- (拼接SQL语句)mysql中date类型,datetime类型
: , . _ - / % & # @ ! * | [ ] { } ; + = update ky set date = '18,9-2' where id = 1 // 2 ...
- 第十一章 IO流
11.IO流 11.1 java.io.File类的使用 1课时 11.2 IO原理及流的分类 1课时 11.3 节点流(或文件流) 1课时 11.4 缓冲流 1课时 11.5 转换流 1课时 11. ...
- 论文阅读笔记:【Transforming Auto-encoders】
[Transforming Auto-encoders]: G E Hinton, A Krizhevsky, S D Wang. Transforming auto-encoders[C]. //I ...