InnoDB 和非 InnoDB 文件的备份都是通过拷贝文件来做的,但是实现的方式不同,前者是以page为粒度做的(xtrabackup),后者是 cp 或者 tar 命令(innobackupex),xtrabackup 在读取每个page时会校验 checksum 值,保证数据块是一致的,而 innobackupex 在 cp MyISAM 文件时已经做了flush(FLUSH TABLES WITH READ LOCK),磁盘上的文件也是完整的,所以最终备份集里的数据文件都是写入完整的。

当重新修改了MySQL的数据目录时:

重启报错:

Starting MySQL.The server quit without updating PID file (/[FAILED]l/mysql/data/ben.com.pid).

执行下列命令可以恢复:

1,chown -R mysql:mysql /usr/local/mysql/data
2,kill掉其他没有关闭的MySQL进程

  innobackupex 如果没有--host=127.0.0.1 参数,就会报错

 备份:

-- 备份全库
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123 --host=127.0.0.1 --parallel=4 /home/backup/ -- 增量全库
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123 --parallel=4 --host=127.0.0.1
--incremental-basedir=/home/backup/2017-03-07_14-27-24 --incremental /home/backup/ --流备份(tar压缩备份文件)
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123 --host=127.0.0.1 --parallel=4 --stream=tar /home/backup/ | gzip /home/backup/`date +%F_%H-%M-%S`.tar.gz --解压到指定目录 -C是大写 dd是目录,要保证有这个目录,不然会报错
tar -xvzf 2017-03-08_16-32-43.tar.gz -C /home/backup/dd
-- 建立软链接
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
--流压缩xbstream备份 (全部)
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123 --host=127.0.0.1 --parallel=4 --stream=xbstream --compress --extra-lsndir=/home/backup >/home/backup/bak_compress.xbstream --流压缩xbstream备份(增量)
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123 --host=127.0.0.1 --parallel=4 ---compress --incremental --extra-lsndir=/home/backup --incremental-basedir=/home/backup \>
--stream=xbstream >/home/backup/bak_compress_inc.xbstream

  

可以加快恢复的速度。

xtrabackup把备份过程中可能有尚未提交的事务或已经提交但未同步数据文件的事务,写到xtrabackup_logfile文件,所以要先通过这个日志文件回滚,把未完成的事务同步到备份文件,保证数据文件处于一致性。

[root@localhost 2017-07-29_12-34-51]# pwd
/opt/xtrabackup/2017-07-29_12-34-51
[root@localhost 2017-07-29_12-34-51]#innobackupex --defaults-file=/etc/my.cnf --apply-log --redo-only /opt/xtrabackup_full/2017-07-29_12-34-51   --use-memory=4G --user=root --password=123456
如果执行正确,其最后输出的几行信息通常如下:

xtrabackup: starting shutdown with innodb_fast_shutdown = 1

xtrabackup: This target seems to be not prepared yet.

InnoDB: FTS optimize thread exiting.
InnoDB: Starting shutdown...
InnoDB: Shutdown completed; log sequence number 20125736
170729 13:30:29 completed OK!

成功后,备份可以被用来还原数据库了

看到redo log已经出现。xtrabackup_开头的几个文件记录了一些日志偏移量的信息和日志名和时间等信息。在xtrabackup_checkpoints中记录了备份的模式:

backup_type = full-backuped。

