热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

生产环境究竟是使用mysqldump还是xtrabackup来备份与恢复数据库?

一个合格的运维工程师或者dba工程师,如果有从事数据库方面的话,首先需要做的就是备份,如果没有备份,出现问题的话,你的业务就会出问题,你的工作甚至会。。

一个合格的运维工程师或者dba工程师,如果有从事数据库方面的话,首先需要做的就是备份,如果没有备份,出现问题的话,你的业务就会出问题,你的工作甚至会。。

一个合格的运维工程师或者dba工程师,如果有从事数据库方面的话,首先需要做的就是备份,如果没有备份,出现问题的话,你的业务就会出问题,香港服务器,你的工作甚至会。。。

所以备份是重要的,但光有备份还不行,备份后如果出现问题,你还得使用备份数据来恢复,但恢复数据的时间一般都是很长的,不符合业务需求,所以一个快速备份与恢复的软件就很有必要。

之前我在维护mysql数据库的时候,使用mysqldump来进行备份与恢复,在备份的时候锁住表,然后全部备份,在数据少的时候没问题,但如果数据很多,不允许锁表,同时需要恢复数据块的情况,mysqldump就不适合了,我在恢复一个4G数据文件的数据库的时候,恢复的数据是使用mysqldump的数据,恢复了3个小时还没有反应,香港服务器,造成的影响很严重,所以我开始寻找其他的别发软件来满足以上的需求,幸好找到了,就是使用xtrabackup来进行备份与恢复,恢复4G数据文件的数据库,仅需要14秒,同时在备份的时候不会锁表,而且支持增量备份,香港虚拟主机,所以把我的比较分享给大家,希望对大家有益!

Xtrabackup 是percona公司的开源项目,用以实现类似innodb官方的热备份工具InnoDB Hot Backup的功能,能够非常快速地备份与恢复mysql数据库。 Xtrabackup中包含两个工具:

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

innobackupex是将xtrabackup进行封装的perl脚本,提供了备份myisam表的能力。

由于innobackupex的功能更为全面和完善,所以,本文以innobackupex作为基础进行研究描述。

下面介绍xtrabackup的全部、增量的备份与恢复。

一、下载与安装

