MySQL数据库之xtrabackup物理备份(一)
前言:说到数据库备份,我们知道可以用来对数据库进行备份的工具有mysqldump、mydumer、mysqlpump等等,实际工作中,机器上的数据库不大的话,都是用mysqldump工具来备份,这些备份工具各有优缺点,这里不详细介绍,今天分享另一个数据库备份工具,叫XtraBackup。
一、Xtrabackup介绍
1.官网说明
支持InnoDB,XtraDB和HailDB 存储引擎的完全非阻塞备份

4.为什么要用XtraBackup
因为当数据库超过100G的话,用mysqldump就没有XtraBackup有优势,工作中mysqldump备份大的数据还会出现卡住,断开的可能性,XtraBackup支持完整备份,增量备份,完整恢复,增量恢复,对于innodb引擎备份时不锁表进行热备份。
二、XtraBackup安装
1.xtrabackup官网有很多个版本,有1.6、2.0-2.4和8.0,每个版本都有不同,根据自己需要下载安装,如:
xtrabackup1.6版本支持MySQL 5.0、5.1和5.5。
xtrabackup2.2和2.3版本支持备份MySQL 5.1 、5.5和5.6。
xtrabackup2.4版本支持MySQL 5.1、5.5、5.6和5.7。
xtrabackup8.0版本只支持MySQL8.0,不支持8.0之前的。
本文章使用xtrabackup2.3。
2.下载安装
官网有源码包下载,二进制包、还有存储库,官网推荐存储库下载,我这里环境用Centos7,所以用yum安装,这里选择安装yum install -y percona-xtrabackup.x86_64
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
yum list | grep percona
percona-xtrabackup.x86_64 2.3.-.el7 percona-release-x86_64
percona-xtrabackup-.x86_64 2.2.-.el7 percona-release-x86_64
percona-xtrabackup--debuginfo.x86_64 2.2.-.el7 percona-release-x86_64
percona-xtrabackup-.x86_64 2.4.-.el7 percona-release-x86_64
percona-xtrabackup--debuginfo.x86_64 2.4.-.el7 percona-release-x86_64
percona-xtrabackup-.x86_64 8.0.-.el7 percona-release-x86_64
percona-xtrabackup--debuginfo.x86_64 8.0.-.el7 percona-release-x86_64
percona-xtrabackup-debuginfo.x86_64 2.3.-.el7 percona-release-x86_64
percona-xtrabackup-test.x86_64 2.3.-.el7 percona-release-x86_64
percona-xtrabackup-test-.x86_64 2.2.-.el7 percona-release-x86_64
percona-xtrabackup-test-.x86_64 2.4.-.el7 percona-release-x86_64
percona-xtrabackup-test-.x86_64 8.0.-.el7 percona-release-x86_64
安装之后,可以检查xtrabackup版本,我本地的数据库版本是5.6
xtrabackup --version
xtrabackup version 2.3. based on MySQL server 5.6. Linux (x86_64) (revision id: )
3.工具介绍
Xtrabackup安装完成后有4个可执行文件,其中2个比较重要的备份工具是innobackupex、xtrabackup
innobackupex
innobackupex是一个封装xtrabackup的Perl脚本。。
xtrabackup
编译后的C二进制文件,提供了使用MyISAM,InnoDB和XtraDB表备份整个MySQL数据库实例的功能。
xbcrypt加密
用于加密和解密备份文件的实用程序。
xbstream
允许以流的形式从xbstream格式提取文件,类似tar。
xbcloud
用于从云中下载xbstream归档的全部或部分或将其上传到云。
官网说明:innobackupex仍然像2.2版本一样支持所有功能和语法,但是现在已弃用,并且将在下一个主要版本中删除,Percona XtraBackup 2.3版本的推荐方式采取的备份是使用xtrabackup脚本,这篇文章介绍innobackupex脚本,差别不大。
4.innobackupex命令参数
--user= #指定数据库备份用户 --password= #指定数据库备份用户密码 --port= #指定数据库端口 --host= #指定备份主机 --socket= #指定socket文件路径 --databases= #备份指定数据库,多个空格隔开,如--databases="dbname1 dbname2",不加备份所有库 --defaults-file= #指定my.cnf配置文件 --apply-log #日志回滚 --incremental= #增量备份,后跟增量备份路径 --incremental-basedir= #增量备份,指上次增量备份路径 --redo-only #合并全备和增量备份数据文件 --copy-back #将备份数据复制到数据库,数据库目录要为空 --no-timestamp #生成备份文件不以时间戳为目录名 --stream= #指定流的格式做备份,--stream=tar,将备份文件归档,--stream=xbstream --remote-host=user@ip DST_DIR #备份到远程主机 --use-memory= #该参数在prepare的时候使用,控制prepare时innodb实例使用的内存量 --parallel #用于复制数据文件的线程数。配合-stream=xbstream --compress #压缩功能,配合-stream=xbstream --compress-threads= #用于并行数据压缩的线程数。此选项的默认值为1。配合-stream=xbstream --throttle= #限制innobackupex读写InnoDB数据的速率
三、用innobackupex进行完整备份
1.执行完整备份命令
innobackupex --defaults-file=/usr/local/mysql/my.cnf --user=root --password="123456" --socket=/tmp/mysql.sock --no-timestamp /data/backup/$(date +%F)/full
最后输出下面信息表示成功备份
xtrabackup: Transaction log of lsn (42677124128) to (42677124128) was copied.
200127 13:21:18 completed OK!
在/data/backup目录下面生成一个当前日期命名的目录,时间目录下面的full目录里面存放着备份出来的文件
[root@devops ::/data/backup/]# ll
total
drwx------ root root Jan : --
介绍一下目录的文件信息
[root@devops ::/data/backup/]# ll --/full/
total
-rw-r----- root root Jan : backup-my.cnf #备份命令用到的配置信息
-rw-r----- root root Jan : ibdata1 #备份的表空间的文件
drwx------ root root Jan : mysql #备份出来的mysql、performance_schema、test数据库
drwx------ root root Jan : performance_schema
drwx------ root root Jan : test
-rw-r----- root root Jan : xtrabackup_binlog_info #binlog日志信息
-rw-r----- root root Jan : xtrabackup_checkpoints #这个比较重要,里面存放着lsn(日志序列号)
-rw-r----- root root Jan : xtrabackup_info #存放一些工具版本、数据库版本、执行开始结束时间等信息
-rw-r----- root root Jan : xtrabackup_logfile #重做日志文件
2.模拟删除整个数据目录
cd /data/ && rm -rf mysqldata
3.kill掉mysql进程
pgrep mysql | xargs kill
4.准备
准备(prepare)一个完全备份
一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处理不一致状态。“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态。
innobackupex命令的-apply-log选项可用于实现上述功能
不建议在准备时中断xtrabackup过程,因为这可能会导致数据文件损坏并且备份将变得不可用。如果准备过程中断,则不能保证备份的有效性。
innobackupex --apply /data/backup/--/full/
最后输出:200127 13:44:47 completed OK!
5.查看xtrabackup_checkpoints文件
查看合并后的 checkpoints 其中的类型变为 full-prepared 即为可恢复。
backup_type = full-prepared
6.执行恢复之前要在my.cnf指定数据目录
恢复备份之前,datadir必须为空。要注意在执行还原之前需要关闭MySQL服务器。不能还原到正在运行的mysqld实例的数据目录(导入部分备份时除外)
cat /usr/local/mysql/my.cnf | grep datadir
datadir = /data/mysqldata
7.执行恢复命令
innobackupex --defaults-file=/usr/local/mysql/my.cnf --copy-back /data/backup/--/full
200127 13:56:37 completed OK!
如果恢复最后输出OK就没问题
8.修改权限
由于将保留文件的属性,因此在大多数情况下,mysql在启动数据库服务器之前,需要将文件的所有权更改为mysql
chown -R mysql.mysql /data/mysqldata
9.启动
service mysqld start
10.检查数据
总结:这篇文章介绍xtrabackup完整备份和还原,后面还会继续写,如果那里写得不好,请多多指教,谢谢
MySQL数据库之xtrabackup物理备份(一)的更多相关文章
- XtraBackup物理备份 阿里云的Mysql备份方案
XtraBackup物理备份 Percona XtraBackup是世界上唯一的开源,免费的MySQL热备份软件,为InnoDB和XtraDB 数据库执行非阻塞备份.使用Percona XtraBac ...
- MariaDB xtrabackup物理备份与还原
xtrabackup物理备份 1.1 安装xtraback 安装依赖: [root@localhost ~]# yum install -y perl-DBD-MySQL perl-DBI perl- ...
- Xtrabackup 物理备份
目录 Xtrabackup 安装 Xtrabackup 备份介绍 Xtrabackup全量备份 准备备份目录 全量备份 查看全量备份内容 Xtrabackup 全量备份恢复数据 删除所有数据库 停止数 ...
- centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾
centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾 系统:centos6.5 1.创建脚本目录 mkdir -p /usr/local/sh/ 创建备份web ...
- MySQL数据库使用xtrabackup备份实现小例子
关于MySQL数据库的备份的工具和方式也比较多,本文只简单介绍一些我司一个平台的备份方案.Xtrabackup是由percona开源的免费数据库热备份软件,但是只能对InnoDB数据库和XtraDB存 ...
- Innobackupex(xtrabackup)物理备份
1. Percona XtraBackup介绍 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个完全开源的用于 MySQL 数据库物理热备的备份工具,在备份过程中不 ...
- mysql数据库的维护,备份和复制
在数据库运行时维护数据库 执行mysql数据库维护的方法之一就是连接mysql服务器,并告诉它做什么事, 如对myisam数据表进行检查或者修复, 可以使用check table tbname或rep ...
- mysql中什么是物理备份?
需求描述: 今天在看数据库备份,恢复的内容,就是对于一个概念,物理备份的理解,在这里记录下. 概念解释: 物理备份:就是对存储数据库内容的目录和文件的直接拷贝.简单来说,就是对物理文件的拷贝. 文档创 ...
- 使用CMD命令行来对MySQL数据库执行迁移、备份、恢复
1. 导出数据库数据 "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump.exe" -u root -p123abc ...
随机推荐
- Redis内存回收机制
为什么需要内存回收? 原因有如下两点: 在 Redis 中,Set 指令可以指定 Key 的过期时间,当过期时间到达以后,Key 就失效了. Redis 是基于内存操作的,所有的数据都是保存在内存中, ...
- 2019-8-31-dotnet-Framework-源代码-·-Ink
title author date CreateTime categories dotnet Framework 源代码 · Ink lindexi 2019-08-31 16:55:58 +0800 ...
- C++Review6_优先队列priority_queue
普通队列是一个先进先出的数据结构,元素在队尾添加,在队头删除. 优先队列的出队逻辑相比于普通队列发生了改变,具有最高优先级的元素先出队. 在C++中只要包含了#include<queue> ...
- Python9_类
类的基础知识 属性:类变量.实例变量.方法:初始化方法 __init__ //初始化方法不是必须的:其他方法: //类的定义class Employee: empCount = 0 //类变量,有些 ...
- 使用spring boot中的JPA操作数据库
前言 Spring boot中的JPA 使用的同学都会感觉到他的强大,简直就是神器一般,通俗的说,根本不需要你写sql,这就帮你节省了很多时间,那么下面我们来一起来体验下这款神器吧. 一.在pom中添 ...
- salesforce零基础学习(九十五)lightning out
随着salesforce对lightning的推进,越来越多的项目基于lightning开发,导致很多小伙伴可能都并不了解classic或者认为不需要用到classic直接就开始了lightning的 ...
- 叶子的颜色---经典树上dp
挺简单的一个dp #include<iostream> #include<cstring> #include<cstdio> #include<algorit ...
- Java8 LocalDate计算两个日期的间隔天数
Java8新增了java.time包,提供了很多新封装好的类,使我们可以摆脱原先使用java.util.Time以及java.util.Calendar带来的复杂. 其中LocalDate正是本文中使 ...
- SofaBoot使用Nacos进行服务注册发现
前提 最近创业公司的项目组基于业务需要,开发一套新的微服务,考虑到选用的组件必须是主流.社区活跃.生态完善以及方便迁移到云上等因素,引入了SOFAStack全家桶.微服务开发里面,一个很重要的功能就是 ...
- 洛谷$P4099\ [HEOI2013]\ SAO\ dp$
正解:树形$dp$ 解题报告: 传送门$QwQ$. 考虑设$f_i$表示点$i$的子树内的拓扑序排列方案数有多少个. 发现这样不好合并儿子节点和父亲节点.于是加一维,设$f_{i,j}$表示点$i$的 ...