xtrabackup_binlog_info:记录当前最新的LOG Position
xtrabackup_binlog_pos_innodb:innodb log postion
xtrabackup_checkpoints: 存放备份的起始位置beginlsn和结束位置endlsn,增量备份需要这个lsn[增量备份可以在这里面看from和to两个值的变化
xtrabackup_info:备份的一些具体信息日志

 还原:

 使用选项--apply-log:该选项将应用事务日志到数据文件,要回滚的事务回滚,提交的提交,进行数据的同步,还没开始恢复数据,是恢复前的准备工作

--全备份目录
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123 --host=127.0.0.1 --apply-log --redo-only
/home/backup/2017-03-07_14-27-24 --全备份目录
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123 --host=127.0.0.1 --apply-log --redo-only
/home/backup/2017-03-07_14-27-24 --incremental-dir=/home/backup/2017-03-07_14-35-56

增量备份的prepare有点复杂,如果对base backup执行事务一致性恢复,则其不能再用于增量备份恢复,为此须指定redo-only选项;


innobackupex --apply-log --redo-only BASE-DIR


innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1


innobackupex --apply-log BASE-DIR --incremental-dir=INCREMENTAL-DIR-2


当合并完所有的增量备份后,开始回滚所有未提交的事务


innobackupex --apply-log BASE-DIR

 

innobackupex 重启MySQL的更多相关文章

  1. Mysql备份系列(3)--innobackupex备份mysql大数据(全量+增量)操作记录

    在日常的linux运维工作中,大数据量备份与还原,始终是个难点.关于mysql的备份和恢复,比较传统的是用mysqldump工具,今天这里推荐另一个备份工具innobackupex.innobacku ...

  2. Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复

    Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具. Xtrabackup中主要包含两个工 ...

  3. 数据库执行sql报错Got a packet bigger than 'max_allowed_packet' bytes及重启mysql

    准备在mysql上使用数据库A,但mysql5经过重装后,上面的数据库已丢失,只得通过之前备份的A.sql重新生成数据库A. 1.执行sql报错 在执行A.sql的过程中,出现如下错误:Got a p ...

  4. windows下重启mysql

    其中第二种方法对我这无效,以后再搞清楚! 一.MYSQL服务 我的电脑——(右键)管理——服务与应用程序——服务——MYSQL——开启(停止.重启动) 二.命令行方式 Windows 1.点击“开始” ...

  5. 如何启动/停止/重启MySQL

    启动.停止.重启 MySQL 是每个拥有独立主机的站长必须要撑握的操作,下面为大家简单介绍一下操作方法: 一.启动方式 1.使用 service 启动:service mysqld start 2.使 ...

  6. LINUX重启MYSQL的命令

    LINUX重启MYSQL的命令 标签: mysqllinuxservice脚本web服务server 2010-06-25 10:21 62152人阅读 评论(0) 收藏 举报  分类: Linux( ...

  7. linux下如何启动/停止/重启mysql:

    一.启动方式1.使用linux命令service 启动:service mysqld start2.使用 mysqld 脚本启动:/etc/inint.d/mysqld start3.使用 safe_ ...

  8. 不重启mysql情况修改参数变量

    地球人都知道,更新mysql配置my.cnf需要重启mysql才能生效,但是有些时候mysql在线上,不一定允许你重启,这时候应该怎么办呢? 看一个例子: 1 2 3 4 5 6 7 8 9 10 m ...

  9. linux正确重启MySQL的方法

    修改了my.cnf,需要重启MySQL服务,正确重启MYSQL方法请看下面的文章 由于是从源码包安装的Mysql,所以系统中是没有红帽常用的servcie mysqld restart这个脚本 只好手 ...

随机推荐

  1. 使用php添加定时任务

    1.  php执行外部命令的函数:       system(),exec(),passthru()      注意点:     1.调用的路径,相对路径有时候不是很靠谱.           sys ...

  2. Js 设置class,兼容ie,火狐的方式

    var trs = document.getElementsByTagName("tr"); trs[0].className="color2";  //设置c ...

  3. 使用eclipse搭建hadoop开发环境

    下载一个 hadoop-eclipse-plugin-*.jar的eclipse插件,并放在plugins目录下 重启eclipse   打开视象,找“大象” 连接HDFS   success 编程准 ...

  4. myEclipse

    破解myEclipse 建立一个java项目,将reg.java放入,并且运行在控制台 输入账户 回车就会出现 序列号 菜单栏--->myeclipse-->substription in ...

  5. Linux 组群账户管理

    一.Linux组群账户配置文件 1./etc/group文件 /etc/group文件是用户组群的配置文件,内容包括用户和用户组群,并且能显示出用户是归属哪个用户组群或哪几个用户组群.一个用户可以归属 ...

  6. 树莓派B+上手小记--使用HDMI线连接显示器

    入手还算比较顺利,一开始使用网上下的别人精简的OS,发现ACT及PWR灯一直亮着,上网查说用HDMI连接显示器需要修改配置文件config.txt,但修改后情况依旧. 如果还是用官方的系统试试吧,上网 ...

  7. 【EF学习笔记12】----------解释查询和本地查询 区分 Enumerable 和 Queryable

    简单介绍:Enumerable 和 Queryable 他们都是静态类,位于命名控件 System.Linq下,分别为IEnumerable<T>和IQueryable<T>提 ...

  8. 使用Autofac在MVC中实现IOC

    var builder = new ContainerBuilder(); //注册DispatchService类型到工厂中 builder.RegisterType<DispatchServ ...

  9. Office2007在安装、卸载过程中出错的解决办法

    Micorsoft office professional plus 2007在安装过程中出错,错误1706 如果在安装OFFICE 2007的 时候,遇到“Microsoft Office 2007 ...

  10. centos6.5环境源码编译安装mysql5.6.34

    centos6.5环境源码编译安装mysql5.6.34 源码下载地址http://dev.mysql.com/downloads/mysql/5.6.html#downloads 选择Generic ...