搜索
首页数据库mysql教程用xtrabackup备份mysql数据库方法指导
用xtrabackup备份mysql数据库方法指导Jul 19, 2017 am 11:32 AM
mysqlxtrabackup使用方法

xtrabackup是由percona提供的mysql备份工具,它是一款物理备份工具,通过连接数据库把数据库的数据备份出来。对于innodb存储引擎其支持全量备份和增量备份。对于myisam存储引擎只支持增量备份。因为xtrabackup对innodb的增量备份是基于表空间的LSN进行的,所谓LSN即:表空间分成多个数据块,每个数据块都有相应的序列号,当数据块数据发生变化则更新序列号。全量备份即备份所有数据块,则增量备份则基于全量备份最后一个数据块的序列号到最新的数据块序列号进行备份。因为myisam不支持表空间,所以不能进行增量备份。

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

Xtrabackup中主要包含两个工具:

xtrabackup:是用于热备份innodb, xtradb表中数据的工具,不能备份其他类型的表,也不能备份数据表结构;

innobackupex:是将xtrabackup进行封装的perl脚本,可以备份和恢复MyISAM表以及数据表结构。


xtrabackup备份出来的数据包括:

  • 表空间

  • 数据文件

  • 二进制日志

  • 事务日志
    ...

xtrabackup在进行数据恢复之前需要注意如下要点:

  1. 如果有增量备份则需要在恢复之前先进行增量备份和全备份的合并再恢复;

  2. 如果是支持事务的表的备份,则恢复之前需要先进行事务日志的回滚和提交操作;

  3. 如果是多个连续的备份操作,则只需要提交事务日志,不需要回滚,只有在全部备份操作合成之后再进行事务的回滚;

