`
youxinDBA
  • 浏览: 1004 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Mysql数据库备份思路设计及实践

阅读更多

废话不多说,在进行备份设计之前首先我们理解几个概念:

      逻辑备份

      物理备份

      冷备份

      热备份

      二进制日志文件

      完全备份

      增量备份


      冷备份
      冷备份(停掉数据库之后的备份),我们所需要做的事情都很简单,那就是直接copy 所有数据文件和日志文件到备份集需要存放的位置即可,不管是何种存储引擎都可以这样做。其实使用mysqldump进行备份,锁定所有的表的时候其实本质就是冷备份.

     

      热备份

      在我们的实际应用环境中,是很少有能够让我们可以停机做日常备份的情况的,我们只能在数据库提供服务的情况下来完成数据库备份。这也就是我们俗称的热物理备份
 
      物理备份
      是将实际组成数据库的操作系统文件从一处拷贝到另一处的备份过程,通常是从磁盘到磁带。其实就是备份数据库在mysql中的物理存储文件.和逻辑备份相比是不具有跨平台特性的.

      

      逻辑备份
      是利用SQL语言从数据库中抽取数据并存于二进制文件的过程。就是生成.sql的过程.和物理备份相比,逻辑备份的速度是比较慢的.

       

      二进制日志文件
      作为mysql一个非常重要的日志文件,用二进制日志的方式记录数据库的更新,插入操作,主要用于数据库的增量备份.默认是没有开启的.
 
      完全备份

对数据库的所有表进行了全备份
 
      增量备份
在某一时间点后,备份某个数据库更新,插入操作.和完全备份配合,在时间上能进行更加精确的恢复.

 

备份策略的设计思路

      在进行备份策略的设计之前,我们应该明白物理备份的恢复速度要比逻辑备份和恢复是要快很多的。对于在线系统,热备份肯定是比冷备份好的.举个例:备份一个数据目录总大小5.6G,其中ibdata 2G,总时间4分钟,锁表时间2.5分钟。如果用mysqldump做这个库的备份锁表时间是5-8倍。

 

       主流的数据库备份策略

 

       1、对于较为核心的在线应用系统,比需要有在线备用主机通过MySQL 的复制进行相
应的备份,复制线程可以一直开启,恢复线程可以每天恢复一次,尽量让备机的数
据延后主机在一定的时间段之内。这个延后的时间多长合适主要是根据实际需求决
定,一般来说延后一天是一个比较常规的做法。

       2、对于重要级别稍微低一些的应用,恢复时间要求不是太高的话,为了节约硬件成本,
不必要使用在线的备份主机来单独运行备用MySQL,而是通过每一定的时间周期内
进行一次物理全备份,同时每小时(或者其他合适的时间段)内将产生的二进制日
志进行备份。这样虽然没有第一种备份方法恢复快,但是数据的丢失会比较少。恢
复所需要的时间由全备周期长短所决定。

       3、而对于恢复基本没有太多时间要求,但是不希望太多数据丢失的应用场景,则可以
通过每一定时间周期内进行一次逻辑全备份,同时也备份相应的二进制日志。使用
逻辑备份而不使用物理备份的原因是因为逻辑备份实现简单,可以完全在线联机完
成,备份过程不会影响应用提供服务.(但千万别把表锁了)

      4、对于一些搭建临时数据库的备份应用场景,则仅仅只需要通过一个逻辑全备份即可
满足需求,都不需要用二进制日志来进行恢复,因为这样的需求对数据并没有太苛
刻的要求。

     

     相对于我们游心网(www.youxin.net)前期的系统来说,数据量和访问量都不是很大的情况下,在大体方向上使用第二种方案是比较好的.而使用物理备份,我们采用xtrabackup这个开源的备份软件.

 

     下面我们来实验下xtrabackup这个软件:

 

     [完全备份]

 

    1. 完全备份

xtrabackup --defaults-file=/etc/mysql/my.cnf --backup --target-dir=/data/

cat xtrabackup_checkpoints 查看恢复信息

    

    2. 恢复完全备份
        执行两次,真不知道执行这个有什么用.iba文件不是都有了吗?就是需要把.iba文件copy过去重启mysql就行了,搞定

    (请注意:我们使用的是Innodb独享表空间,关于这个的详细介绍请看我的第二篇博客)。


    [增量备份]

 

   1.备份
   

 xtrabackup --defaults-file=/etc/mysql/my.cnf --backup --target-dir=/adddata --incremental-basedir=/data

 target-dir,生成的备份数据目录
 incremental-basedir,在完全备份上面进行的增量备份

  

   2.恢复增量备份

       

$xtrabackup --defaults-file=/etc/mysql/my.cnf --prepare --target-dir=/data

$xtrabackup --prepare --target-dir=/data --incremental-dir=/adddata   #向/data 写入 新增数据

$xtrabackup --prepare --target-dir=/data #这一步不是必须的

 

    .iba文件copy过去重启mysql就行了,搞定!

 

 

 

分享到:
评论

相关推荐

    数据库还原备份(完整设计代码)

    本资源包含一个完整的数据库还原备份的设计思路和实际的系统源代码,这对于理解并实践数据库备份策略具有极大的价值。 首先,我们要理解数据库还原备份的核心概念。数据库备份是为了防止数据丢失或损坏,将数据库中...

    《MySQL数据库应用与设计》课程总体设计方案.pdf

    课程设计思路基于MySQL数据库的广泛应用背景,强调在实际工作任务中学习和提升技能,采用“任务驱动、案例教学、精讲多练、理论实践一体化”的教学模式。 课程内容分为8个教学单元,逐步引导学生从体验数据库应用...

    C# 链接mysql数据库 出现 给定关键字不在字典中

    在C#编程中,连接MySQL数据库是常见的任务,但有时候可能会遇到一些问题,例如“给定关键字不在字典中”的错误。这个问题通常与使用的MySQL数据访问驱动(MySql.Data.dll)有关。以下是对这个错误的详细分析和解决...

    java数据库课程设计——图书馆管理系统源码,数据库备份,文档

    数据库备份是系统的重要组成部分,确保数据安全。定期备份可以防止意外数据丢失,恢复策略则能在出现问题时迅速恢复服务。这通常通过SQL脚本或专门的备份工具实现。 在系统设计上,可能采用了MVC(Model-View-...

    数据库课程设计(简单)

    6. **数据库备份与恢复**:文件名为“程序及数据库备份”提示我们课程设计可能涉及到数据库的备份和恢复策略。备份是为了防止数据丢失,可以定期或在重要操作后执行。恢复则是在系统故障或数据损坏后,利用备份恢复...

    2017最新老男孩MySQL高级专业DBA实战课程全套【清晰不加密】,看完教程月入40万没毛病

    20-如何选择MySQL数据库版本及安装方式.avi 21-MySQL5.5编译方式安装实战.avi 第二部 MySQL多实例安装与企业应用场景(10节) 22-MySQL数据库多实例介绍.avi 23-MySQL数据库多实例的优势和问题介绍.avi 24-MySQL...

    MySQL性能调优与架构设计.pdf

    如 MySQL Schema 设计的技巧,Query 语句的性能优化方式方法及MySQL Server中SQL层和存储引擎层的优化思路。同时还分析了 MySQL 数据库中主要存储引擎的锁定机制。架构设计篇则主要以设计一个高可用可扩展的分布式...

    基于MySQL数据库的会议厅管理系统方案.doc

    【基于MySQL数据库的会议厅管理系统】是一个以MySQL数据库为核心,结合JAVA编程语言开发的软件工程综合课程设计项目。该项目旨在让学生运用SQL语言、JAVA相关知识和MySQL数据库技术,设计并实现一个会议厅管理系统的...

    MySQL性能调优与架构设计(PDF)

    本书以 MySQL 数据库的基础及维护为切入点,重点介绍了 MySQL 数据库应用系统的性能调优,以及高可用可扩展的架构设计。 全书共分3 篇,基础篇介绍了MySQL软件的基础知识、架构组成、存储引擎、安全管理及基本的备份...

    优秀数据库工程师之路—MySQL数据库经验及技巧大汇总

    对于有志于成为优秀数据库工程师的读者来说,掌握MySQL数据库的相关知识和技巧是必要的。以下从提供的文件内容中提炼出的知识点。 首先,如何快速掌握MySQL呢?在学习MySQL之前,需要培养对数据库的兴趣,因为兴趣...

    数据库课程设计你应该有的思路

    6. **数据库备份与恢复**:学习如何制定备份计划,使用不同的备份类型如完整备份、差异备份和日志备份。同时,掌握恢复策略,如简单恢复模型和完整恢复模型。 7. **事务管理**:理解ACID(原子性、一致性、隔离性、...

    MYSQL数据库管理器(易语言2005年大赛三等奖)2010-10-27.rar

    《MYSQL数据库管理器》...通过分析这个项目,开发者可以深入理解易语言与MYSQL数据库的结合应用,同时了解数据库管理软件的基本设计和实现思路。对于学习易语言编程和数据库管理的初学者来说,这是一个很好的实践案例。

    大学生数据库课程设计 报告

    在报告撰写方面,学生需要清晰地阐述项目的目标、设计思路、实现过程、遇到的问题及解决方案,同时展示数据库性能测试的结果。一份优秀的报告应包含详细的数据库架构图、关键SQL语句示例和性能优化措施的解释。 总...

    14-数据库课程设计任务书-某客运公司运输管理系统数据库设计.docx

    参考文献包括《数据库系统概论》、《SQL Server 2008基础教程》、《数据库系统设计与项目实践》和《数据库系统及应用实验与课程设计指导》,这些书籍将为设计和实现提供理论和技术支持。 完成以上工作后,学生需...

    mysql数据库学习过程中的一些笔记.zip

    MySQL数据库是世界上最受欢迎的开源关系型数据库之一,广泛应用于各种规模的企业、网站和应用程序中。在学习MySQL的过程中,笔记是一个非常有效的辅助工具,可以帮助我们整理思路,加深对概念的理解。以下是一些关于...

    跟老男孩学Linux运维:MySQL入门与提高实践.txt

    着手讲解MYSQL的基础命令操作方法、备份和恢复实践、日志、字符集、常用引擎、复制等内容,接着给出读写分离、高可用性方案的企业实践,以及优化方案,帮助读者将所学知识点运用到实际工作中,最后会针对企业面试...

    数据库课程设计——物业管理系统

    数据库课程设计——物业管理系统是一项深度学习数据库管理与应用的重要实践项目。这个系统具有扁平化的图形用户界面(GUI),能够满足不同角色用户的需求,如物业管理人员、业主、租户等,提供直观且易于操作的交互...

    数据库课程设计教师管理系统

    报告文档“baogao.doc”可能包含了整个项目的设计思路、技术选型、系统架构、功能模块详解、遇到的问题及解决方案等内容。它是对学生学习成果的全面展示,也是评估项目完成情况的重要依据。 "教师管理系统.bak"可能...

Global site tag (gtag.js) - Google Analytics