1、下载

  • wget
  • 2、安装依赖库

    如果是debian系列的话

  • apt-get install debhelper autotools-dev libaio-dev wget automake libtool bison libncurses-dev libz-dev cmake bzr
  • 如果是redhat系列的话

  • yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr bison libtool ncurses-devel zlib-devel
  • 3、解压

  • tar zxvf xtrabackup-1.6.7.tar.gz
  • 4、进入目录

  • cd xtrabackup-1.6.7
  • 5、复制

    其中,

    innobackupex是我们要使用的备份工具;

    xtrabackup是被封装在innobackupex之中的,innobackupex运行时需要调用它;

    xtrabackup_51是xtrabackup运行时需要调用的工具;

    tar4ibd是以tar流的形式产生备份时用来打包的工具。

    6、对某个数据库进行全部备份的命令介绍

  • 说明:
    --database=test 单独对test数据库做备份 ,若是不添加此参数那就那就是对全库做备份
    2>/tmp/data/err.log 输出信息写入日志中
    1>/tmp/data/test.tar.gz 打包压缩存储到该文件中

    二、对数据库的全部备份与恢复

    下面开始测试xtrabackup的全部备份

    (1)先进入mysql里创建一个新的test数据库

    (2)然后备份test的整个数据库

    使用下面的backup.sh脚本

    现在开始运行此脚本

    然后到data里查看结果

    可以看到备份完成了

    (3)恢复数据库

    先关闭mysql服务,然后再删除test数据库文件

    开始恢复数据库

    先把之前/tmp/data里的数据库压缩版给解压

    注意:这里tar解包必须使用-i参数,否则解压出来的文件只有一个backup-my.cnf

    查看一下restore的内容

    然后将备份文件中的日志应用到备份文件中的数据文件上

    这里的--apply-log指明是将日志应用到数据文件上,完成之后将备份文件中的数据恢复到数据库中:

    然后再查看一下当前目录内容

    然后再修改test的用户与组为mysql

    然后启动mysql,并查看test数据库的表里内容

    可以看到数据库已经恢复完成

    可能大家有个疑问,为什么我这里不像很多网上的文章里是在apply-log后,使用copy-back如果使用/usr/bin/innobackupex --copy-back命令后,会报Original data directory is not empty! at /usr/local/xtrabackup/bin/innobackupex line 538.恢复的目录必须为空。经查官网,这是xtrabackup的一个BUG。
    innobackupex–copy-back was run. With this bug fix, innobackupex–copy-back operation if the destination is not empty, avoiding potential data loss or a strang combination of a restored backup and previous data. Bug Fixed: #737569 (Valentine Gostev) will now error out of the did not check that MySQL datadir was empty before

    所以在apply-log后直接复制数据目录到数据库的位置上吧。

    三、对数据库的增量备份与恢复

    为了进行增量备份,先对数据库添加一些数据

    然后进行增量的备份

    其中,--incremental指明是增量备份,--incremental-basedir指定上次完整备份或者增量备份文件的位置。这里的增量备份其实只针对的是InnoDB,对于MyISAM来说,还是完整备份。

    在进行增量备份的恢复之前,先关闭数据库,然后删除数据库test

    增量备份的恢复

    然后再进入恢复的目录/tmp/data

    跟全部备份一样,把test恢复到/var/lib/mysql里

    然后修改用户与组

    然后启动msyql,并查看test数据库里test表的内容

    可以看到增量备份已经恢复完成。

    下面的链接是我在生产环境适应xtrabackup来恢复全部备份的数据库的案例

    本文出自 “吟—技术交流” 博客,请务必保留此出处

    推荐阅读
    • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
    • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
    • PHP组合工具以及开发所需的工具
      本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
    • 环境配置tips
      一、MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:  1、数据库名与表名是严格区分大小写的;  2、表的别名是严格区分大小写的& ... [详细]
    • mysql5.6 多实例 主从安装_MySQL5.6一主多从的半同步复制实例
      半同步简介:在默认情况下,MySQL的复制是异步的,这意味着主服务器及其从服务器是独立的。异步复制可以提供最佳的性能,因为主服务器在将更新 ... [详细]
    • linux下连接mysql参数怎么设置的简单介绍
      本文目录一览:1、Linux下mysql允许远程连接怎么设置 ... [详细]
    • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
    • 腾讯安全平台部招聘安全工程师和数据分析工程师
      腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
    • 云原生应用最佳开发实践之十二原则(12factor)
      目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
    • Introduction(简介)Forbeingapowerfulobject-orientedprogramminglanguage,Cisuseda ... [详细]
    • PHP编程能开发哪些应用?
      导读:很多朋友问到关于PHP编程能开发哪些应用的相关问题,本文编程笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!本文目录一览: ... [详细]
    • sql注入之HTTP参数污染
      sql注入之HTTP参数污染简介http参数污染即HPP(HTTPParameterPollution),是一种注入型漏洞,攻击者通过在HTTP请求中插入特定的参数来发起攻击。如果 ... [详细]
    • 主流操作系统简介
      主流操作系统简介子墨居士操作系统理论定义为管理计算机硬件资源,控制其他程序运行并为用户提供交互操作界面的系统软件的集合。操作系统是计算机系统的关键组成部分࿰ ... [详细]
    • 新新于2005-09-1415:02:23发表:利用chbg程序动态制作屏保XScreenSaver是一个开放的框架,就像一个服务器,任何一个可以在根窗 ... [详细]
    • deb文件格式本是ubuntu的安装文件,那么我想要在fedora中安装,需要把deb格式转化成rpm格式,我们用skype举例:1.下载转换工具alien_8.78.tar.gz2.deb转化成 ... [详细]
    author-avatar
    荣哥918
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有