xtrabackup备份(MySQL备份)与恢复
xtrabackup备份(MySQL备份)与恢复
1. innobackupex参数选项
--no-timestamp: 不创建一个时间戳
--defaults-file=[MY.CNF] //指定配置文件:只能从给定的文件中读取默认选项。 且必须作为命令行上的第一个选项;必须是一个真实的文件,它不能是一个符号链接。
--databases=# //指定备份的数据库和表,格式为:--database="db1[.tb1] db2[.tb2]" 多个库之间以空格隔开,如果此选项不被指定,将会备份所有的数据库。
--include=REGEXP //用正则表达式的方式指定要备份的数据库和表,格式为 --include=‘^mydb[.]mytb’ ,对每个库中的每个表逐一匹配,因此会创建所有的库,不过是空的目录。--include 传递给 xtrabackup --tables。
--tables-file=FILE //此选项的参数需要是一个文件名,此文件中每行包含一个要备份的表的完整名称,格式为databasename.tablename。该选项传递给 xtrabackup --tables-file,与--tables选项不同,只有要备份的表的库才会被创建。
注意:部分备份(--include、--tables-file、--database)需要开启 innodb_file_per_table 。
--compact //创建紧凑型备份,忽略所有辅助索引页,只备份data page;通过--apply-log中重建索引--rebuild-indexs。
--compress //此选项指示xtrabackup压缩备份的InnoDB数据文件,会生成 *.qp 文件。
--apply-log //应用 BACKUP-DIR 中的 xtrabackup_logfile 事务日志文件。一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处于不一致状态。“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件使得数据文件处于一致性状态。
--use-memory=# //此选项接受一个字符参数(1M/1MB,1G/1GB,默认100M),仅与--apply-log一起使用,该选项指定prepare时用于崩溃恢复(crash-recovery)的内存。
--copy-back //拷贝先前备份所有文件到它们的原始路径。但原路径下不能有任何文件或目录,除非指定 --force-non-empty-directories 选项。
--incremental-basedir=DIRECTORY //该选项接受一个字符串参数,该参数指定作为增量备份的基本数据集的完整备份目录。它与 --incremental 一起使用。
--incremental-dir=DIRECTORY //该选项接受一个字符串参数,该参数指定了增量备份将与完整备份相结合的目录,以便进行新的完整备份。它与 --incremental 选项一起使用。
--redo-only //在“准备基本完整备份” 和 “合并所有的增量备份(除了最后一个增备)”时使用此选项。它直接传递给xtrabackup的 xtrabackup --apply-log-only 选项,使xtrabackup跳过"undo"阶段,只做"redo"操作。如果后面还有增量备份应用到这个全备,这是必要的。有关详细信息,请参阅xtrabackup文档。
--parallel=NUMBER-OF-THREADS //此选项接受一个整数参数,指定xtrabackup子进程应用于同时备份文件的线程数。请注意,此选项仅适用于文件级别,也就是说,如果您有多个.ibd文件,则它们将被并行复制; 如果您的表一起存储在一个表空间文件中,它将不起作用。
2.全量备份恢复
创建备份恢复的用户并赋权
create user pxb@'localhost' identified by '123456';
grant reload,process,lock tables,replication client on . to pxb@localhost;
创建存放备份文件的目录
mkdir -pv /var/data
进行数据库全量备份:
innobackupex --defaults-file=/etc/my.cnf --user=pxb --password=123456 /var/data/
[root@aliy ~]# ll /var/data/2018-08-28_09-06-39/
total 18460
-rw-r----- 1 root root 417 Aug 28 09:06 backup-my.cnf
-rw-r----- 1 root root 18874368 Aug 28 09:06 ibdata1
drwxr-x--- 2 root root 4096 Aug 28 09:06 mysql
drwxr-x--- 2 root root 4096 Aug 28 09:06 performance_schema
drwxr-x--- 2 root root 4096 Aug 28 09:06 test
-rw-r----- 1 root root 113 Aug 28 09:06 xtrabackup_checkpoints
-rw-r----- 1 root root 454 Aug 28 09:06 xtrabackup_info
-rw-r----- 1 root root 2560 Aug 28 09:06 xtrabackup_logfile
全量备份恢复
systemctl stop mariadb
rm /var/lib/mysql -rf
mkdir /var/lib/mysql
准备一个完全备份: --apply-log,执行之后 xtrabackup_checkpoints 文件中的 backup_type = full-prepared
innobackupex --apply-log /var/data/2018-08-28_09-06-39/
执行恢复操作:
innobackupex --defaults-file=/etc/my.cnf --copy-back /var/data/2018-08-28_09-06-39/
更改data目录权限并启动mysql:
chown -R mysql:mysql /var/lib/mysql
systemctl start mariadb
3. 增量备份恢复
所谓增量备份恢复就是在全量的基础上进行增量备份。
增量备份1:以全量为基准
innobackupex --defaults-file=/etc/my.cnf --user=pxb --password=123456 --incremental /var/data/inc --incremental-basedir=/var/data/2018-08-28_10-01-53/ --parallel=2
中途进行了数据添加操作。
增量备份2:以增量备份1为基准
innobackupex --defaults-file=/etc/my.cnf --user=pxb --password=123456 --incremental /var/data/inc/ --incremental-basedir=/var/data/inc/2018-08-28_10-04-22/ --parallel=2
增量备份的恢复:
步骤:
- 恢复完全备份
- 恢复增量备份到完全备份(开始恢复的增量备份要添加--redo-only参数,到最后一次增量备份要去掉--redo-only)
- 对整体的完全备份进行恢复,回滚提交的数据
准备一个全备:
innobackupex --apply-log --redo-only /var/data/2018-08-28_10-01-53/
将增量1应用到完全备份
innobackupex --apply-log --redo-only /var/data/2018-08-28_10-01-53 --incremental-dir=/var/data/inc/2018-08-28_10-04-22/
将增量2应用到完全备份,不用加--redo-only参数
innobackupex --apply-log /var/data/2018-08-28_10-01-53 --incremental-dir=/var/data/inc/2018-08-28_10-07-40/
把所有的完全备份合并到一起进行一次apply操作,回滚提交的数据
innobackupex --apply-log /var/data/2018-08-28_10-01-53/
模拟:将数据库里的内容删除
systemctl stop mariadb
mv /var/lib/mysql /var/lib/mysql.bak
mkdir /var/lib/mysql
恢复:
innobackupex --defaults-file=/etc/my.cnf --copy-back /var/data/2018-08-28_10-01-53/
chown -R mysql:mysql /var/lib/mysql
systemctl start maraidb
流备份以及压缩备份
Xtrabackup对备份的数据文件支持“流”功能,即可以将备份的数据通过STDOUT传输给tar程序进行归档,而不是默认的直接保存至某备份目录中。要使用此功能,仅需要使用--stream选项即可。如:
innobackupex --stream=tar /data/backup/|gzip >/data/backup/`date +%F`.tar.gz
也可以使用如下命令将数据备份至其他服务器
innobackupex --default-file=/etc/my.cnf --stream=tar /backup | ssh user@www.magedu.com " cat -> /backups/
date +%F_%H-%M-%S
.tar"
同时也可将备份的数据文件存储到远程的主机,使用--remote-host
来实现
innobackupex --remote-host=root@www.magedu.com /path/IN/REMOTE/HOST/to/backup
xtrabackup备份(MySQL备份)与恢复的更多相关文章
- 使用第三方工具Xtrabackup进行MySQL备份
使用Xtrabackup进行MySQL备份: 一.安装 1.简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtr ...
- Percona XtraBackup 关于 MySQL备份还原的详细测试
一. Percona XtraBackup 的优点. (1)无需停止数据库进行InnoDB热备: (2)增量备份MySQL: (3)流压缩传输到其它服务器: (4)在线移动表: (5)能够比较容易地创 ...
- Xtrabackup实现MySQL备份
一.xtrabackup介绍 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写)它由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上 ...
- 基于xtrabackup实现mysql备份还原
简介 Xtrabackup2.2版之前包括4个可执行文件: innobackupex: Perl 脚本 xtrabackup: C/C++ 编译的二进制 xbstream: 支持并发写的流文件格式 x ...
- 使用Xtrabackup进行MySQL备份 zz
zz from http://www.magedu.com/ 一.安装 1.简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对i ...
- linux备份mysql文件并恢复的脚本,以及其中出现的错误:ERROR: ASCII '\0' appeared in the statement
首先是在网上找了一下教程,代码很简单 #!/bin/bash folder=~/test time=`date +%Y%m%d` mysqldump -u user -p pwd -hlocalhos ...
- Mysql备份系列(1)--备份方案总结性梳理
mysql数据库备份有多么重要已不需过多赘述了,废话不多说!以下总结了mysql数据库的几种备份方案: 一.binlog二进制日志通常作为备份的重要资源,所以再说备份方案之前先总结一下binlog日志 ...
- Mysql备份方案总结性梳理
Mysql备份方案总结性梳理 服务器 mysql 日志 数据库 配置 Mariadb binlog mysql数据库备份有多么重要已不需过多赘述了,废话不多说!以下总结了mysql数据库的几种 ...
- MySQL 备份数据那点事
mysqldump 什么是 mysqldump ? mysqldump 是 MySQL 用于执行逻辑备份的一款工具,可以根据原始数据库对象以及表的定义和数据来生成一系列可以被执行的 SQL 语句. 通 ...
- mysql之使用xtrabackup进行物理备份、恢复、在线克隆从库、在线重做主从
注:图片来自<深入浅出MySQL 数据库开发 优化与管理维护 第2版> 物理备份和恢复 1.冷备份:停掉mysql再备份,一般很少用,因为很多应用不允许长时间停机,停机备份的可以直接CP数 ...
随机推荐
- 通过创建制定版本react-native项目解决“Unable to resolve module `AccessibilityInfo` ”的问题
react-native init MyApp --version 0.55.4 注:不能将--version简写成-v
- RESTful-4使用教程
一.REST起源REST(Representational State Transfer)表象化状态转变(表述性状态转变),在2000年被提出,基于HTTP.URI.XML.JSON等标准和协议,支持 ...
- 《Java项目中classpath路径详解》
项目里用到了classpath路径来引用文件,那么classpath指的是哪里呢 我首先把上面的applicationContext.xml文件放在了src目录下发现可以. 那么classpath到底 ...
- 微信小程序1
本次项目主要了解及使用微信小程序,以及更好的理解微信动画,wxss,JavaScript,ajax,xml等技术: 借助的平台是java后端设计语言以及微信小程序界面,设计 该系统分为1,个人用户端: ...
- 关于DataTable序列化的事儿
今天写了一个小demo,从数据库中读取到了dataTable,想序列化成json字符串,然后传到前端,进行页面展示,其实很简单的一个步骤,谁知道它出错了!!! 出错的原因是:序列化类型为XX的对象时检 ...
- kali安装vm tools
kali安装完毕后第一件事便是安装VMtools,tools能让kali和物理机进行交互,复制粘贴功能等. 在屏幕上会弹出一个光驱,点击进去,进入文件夹 将文件复制到home文件夹下. 1 tar z ...
- SpringBoot整合使用JdbcTemplate
JdbcTemplate是Spring框架自带的对JDBC操作的封装,目的是提供统一的模板方法使对数据库的操作更加方便.友好,效率也不错. 整合使用JdbcTemplate实现对图书的添加功能小案例 ...
- 页面的input唤醒软键盘再收起后,页面会出现软键盘高度的空白背景
微信浏览器在版本6.7.4及以上会有这个bug:页面的input唤醒软键盘再收起后,页面会出现软键盘高度的空白背景,触摸到滚动条会消失恢复! 解决代码 后台框架嵌入iframe的情景,iframe内部 ...
- 4.23 Linux(3)
2019-4-23 19:03:53 买的服务器第三天感觉超爽!! 发现学习Linux超爽,有种操作的快感!!!!!是Windows比不了的!! 阿里巴巴镜像源 : https://opsx.alib ...
- 【高并发架构】Redis特点及构件模型
数据结构 redis 相比 memcached 来说,拥有更多的数据结构,能支持更丰富的数据操作.如果需要缓存能够支持更复杂的结构和操作, redis 会是不错的选择. redis 主要有以下几种数据 ...