备份数据的最终目的是为了在出现一些意外情况时,能够通过备份将数据还原,所以单单的备份数据往往是无法满足还原时的需求的,所以在备份数据库时,除了要备份数据本身,还要备份相关的数据库环境,如配置文件,定时任务,sudo权限等等相关的信息。

一、为什么要备份?

  1、灾难恢复:硬件故障,软件故障,自然灾害,黑客攻击,误操作

  2、测试

二、备份要注意的要点

  1、备份需要多少时间(备份过程的时长)
  2、能容忍最多丢失多少数据
  3、恢复数据需要在多场时间内完成(恢复过程的时长)
  4、需要恢复哪些数据
  (1)做还原测试,用于测试备份的可用性
  (2)还原演练

  5、备份负载

三、备份内容(备份什么?)

  1、数据

  2、二进制日志,innodb的事务日志

  3、代码(存储过程、存储函数、触发器、时间调度器)

  4、服务器的配置文件

四、备份相关术语

  1、完全备份(全量备份)(Full Backup)

  对某个时间点的所有数据进行一个完全的备份,对应时间点的所有数据都被包含在完全备份中。(备份整个数据集)

  2、部分备份

  只备份数据子集

  3、增量备份

  仅备份最近一次完全备份或增量备份(如果有增量备份)以来变化的数据

  4、差异备份

  仅备份最近一次完全备份以来变化的数据;

  5、热备

  在数据库正常运行的情况下进行备份,读写操作均可执行(往往依赖于事务日志)(难度最大)(myisam存储引擎不支持热备,Innodb存储引擎支持热备)

  6、温备

  读操作可以、写不行

  7、冷备

  读写操作均不能执行(停数据库后进行文件拷贝即可)

  8、物理备份

  直接备份数据库所对应的数据文件,与存储引擎无关(cp),相对于逻辑备份来说,性能更强

  9、逻辑备份

  从数据库中“导出”数据另存而进行备份

五、设计备份方案

  1、数据集:完全+增量+二进制日志|完全+差异+二进制日志

  2、备份手段:物理,逻辑(物理备份恢复较快,逻辑备份恢复较慢)

  对于备份较大的数据建议物理备份,对于较小的数据建议用逻辑备份。

六、备份工具的选择

  1、cp命令或tar命令

  在Linux中直接对数据文件进行备份,这种方式只适用于冷备的方式

  2、通过select语句进行部分备份

  通过select语句将表中的数据导出到指定文件中。

MariaDB [ren]> show variables like '%datadir%';
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| datadir | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.00 sec)
--注意:文件必须放在数据库的工作目录下
MariaDB [ren]> select * from test into outfile '/var/lib/mysql/test.backup';
Query OK, 6 rows affected (0.00 sec)
--查看原来的数据
MariaDB [ren]> select * from test;
+--------------+------+------+------+
| name | high | age | id |
+--------------+------+------+------+
| 刘亦菲 | 179 | 32 | 3 |
| 刘德华 | 180 | 40 | 5 |
| 毕洪态 | 177 | 26 | 2 |
| 漩涡鸣人 | NULL | NULL | NULL |
| 胡歌 | 178 | 32 | 1 |
| 谢霆锋 | 182 | 33 | 6 |
+--------------+------+------+------+
6 rows in set (0.00 sec)
--删除全部数据(或者创建一个和原表结构一样的新表)
--不可以恢复部分数据
MariaDB [ren]> delete from test where id in (1,2,3,5,6);
MariaDB [ren]> delete from test where id is null;
--使用load data恢复数据
MariaDB [ren]> load data infile "/var/lib/mysql/test.backup" into table test;Query OK, 6 rows affected (0.01 sec)
Records: 6 Deleted: 0 Skipped: 0 Warnings: 0 MariaDB [ren]> select * from test;
+--------------+------+------+------+
| name | high | age | id |
+--------------+------+------+------+
| 刘亦菲 | 179 | 32 | 3 |
| 刘德华 | 180 | 40 | 5 |
| 毕洪态 | 177 | 26 | 2 |
| 漩涡鸣人 | NULL | NULL | NULL |
| 胡歌 | 178 | 32 | 1 |
| 谢霆锋 | 182 | 33 | 6 |
+--------------+------+------+------+
6 rows in set (0.00 sec)

