前言:说到数据库备份,我们知道可以用来对数据库进行备份的工具有mysqldump、mydumer、mysqlpump等等,实际工作中,机器上的数据库不大的话,都是用mysqldump工具来备份,这些备份工具各有优缺点,这里不详细介绍,今天分享另一个数据库备份工具,叫XtraBackup。

一、Xtrabackup介绍

1.官网说明

Percona XtraBackup可以在不阻止用户查询的情况下实现MySQL备份,因此非常适合拥有大数据集和无法承受长时间停机的关键任务应用程序的公司。作为开源解决方案免费提供,Percona XtraBackup降低了备份成本,同时为MySQL备份提供了独特的功能。
 
2.Xtrabackup优点
快速可靠地完成备份
备份期间不间断的事务处理
节省磁盘空间和网络带宽
自动备份验证
更快的恢复时间可延长正常运行时间
支持InnoDB,XtraDB和HailDB 存储引擎的完全非阻塞备份
 
3.Xtrabackup备份的过程

 
(1)备份开始时会开启一个后台检测进程,实时检测mysql redo(已提交的事务)的变化,一旦发现redo中有新日志写入,立刻将日志记入后台日志文件xtrabackup_log中,
(2)复制InnoDB的数据文件和系统表空间文件ibdata1,
(3)待复制结束后,执行flush tables with read lock操作,复制.frm、.MYI、.MY等文件
(4)执行flush tables with read lock的目的是为了防止数据表发生DML操作,并且在这一时刻获得binlog的位置,
(5)最后会发出unlock tables,把表设置为可读写状态,
(6)最终停止xtrabackup_log。

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物理备份(一)的更多相关文章

  1. XtraBackup物理备份 阿里云的Mysql备份方案

    XtraBackup物理备份 Percona XtraBackup是世界上唯一的开源,免费的MySQL热备份软件,为InnoDB和XtraDB 数据库执行非阻塞备份.使用Percona XtraBac ...

  2. MariaDB xtrabackup物理备份与还原

    xtrabackup物理备份 1.1 安装xtraback 安装依赖: [root@localhost ~]# yum install -y perl-DBD-MySQL perl-DBI perl- ...

  3. Xtrabackup 物理备份

    目录 Xtrabackup 安装 Xtrabackup 备份介绍 Xtrabackup全量备份 准备备份目录 全量备份 查看全量备份内容 Xtrabackup 全量备份恢复数据 删除所有数据库 停止数 ...

  4. centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾

    centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾 系统:centos6.5 1.创建脚本目录 mkdir -p /usr/local/sh/ 创建备份web ...

  5. MySQL数据库使用xtrabackup备份实现小例子

    关于MySQL数据库的备份的工具和方式也比较多,本文只简单介绍一些我司一个平台的备份方案.Xtrabackup是由percona开源的免费数据库热备份软件,但是只能对InnoDB数据库和XtraDB存 ...

  6. Innobackupex(xtrabackup)物理备份

    1. Percona XtraBackup介绍 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个完全开源的用于 MySQL 数据库物理热备的备份工具,在备份过程中不 ...

  7. mysql数据库的维护,备份和复制

    在数据库运行时维护数据库 执行mysql数据库维护的方法之一就是连接mysql服务器,并告诉它做什么事, 如对myisam数据表进行检查或者修复, 可以使用check table tbname或rep ...

  8. mysql中什么是物理备份?

    需求描述: 今天在看数据库备份,恢复的内容,就是对于一个概念,物理备份的理解,在这里记录下. 概念解释: 物理备份:就是对存储数据库内容的目录和文件的直接拷贝.简单来说,就是对物理文件的拷贝. 文档创 ...

  9. 使用CMD命令行来对MySQL数据库执行迁移、备份、恢复

    1. 导出数据库数据   "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump.exe" -u root -p123abc ...

随机推荐

  1. WPF 一个性能比较好的 gif 解析库

    本文介绍 Magick.NET ,这是 ImageMagick 的 .Net 封装,他支持 100 多种格式的图片,而 gif 也是他支持的.本文告诉大家如何使用这个库播放 gif 图 先给大家看一下 ...

  2. sublimeText 3使用教程

    工欲善利其事必先利其器,sublime作为一款轻量.便捷的编译工具,集成了很多插件,功能强大,深受大家的喜爱.掌握好sublime的具体用法,必会为你的工作带来极大的便利!好了,闲话不多说了,下面开始 ...

  3. ELK学习实验005:beats的一些工具介绍

    一 背景需求 Nginx是一个非常优秀的web服务器,往往Nginx服务会作为项目的访问入口,那么,nginx的性能保障就会变得非常重要,如果nginx的运行出现了问题就会对项目有较大的影响,所以,我 ...

  4. 浅谈Redis的基本原理和数据类型结构的特性和应用开发场景

    一.Redis介绍 1,redis介绍(Redis安装在磁盘:Redis数据存储在内存) redis是一种基于键值对(key-value)数据库,其中value可以为string.hash.list. ...

  5. Win10系统中搭建服务器的方法

    1.我的电脑->找到并点击“控制面板”->点击“程序”->点击“启用或关闭Windows功能”2.按如下图方式选中复选框   服务器批量管理软件 3.点击确定,打开iis管理器(右键 ...

  6. pyspider遇到的第一个坑:Active Tasks成功,Results无内容

    #!/usr/bin/env python# -*- encoding: utf-8 -*-# Created on 2020-01-04 16:30:27# Project: HomeWork fr ...

  7. 13.利用pymysql创建变量类型的表名解说

    在练习爬虫爬取数据时,想将爬取的数据用pymysql存储到数据库中,并且存储时的表名是一个变量,但在写完代码运行后经常出面1064的错误代码,在网上查找相关解决方法,但一直找不到完美的解决方法, 通过 ...

  8. schedule of 2016-10-31~2016-11-6(Monday~Sunday)——1st semester of 2nd Grade

    most important things to do 1.joint phd preparations 2.journal paper to write 3.solid fundamental kn ...

  9. CF749D Leaving Auction set排序查找

    CodeForces 749D. Leaving Auction 传送门 There are n people taking part in auction today. The rules of a ...

  10. CF854C Planning优先队列|set

    C. Planning 传送门 Helen works in Metropolis airport. She is responsible for creating a departure sched ...