Xtrabackup备份与恢复MySQL
1、innobackupex备份原理
、innobackupex启动并fork一个进程启动xtrabackup,然后等待xtrabackup备份InnoDB文件;
、xtrabackup备份时存在两个线程,一个负责复制redo,一个负责复制ibd文件;
redo复制线程先启动,从最新checkpoint开始顺序复制redo
数据复制线程在redo线程后启动,负责复制ibd文件,innobackupex一直处于等待状态
、xtrabackup拷贝完成idb后,通知innobackupex,同时自己进入等待,redo线程仍然继续复制redo;
、innobackupex收到xtrabackup通知后,执行FLUSH TABLES WITH READ LOCK(FTWRL),取得一致性位点,然后开始备份非InnoDB文件;
包括 frm、MYD、MYI、CSV、opt、par等文件,此时数据库全局只读状态非InnoDB表比较多的话时间可能会比较长
、当innobackupex拷贝完所有非InnoDB表文件后,通知xtrabackup,同时自己进入等待;
、xtrabackup收到innobackupex备份完非InnoDB通知后,就停止redo拷贝线程,然后通知innobackupex日志复制完成;
、innobackupex收到redo备份完成通知后,就开始解锁,执行UNLOCK TABLES;
、innobackupex和xtrabackup进程各自完成收尾工作,如资源的释放、写备份元数据信息等,innobackupex等待xtrabackup子进程结束后退出。
2、常用参数说明
常用参数:
--user=USER #指定备份用户,不指定的话为当前系统用户
--password=PASSWD #指定备份用户密码
--port=PORT #指定数据库端口
--defaults-group=GROUP-NAME #在多实例的时候使用
--host=HOST #指定备份的主机,可以为远程数据库服务器
--apply-log #回滚日志
--database #指定需要备份的数据库,多个数据库之间以空格分开
--defaults-file #指定mysql的配置文件
--copy-back #将备份数据复制回原始位置
--incremental #增量备份,后面跟要增量备份的路径
--incremental-basedir=DIRECTORY #增量备份时使用指向上一次的增量备份所在的目录
--incremental-dir=DIRECTORY #增量备份还原的时候用来合并增量备份到全量,用来指定全备路径
--redo-only #对增量备份进行合并
--rsync #加快本地文件传输,适用于non-InnoDB数据库引擎。不与--stream共用
--safe-slave-backup #会暂停slave的sql线程,待备份结束后再启动
--no-timestamp #生成的备份文件不以时间戳为目录.
--slave-info #打印二进制日志的position和主库的名字,写入xtrabackup_slave_info文件
3、全量备份与恢复
##全量备份
innobackupex --defaults-file=/data01//my3306.cnf --user=root --password=root --socket=/data01//run/mysql.sock /data01//backup
##全量恢复
innobackupex --apply-log /data01//backup/--14_21--
##将恢复的数据文件复制到datadir
innobackupex --defaults-file=/data02//my3307.cnf --user=root --password=root --copy-back /data01//backup/--14_21--
4、增量备份与恢复
xtrabackup是支持增量备份的,但是只能对InnoDB做增量,InnoDB每个page有个LSN号,LSN是全局递增的,page被更改时会记录当前的LSN号,每次备份会记录当前备份到的LSN(xtrabackup_checkpoints文件中),增量备份就是只拷贝LSN大于上次备份的page,比上次备份小的跳过,每个ibd文件最终备份出来的是增量 delta 文件。
MyISAM 是没有增量的机制的,每次增量备份都是全部拷贝的。
增量备份过程和全量备份一样,只是在ibd文件拷贝上有不同。
##全量备份
innobackupex --defaults-file=/data01//my3306.cnf --user=root --password=root --socket=/data01//run/mysql.sock /data01//backup
##增量备份
innobackupex --defaults-file=/etc/my.cnf --user=root --password=root --socket=/tmp/mysql.sock --incremental /data01//backup/incr --incremental-basedir=/data01//backup/--14_21-- --parallel=
innobackupex --defaults-file=/etc/my.cnf --user=root --password=root --socket=/tmp/mysql.sock --incremental /data01//backup/incr --incremental-basedir=/data01//backup/incr/--14_22-- --parallel=
##增量恢复
--全量恢复
innobackupex --apply-log --redo-only /data01//backup/--14_21--
##将增量1应用到完全备份##
innobackupex --apply-log --redo-only /data01//backup/--14_21-- --incremental-dir=/data01//backup/incr/--14_22--
##将增量2应用到完全备份,注意不加 --redo-only 参数了##
innobackupex --apply-log /data01//backup/--14_21-- --incremental-dir=/data01//backup/incr/--14_23--
##把所有合在一起的完全备份整体进行一次apply操作,回滚未提交的数据##
innobackupex --apply-log /data01//backup/--14_21--
Xtrabackup备份与恢复MySQL的更多相关文章
- Xtrabackup 对MYSQL进行备份还原
在操作MYSQL中注意两个概念: 干什么都记得 flush privileges; grant all on *.* to root@'localhost' identified by 'passwo ...
- 利用xtrabackup备份mysql数据库
利用xtrabackup备份mysql数据库 一.安装1.直接下载二进制文件wget http://www.percona.com/downloads/XtraBackup/XtraBackup-2. ...
- 使用 xtrabackup 进行MySQL数据库物理备份
0. xtrabackup的功能 能实现的功能: 非阻塞备份innodb等事务引擎数据库. 备份myisam表会阻塞(需要锁). 支持全备.增量备份.压缩备份. 快速增量备份(xtradb,原理类似于 ...
- xtrabackup备份MySQL报错:InnoDB: Error number 24 means 'Too many open files'
xtrabackup备份MySQL报错:InnoDB: Error number 24 means 'Too many open files' 1.使用xtrabackup备份MySQL时出现如下报错 ...
- 使用第三方工具Xtrabackup进行MySQL备份
使用Xtrabackup进行MySQL备份: 一.安装 1.简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtr ...
- 使用Percona Xtrabackup创建MySQL slave库
一.使用Percona Xtrabackup创建MySQL slave库 MySQL Server 版本: Server version: 5.7.10-log MySQL Community Ser ...
- Xtrabackup实现MySQL备份
一.xtrabackup介绍 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写)它由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上 ...
- 利用XtraBackup给MYSQL热备(基于数据文件)
利用XtraBackup给MYSQL热备(基于数据文件) By JRoBot on 2013 年 11 月 26 日 | Leave a response 利用XtraBackup给MYSQL热备(基 ...
- Percona Xtrabackup备份mysql大数据库(完整备份与增量备份)
Percona Xtrabackup备份mysql大数据库(完整备份与增量备份) 文章目录 [隐藏] Xtrabackup简介 Xtrabackup安装 Xtrabackup工具介绍 inno ...
随机推荐
- Java Mail邮件发送的简单实现
1.什么是java mail JAVA MAIL是利用现有的邮件账户发送邮件的工具,通过JAVA Mail的操控,让程序自动的使用设置的邮箱发送邮件. 这一机制被广泛的用在注册激活和垃圾邮件的发送等方 ...
- WPF MVVM 如何在ViewModel中操作View中的控件事件
(在学习Wpf的时候,做一个小例子,想在TextBox改变后,检验合法性,并弹出提示.在找了很多贴后,发现这个小例子,抄袭过来,仅供参考. 最后也找到了适合自己例子的办法:在出发TextChanged ...
- 不同线程不能获取其他线程设置的ThreadLocal里面的值
背景: 最近在项目用到了ThreadLocal,存放一些值.起线程异步获取ThreadLocal中的值,得到null.这是由于,ThreadLocal.get()会获取当前线程的一个map对象,以Th ...
- SharePoint - JavaScript Variable & Functions
1. MSOWebPartPageFormName 获取当前form的名称,然后可用document.forms[MSOWebPartPageFormName]来得到当前form: 2. _spPag ...
- ubuntu下go开发环境
https://qiita.com/necomeshi/items/676ccb669d6e6102117b 安装 https://golang.org/dl/ # 下载&解压 axel -n ...
- Flask入门邮件同步与异步发送(九)
应用场景: 用户在注册或者密码丢失等过程中,账号绑定邮箱,用户在进行身份认证的过程中,电子邮箱确实是一种很常用的方式,Python中提供了smtplib可以实现发送电子邮件功能,Flask框架也有 ...
- SourceTree Win10 安装不成功解决过程记录
简介 SourceTree 是一款拥有可视化界面的项目版本控制软件,适用于git项目管理,同时它集成了 git flow 工作流程,对于不熟悉 git 命令的初学者来说,可以通过 SourceTree ...
- Android开发最佳学习路线图(转)
Android开发总体路线图: 基础学习——JavaSE: 很多朋友一上手就开始学习Android,似乎太着急了一些. Android应用程序开发是以Java语言为基础的,所以没有扎实 ...
- vue.js--基础 事件结合双向数据绑定实现todolist 待办事项 已经完成 和进行中,键盘事件
<template> <div id="app"> <h1>{{ msg }}</h1> <input type=" ...
- 编程思想的理解(POP,OOP,SOA,AOP) x
http://blog.chinaunix.net/uid-29417436-id-4060980.html 1)POP--面向过程编程(Process-oriented programming ): ...