在使用select语句备份的同时,最好将表架构也备份一份,因为还原的时候可以用到。

  3、mysqldump+复制binlog:  

  mysqldump:完全备份(部分备份)(逻辑备份工具)
  复制binlog中指定时间范围内的event:增量备份

  mysqldump是mysql自带的备份工具,它是一种逻辑备份工具,也就是说,它会将数据从数据库中读出,转化为对应的sql语句。

  mysqldump能够实现完全备份或部分备份

  使用innodb表类型的表能够使用mysqldump进行热备

  使用myisam表类型的表只能够使用mysqldump进行温备

  如果数据量较小,可以选择使用mysqldump。

  原理:

  通过协议连接到mysql数据库,将需要备份的数据查询出来,将查询出的数据转换成对应的insert语句,还原这些数据时,只要执行这些insert语句即可将对应的数据还原。

  优点:

  可以直接使用文本处理工具处理对应的备份数据,因为备份数据已经被mysqldump转换成了对应的insert语句,所以,我们可以借助文件系统中的文本处理工具对备份数据进行直接处理。

  缺点:

  当数据为浮点类型时,会出现精度丢失

  它的备份过程属于逻辑备份,其备份速度、恢复速度与物理备份工具相比较慢,而且mysqldump备份的过程是串行化的(mydumper可并行备份),不会并行的进行备份;当数据量较大时,其效率较低

  4、lvm2快照+复制binlog:

  lvm2快照:(做快照的时候不能有任何的数据写入)(几乎热备(备份速度快))
  lvm2快照:适用cp或者tar等做物理备份:完全备份
  复制binlog中指定时间范围内的event:增量备份

  5、xtrabackup|mariabackup:

  由Percona提供的支持对InnoDB做热备(物理备份)工具(开源免费的)

  支持完全备份、差异备份、增量备份、部分备份等功能

mysql基础之数据库备份和恢复的基础知识的更多相关文章

  1. mysql基础之数据库备份和恢复实操

    一.基于二进制文件的恢复*** 1.算好要恢复数据的时间段,重定向输入到bin.sql文件中 [root@ren7 mysql]# mysqlbinlog --start-datetime=" ...

  2. mysql用mysqldump数据库备份和恢复

    备份: 用mysqldump命令把数据库被分成sql文件:(注意是在cmd里,不用进入数据库,输入之后会提示输入密码) mysqldump -hlocalhost -uroot -p testdb & ...

  3. 小型网站MYSQL问题二:Percona Xtrabackup实现数据库备份和恢复

    1.安装软件仓库(不要问我为什么不用源码安装,好吧,其实我懒.) 1 2 3 4 5 6 7 8 wget https://www.percona.com/downloads/percona-rele ...

  4. Sql Server数据库备份和恢复:原理篇

    本文与您探讨为什么Sql Server有完整备份.差异备份和事务日志备份三种备份方式,以及为什么数据库又有简单模式.完整模式和大容量日志模式这三种恢复模式.本文内容适用于2005以上所有版本的Sql ...

  5. 第五章 MySQL事务,视图,索引,备份和恢复

    第五章 MySQL事务,视图,索引,备份和恢复 一.事务 1.什么是事务 事务是一种机制,一个操作序列,它包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求.要么都执行 ...

  6. 使用exp&imp工具进行数据库备份及恢复

    使用exp&imp工具进行数据库备份及恢复1.exp/imp使用方法介绍exp/imp为一种数据库备份恢复工具,也可以作为不同数据库之间传递数据的工具,两个数据库所在的操作系统可以不同.exp ...

  7. MongoDB学习总结(六) —— 数据库备份和恢复

    我们都知道数据库数据经常备份是多么的重要,MongoDB作为一个数据库系统,自然提供了完善,丰富而且好用的备份与恢复机制. 以下介绍三种数据库备份和恢复的方式 > 数据目录直接拷贝 数据库目录直 ...

  8. asp.net针对SQLSERVER数据库备份和恢复的一揽子问题解决

    一.备份 先备份到服务端,用gridview显示出来,点击可以下载到本地 二.恢复 这是很麻烦的事情,本人查阅不少资料,耗费不少时间才搞定. 直接恢复数据库时不行的,会提示数据库正在使用,恢复失败等信 ...

  9. C#可定制的数据库备份和恢复程序 (讲解流程)

    可定制的数据库备份和恢复程序 tashanzhishi [原作] 关键字 数据库 备份 恢复 出处 在我们做数据库系统的程序时,经常需要为客户做一个数据库的备份和恢复程序,特别是对于一些非专业的数据库 ...