此文通过详细的实验步骤来演示xtrabackup的使用方法。
实验步骤

  1. 一台centos7虚拟机,安装mariadb-5.5.52版本的数据库,首先通过sql脚本导入hellodb测试库,其包括一个students数据表,此实验在students表中进行操作,命令如下:
    mysql -uroot < hellodb.sql

  2. 安装xtrabackup,可以从官方网站下载安装包,然后通过yum进行安装,下载站点为:,此处不再演示安装过程;

  3. xtrabackup的主要命令为innobackupex,通过innobackupex --help或者man手册可以获取到帮助信息;

  4. 数据库已经导入,此时可以进行数据库的备份操作,先进行数据库的全量备份和恢复:

  • xtrabackup_binlog_info:记录二进制日志的内容;

  • xtrabackup_checkpoints:记录备份类型,开始和结束的lsn编号等备份信息;

  • xtrabackup_info:记录更详细的备份信息,如是否为所有库备份,是否压缩,备份执行的命令等信息;

  • xtrabackup_logfile:记录的是事务日志,为二进制文件,不可查看;

  1. 首先确保数据库已经开启二进制日志,通过show global variables like 'log_bin';命令可以看到是否已经开启,通过show binary logs;可以看到目前正在使用的二进制日志是哪一个;

  2. 通过xtrabackup进行备份,数据备份到/data/backup目录下,备份完成会在指定目录下生成一个以当前时间命名的文件夹:
    innobackupex -u root /data/backup

  3. 文件夹内容如下:
    用xtrabackup备份mysql数据库方法指导

  4. 此时就备份成功了,然后演示数据库的恢复操作。注意:恢复之前需要首先停止数据库服务:
    innobackupex --apply-log 2017-07-13_21-02-07/ #首先进行事务日志的提交和回滚     innobackupex --copy-back 2017-07-13_21-02-07/ #进行数据恢复,会自动把数据恢复到mysql的数据目录下

  5. 恢复成功之后所有已经恢复数据的属主和属组都是root用户,需要修改成mysql用户才能登陆数据库;

  6. 此时登陆数据库即可看到所有数据都已经恢复了。

  • 这次演示增量备份和恢复操作:

    • 生产环境建议二进制日志和数据文件分开放在不同磁盘,因为二进制文件可以用来进行时间点恢复,可以尽可能保证丢失更少的数据,如果二进制文件也丢失,则可能会丢失大量数据;

    • 在数据恢复操作完成之后一定要再进行一次数据的全备份,保证数据安全;

    1. 往数据库中插入几条新的信息,然后进行数据库的增量备份;

    2. 通过如下命令进行数据库的增量备份,备份成功之后还是会在/data/backup目录下生成一个新的以时间命名的文件夹:
      innobackupex -u root -p 1234567a --incremental --incremental-basedir=/data/backup/2017-07-13_21-07-23/ /data/backup/

    3. 然后停掉数据库服务,删除数据库目录下的所有数据,进行数据恢复操作,步骤如下:
      innobackupex --apply-log --redo-only 2017-07-13_22-16-19/ #进行全量备份的事务提交,但是不回滚未提交事务,因为未提交事务可能在下次的增量备份中提交     innobackupex --apply-log --redo-only 2017-07-13_22-16-19/ --incremental-dir=2017-07-13_22-18-34/ #进行增量备份和全备份的合成已经事务提交工作     innobackupex --apply-log 2017-07-13_22-16-19/ #对于全备份也没有完成的事务进行回滚操作     innobackupex --copy-back 2017-07-13_22-16-19/ #此时采用全备份即可恢复数据,不再需要增量备份,因为已经进行了备份的合成操作

    4. 同样需要修改恢复完成数据的属主和属组,然后登陆数据库即可看到完整是数据,此时实验演示完成。

      注意:

    以上是用xtrabackup备份mysql数据库方法指导的详细内容。更多信息请关注PHP中文网其他相关文章!

    声明
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
    图文详解mysql架构原理图文详解mysql架构原理May 17, 2022 pm 05:54 PM

    本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于架构原理的相关内容,MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层,下面一起来看一下,希望对大家有帮助。

    mysql怎么去掉第一个字符mysql怎么去掉第一个字符May 19, 2022 am 10:21 AM

    方法:1、利用right函数,语法为“update 表名 set 指定字段 = right(指定字段, length(指定字段)-1)...”;2、利用substring函数,语法为“select substring(指定字段,2)..”。

    mysql怎么替换换行符mysql怎么替换换行符Apr 18, 2022 pm 03:14 PM

    在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

    mysql的msi与zip版本有什么区别mysql的msi与zip版本有什么区别May 16, 2022 pm 04:33 PM

    mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

    mysql怎么将varchar转换为int类型mysql怎么将varchar转换为int类型May 12, 2022 pm 04:51 PM

    转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

    MySQL复制技术之异步复制和半同步复制MySQL复制技术之异步复制和半同步复制Apr 25, 2022 pm 07:21 PM

    本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

    带你把MySQL索引吃透了带你把MySQL索引吃透了Apr 22, 2022 am 11:48 AM

    本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了mysql高级篇的一些问题,包括了索引是什么、索引底层实现等等问题,下面一起来看一下,希望对大家有帮助。

    mysql怎么判断是否是数字类型mysql怎么判断是否是数字类型May 16, 2022 am 10:09 AM

    在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。

    See all articles

    热AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智能驱动的应用程序,用于创建逼真的裸体照片

    AI Clothes Remover

    AI Clothes Remover

    用于从照片中去除衣服的在线人工智能工具。

    Undress AI Tool

    Undress AI Tool

    免费脱衣服图片

    Clothoff.io

    Clothoff.io

    AI脱衣机

    AI Hentai Generator

    AI Hentai Generator

    免费生成ai无尽的。

    热门文章

    仓库:如何复兴队友
    1 个月前By尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.能量晶体解释及其做什么(黄色晶体)
    2 周前By尊渡假赌尊渡假赌尊渡假赌
    Hello Kitty Island冒险:如何获得巨型种子
    1 个月前By尊渡假赌尊渡假赌尊渡假赌

    热工具

    安全考试浏览器

    安全考试浏览器

    Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

    PhpStorm Mac 版本

    PhpStorm Mac 版本

    最新(2018.2.1 )专业的PHP集成开发工具

    MinGW - 适用于 Windows 的极简 GNU

    MinGW - 适用于 Windows 的极简 GNU

    这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

    WebStorm Mac版

    WebStorm Mac版

    好用的JavaScript开发工具

    mPDF

    mPDF

    mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),