随机推荐

  1. 【2.0 递归 Recursion 01】

    [介绍] Java的一个方法可以调用它自己,Java和所有编程语言都可以支持这种情况,我们把它叫做递归Recursion 递归方法是一种调用自身的方法 那么使用递归方法是是怎么样的呢,让我们看看下面这 ...

  2. BUAA_2021_SE_READING_#2

    项目 内容 这个作业属于哪个课程 2021春季软件工程(罗杰 任健) 这个作业的要求在哪里 个人阅读作业#2 我在这个课程的目标是 通过课程学习,完成第一个可以称之为"软件"的项目 ...

  3. PAT A1052 Linked List Sorting

    题意:给出N个结点的地址address.数据域data以及指针域next,然后给出链表的首地址,要求把在这个链表上的结点按data值从小到大输出.样例解释:按照输入,这条链表是这样的(结点格式为[ad ...

  4. 「Spring Boot 2.4 新特性」一键构建Docker镜像

    背景 在我们开发过程中为了支持 Docker 容器化,一般使用 Maven 编译打包然后生成镜像,能够大大提供上线效率,同时能够快速动态扩容,快速回滚,着实很方便.docker-maven-plugi ...

  5. JMeter自定义采样器插件开发

    JMeter自定义采样器插件开发 目录 JMeter自定义采样器插件开发 1. 简介 2. 需求简介 3.成品展示 成功展示 失败展示 4. 准备开发环境 4.1 准备pom文件 4.2 新建Java ...

  6. 人生第一个扩展——Github1s

    1 灵感 某天看到了一个叫github1s的仓库: 基于Node.JS.Yarn.Python等技术栈,在github.com上面加上"一秒",也就是github1s.com,就能 ...

  7. Go-22-方法

    方法 Go语言同时有函数和方法,方法的本质是函数,但是方法和函数又有所不同. 函数(function)是一段具有独立功能的代码,可以被反复多次调用,从而实现代码复用. 方法(method)是一个类的行 ...

  8. 《C++编程思想》部分章节学习笔记整理

    简介 此笔记为<C++编程思想>中部分章节的学习笔记,主要是第15章--多态性和虚函数 的学习笔记,此外还有少量其他章节的内容. 目录 文档:<C++编程思想>

  9. java面试一日一题:讲下在什么情况下会发生类加载

    问题:请讲下在什么情况下会发生类加载? 分析:该问题主要考察对java中类加载的知识,什么是类加载,为什么会发生类加载,什么情况下发生类加载? 回答要点: 主要从以下几点去考虑 1.什么是类加载: 2 ...

  10. 05.ElementUI源码学习:项目发布配置(github pages&npm package)

    0x00.前言 书接上文.项目第一个组件已经封装好,说明文档也已编写好.下面需要将说明文档发布到外网上,以此来展示和推广项目,使用 Github Pages功能实现.同时将组件发布之 npm 上,方便 ...